/[lmdze]/trunk/phylmd/calltherm.f
ViewVC logotype

Diff of /trunk/phylmd/calltherm.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/libf/phylmd/calltherm.f90 revision 54 by guez, Tue Dec 6 15:07:04 2011 UTC trunk/Sources/phylmd/calltherm.f revision 208 by guez, Wed Dec 7 16:44:53 2016 UTC
# Line 8  contains Line 8  contains
8         q_seri, d_u_ajs, d_v_ajs, d_t_ajs, d_q_ajs, fm_therm, entr_therm)         q_seri, d_u_ajs, d_v_ajs, d_t_ajs, d_q_ajs, fm_therm, entr_therm)
9    
10      ! From LMDZ4/libf/phylmd/calltherm.F, version 1.2 2004/12/10 11:27:46      ! From LMDZ4/libf/phylmd/calltherm.F, version 1.2 2004/12/10 11:27:46
11        ! Thermiques
12    
13      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
14      USE ctherm, ONLY: l_mix_thermals, nsplit_thermals, r_aspect_thermals, &      USE ctherm, ONLY: l_mix_thermals, nsplit_thermals, r_aspect_thermals, &
# Line 15  contains Line 16  contains
16      use thermcell_m, only: thermcell      use thermcell_m, only: thermcell
17    
18      REAL, intent(in):: dtime      REAL, intent(in):: dtime
   
     REAL u_seri(klon, klev), v_seri(klon, klev)  
     REAL, intent(inout):: t_seri(klon, klev)  
     real q_seri(klon, klev)  
     REAL, intent(in):: paprs(klon, klev+1)  
19      REAL, intent(in):: pplay(klon, klev)      REAL, intent(in):: pplay(klon, klev)
20        REAL, intent(in):: paprs(klon, klev+1)
21      REAL, intent(in):: pphi(klon, klev)      REAL, intent(in):: pphi(klon, klev)
22        REAL, intent(inout):: u_seri(klon, klev), v_seri(klon, klev)
23        REAL, intent(inout):: t_seri(klon, klev)
24        real, intent(inout):: q_seri(klon, klev)
25    
26      ! Update thermiques      ! Update thermiques
     REAL d_t_ajs(klon, klev), d_q_ajs(klon, klev)  
27      REAL d_u_ajs(klon, klev), d_v_ajs(klon, klev)      REAL d_u_ajs(klon, klev), d_v_ajs(klon, klev)
28        REAL d_t_ajs(klon, klev), d_q_ajs(klon, klev)
29      real fm_therm(klon, klev+1), entr_therm(klon, klev)      real fm_therm(klon, klev+1), entr_therm(klon, klev)
30    
31      ! Variables locales      ! Local:
32    
33      REAL d_t_the(klon, klev), d_q_the(klon, klev)      REAL d_t_the(klon, klev), d_q_the(klon, klev)
34      REAL d_u_the(klon, klev), d_v_the(klon, klev)      REAL d_u_the(klon, klev), d_v_the(klon, klev)
35      !  
36      real, save:: zfm_therm(klon, klev+1), zentr_therm(klon, klev)      real, save:: zfm_therm(klon, klev+1), zentr_therm(klon, klev)
37      real zdt      real zdt
38    
# Line 48  contains Line 49  contains
49      ! tests sur les valeurs negatives de l'eau      ! tests sur les valeurs negatives de l'eau
50      do k=1, klev      do k=1, klev
51         do i=1, klon         do i=1, klon
52            if (.not.q_seri(i, k).ge.0.) then            if (.not.q_seri(i, k) >= 0.) then
53               print*, 'WARN eau<0 avant therm i=', i, ' k=', k, ' dq, q', &               print*, 'WARN eau<0 avant therm i=', i, ' k=', k, ' dq, q', &
54                    d_q_the(i, k), q_seri(i, k)                    d_q_the(i, k), q_seri(i, k)
55               q_seri(i, k)=1.e-15               q_seri(i, k)=1.e-15
# Line 56  contains Line 57  contains
57         enddo         enddo
58      enddo      enddo
59    
60      zdt=dtime/float(nsplit_thermals)      zdt=dtime/real(nsplit_thermals)
61      do isplit = 1, nsplit_thermals      do isplit = 1, nsplit_thermals
62         CALL thermcell(klon, klev, zdt, pplay, paprs, pphi, u_seri, v_seri, &         CALL thermcell(klon, klev, zdt, pplay, paprs, pphi, u_seri, v_seri, &
63              t_seri, q_seri, d_u_the, d_v_the, d_t_the, d_q_the, zfm_therm, &              t_seri, q_seri, d_u_the, d_v_the, d_t_the, d_q_the, zfm_therm, &
# Line 64  contains Line 65  contains
65              tho_thermals)              tho_thermals)
66    
67         ! transformation de la derivee en tendance         ! transformation de la derivee en tendance
68         d_t_the=d_t_the*dtime/float(nsplit_thermals)         d_t_the=d_t_the*dtime/real(nsplit_thermals)
69         d_u_the=d_u_the*dtime/float(nsplit_thermals)         d_u_the=d_u_the*dtime/real(nsplit_thermals)
70         d_v_the=d_v_the*dtime/float(nsplit_thermals)         d_v_the=d_v_the*dtime/real(nsplit_thermals)
71         d_q_the=d_q_the*dtime/float(nsplit_thermals)         d_q_the=d_q_the*dtime/real(nsplit_thermals)
72         fm_therm=fm_therm +zfm_therm/float(nsplit_thermals)         fm_therm=fm_therm +zfm_therm/real(nsplit_thermals)
73         entr_therm=entr_therm +zentr_therm/float(nsplit_thermals)         entr_therm=entr_therm +zentr_therm/real(nsplit_thermals)
74         fm_therm(:, klev+1)=0.         fm_therm(:, klev+1)=0.
75    
76         ! accumulation de la tendance         ! accumulation de la tendance
# Line 87  contains Line 88  contains
88         ! tests sur les valeurs negatives de l'eau         ! tests sur les valeurs negatives de l'eau
89         DO k = 1, klev         DO k = 1, klev
90            DO i = 1, klon            DO i = 1, klon
91               if (.not.q_seri(i, k).ge.0.) then               if (.not.q_seri(i, k) >= 0.) then
92                  print*, 'WARN eau<0 apres therm i=', i, ' k=', k, ' dq, q', &                  print*, 'WARN eau<0 apres therm i=', i, ' k=', k, ' dq, q', &
93                       d_q_the(i, k), q_seri(i, k)                       d_q_the(i, k), q_seri(i, k)
94                  q_seri(i, k)=1.e-15                  q_seri(i, k)=1.e-15

Legend:
Removed from v.54  
changed lines
  Added in v.208

  ViewVC Help
Powered by ViewVC 1.1.21