/[lmdze]/trunk/Sources/phylmd/CV30_routines/cv30_yield.f
ViewVC logotype

Diff of /trunk/Sources/phylmd/CV30_routines/cv30_yield.f

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

revision 189 by guez, Tue Mar 29 15:20:23 2016 UTC revision 201 by guez, Mon Jun 6 17:42:15 2016 UTC
# Line 5  module cv30_yield_m Line 5  module cv30_yield_m
5  contains  contains
6    
7    SUBROUTINE cv30_yield(icb, inb, delt, t, rr, u, v, gz, p, ph, h, hp, lv, &    SUBROUTINE cv30_yield(icb, inb, delt, t, rr, u, v, gz, p, ph, h, hp, lv, &
8         cpn, th, ep, clw, m, tp, mp, rp, up, vp, wt, water, evap, b, ment, &         cpn, th, ep, clw, m, tp, mp, qp, up, vp, wt, water, evap, b, ment, &
9         qent, uent, vent, nent, elij, sig, tv, tvp, iflag, precip, VPrecip, &         qent, uent, vent, nent, elij, sig, tv, tvp, iflag, precip, VPrecip, &
10         ft, fr, fu, fv, upwd, dnwd, dnwd0, ma, mike, tls, tps, qcondc)         ft, fr, fu, fv, upwd, dnwd, dnwd0, ma, mike, tls, tps, qcondc)
11    
12        ! Tendencies, precipitation, variables of interface with other
13        ! processes, etc.
14    
15      use conema3_m, only: iflag_clw      use conema3_m, only: iflag_clw
16      use cv30_param_m, only: delta, minorig, nl, sigd      use cv30_param_m, only: minorig, nl, sigd
17      use cvthermo, only: cl, cpd, cpv, grav, rowl, rrd, rrv      use cv_thermo_m, only: rowl
18      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
19        use SUPHEC_M, only: rg, rcpd, rcw, rcpv, rd, rv
20    
21      ! inputs:      ! inputs:
22      integer, intent(in):: icb(:), inb(:) ! (ncum)  
23        integer, intent(in):: icb(:)
24    
25        integer, intent(in):: inb(:) ! (ncum)
26        ! first model level above the level of neutral buoyancy of the
27        ! parcel (1 <= inb <= nl - 1)
28    
29      real, intent(in):: delt      real, intent(in):: delt
30      real t(klon, klev), rr(klon, klev), u(klon, klev), v(klon, klev)      real, intent(in):: t(klon, klev), rr(klon, klev)
31        real, intent(in):: u(klon, klev), v(klon, klev)
32      real gz(klon, klev)      real gz(klon, klev)
33      real p(klon, klev)      real p(klon, klev)
34      real ph(klon, klev + 1), h(klon, klev), hp(klon, klev)      real ph(klon, klev + 1), h(klon, klev), hp(klon, klev)
35      real lv(klon, klev), cpn(klon, klev)      real, intent(in):: lv(:, :) ! (klon, klev)
36      real th(klon, klev)  
37        real, intent(in):: cpn(:, :) ! (ncum, nl)
38        ! specific heat capacity at constant pressure of humid air, in J K-1 kg-1
39    
40        real, intent(in):: th(:, :) ! (ncum, nl)
41      real ep(klon, klev), clw(klon, klev)      real ep(klon, klev), clw(klon, klev)
42      real m(klon, klev)      real m(klon, klev)
43      real tp(klon, klev)      real tp(klon, klev)
44      real mp(klon, klev), rp(klon, klev), up(klon, klev)      real, intent(in):: mp(:, :) ! (ncum, nl)
45      real vp(klon, klev), wt(klon, klev)      real, intent(in):: qp(:, :), up(:, :) ! (klon, klev)
46        real, intent(in):: vp(:, 2:) ! (ncum, 2:nl)
47        real, intent(in):: wt(:, :) ! (ncum, nl - 1)
48      real, intent(in):: water(:, :), evap(:, :) ! (ncum, nl)      real, intent(in):: water(:, :), evap(:, :) ! (ncum, nl)
49      real, intent(in):: b(:, :) ! (ncum, nl - 1)      real, intent(in):: b(:, :) ! (ncum, nl - 1)
50      real ment(klon, klev, klev), qent(klon, klev, klev), uent(klon, klev, klev)      real ment(klon, klev, klev), qent(klon, klev, klev), uent(klon, klev, klev)
# Line 37  contains Line 54  contains
54      real sig(klon, klev)      real sig(klon, klev)
55      real tv(klon, klev), tvp(klon, klev)      real tv(klon, klev), tvp(klon, klev)
56    
     ! input / output:  
     integer iflag(klon)  
   
57      ! outputs:      ! outputs:
58        integer, intent(out):: iflag(:) ! (ncum)
59      real precip(klon)      real precip(klon)
60      real VPrecip(klon, klev + 1)      real VPrecip(klon, klev + 1)
61      real ft(klon, klev), fr(klon, klev), fu(klon, klev), fv(klon, klev)      real ft(klon, klev), fr(klon, klev), fu(klon, klev), fv(klon, klev)
# Line 52  contains Line 67  contains
67      real qcondc(klon, klev)      real qcondc(klon, klev)
68    
69      ! Local:      ! Local:
70        real, parameter:: delta = 0.01 ! interface cloud parameterization
71      integer ncum      integer ncum
72      integer i, k, il, n, j, num1      integer i, k, il, n, j
73      real rat, awat, delti      real awat, delti
74      real ax, bx, cx, dx      real ax, bx, cx, dx
75      real cpinv, rdcp, dpinv      real cpinv, rdcp, dpinv
76      real lvcp(klon, klev)      real lvcp(klon, klev)
# Line 67  contains Line 83  contains
83      !-------------------------------------------------------------      !-------------------------------------------------------------
84    
85      ncum = size(icb)      ncum = size(icb)
86        iflag = 0
87    
88      ! initialization:      ! initialization:
89    
# Line 96  contains Line 113  contains
113         enddo         enddo
114      enddo      enddo
115    
116      ! calculate surface precipitation in mm / day      ! calculate surface precipitation in mm / day
117    
118      do il = 1, ncum      do il = 1, ncum
119         if (ep(il, inb(il)) >= 1e-4) precip(il) = wt(il, 1) * sigd &         if (ep(il, inb(il)) >= 1e-4) precip(il) = wt(il, 1) * sigd &
120              * water(il, 1) * 86400. * 1000. / (rowl * grav)              * water(il, 1) * 86400. * 1000. / (rowl * rg)
121      enddo      enddo
122    
123      ! CALCULATE VERTICAL PROFILE OF PRECIPITATIONs IN kg / m2 / s ===      ! CALCULATE VERTICAL PROFILE OF PRECIPITATIONs IN kg / m2 / s ===
# Line 109  contains Line 126  contains
126      do k = 1, nl - 1      do k = 1, nl - 1
127         do il = 1, ncum         do il = 1, ncum
128            if (k <= inb(il)) VPrecip(il, k) = wt(il, k) * sigd * water(il, k) &            if (k <= inb(il)) VPrecip(il, k) = wt(il, k) * sigd * water(il, k) &
129                 / grav                 / rg
130         end do         end do
131      end do      end do
132    
133      ! calculate tendencies of lowest level potential temperature      ! calculate tendencies of lowest level potential temperature
134      ! and mixing ratio      ! and mixing ratio
135    
136      do il = 1, ncum      do il = 1, ncum
137         work(il) = 1.0 / (ph(il, 1) - ph(il, 2))         work(il) = 1.0 / (ph(il, 1) - ph(il, 2))
# Line 128  contains Line 145  contains
145      enddo      enddo
146    
147      do il = 1, ncum      do il = 1, ncum
148         ! Consist vect:         if (0.01 * rg * work(il) * am(il) >= delti) iflag(il) = 1
        if (0.01 * grav * work(il) * am(il) >= delti) iflag(il) = 1  
   
        ft(il, 1) = 0.01 * grav * work(il) * am(il) * (t(il, 2) - t(il, 1) &  
             + (gz(il, 2) - gz(il, 1)) / cpn(il, 1))  
149    
150         ft(il, 1) = ft(il, 1) - 0.5 * lvcp(il, 1) * sigd * (evap(il, 1) &         ft(il, 1) = 0.01 * rg * work(il) * am(il) * (t(il, 2) - t(il, 1) &
151              + evap(il, 2))              + (gz(il, 2) - gz(il, 1)) / cpn(il, 1)) - 0.5 * lvcp(il, 1) &
152                * sigd * (evap(il, 1) + evap(il, 2)) - 0.009 * rg * sigd &
153         ft(il, 1) = ft(il, 1) - 0.009 * grav * sigd * mp(il, 2) &              * mp(il, 2) * t(il, 1) * b(il, 1) * work(il) + 0.01 * sigd &
154              * t(il, 1) * b(il, 1) * work(il)              * wt(il, 1) * (rcw - rcpd) * water(il, 2) * (t(il, 2) - t(il, 1)) &
155                * work(il) / cpn(il, 1)
        ft(il, 1) = ft(il, 1) + 0.01 * sigd * wt(il, 1) * (cl - cpd) &  
             * water(il, 2) * (t(il, 2) - t(il, 1)) * work(il) / cpn(il, 1)  
156    
157         !jyg1 Correction pour mieux conserver l'eau (conformite avec CONVECT4.3)         !jyg1 Correction pour mieux conserver l'eau (conformite avec CONVECT4.3)
158         ! (sb: pour l'instant, on ne fait que le chgt concernant grav, pas evap)         ! (sb: pour l'instant, on ne fait que le chgt concernant rg, pas evap)
159         fr(il, 1) = 0.01 * grav * mp(il, 2) * (rp(il, 2) - rr(il, 1)) &         fr(il, 1) = 0.01 * rg * mp(il, 2) * (qp(il, 2) - rr(il, 1)) &
160              * work(il) + sigd * 0.5 * (evap(il, 1) + evap(il, 2))              * work(il) + sigd * 0.5 * (evap(il, 1) + evap(il, 2))
161         ! + tard : + sigd * evap(il, 1)         ! + tard : + sigd * evap(il, 1)
162    
163         fr(il, 1) = fr(il, 1) + 0.01 * grav * am(il) * (rr(il, 2) - rr(il, 1)) &         fr(il, 1) = fr(il, 1) + 0.01 * rg * am(il) * (rr(il, 2) - rr(il, 1)) &
164              * work(il)              * work(il)
165    
166         fu(il, 1) = fu(il, 1) + 0.01 * grav * work(il) * (mp(il, 2) &         fu(il, 1) = fu(il, 1) + 0.01 * rg * work(il) * (mp(il, 2) &
167              * (up(il, 2) - u(il, 1)) + am(il) * (u(il, 2) - u(il, 1)))              * (up(il, 2) - u(il, 1)) + am(il) * (u(il, 2) - u(il, 1)))
168         fv(il, 1) = fv(il, 1) + 0.01 * grav * work(il) * (mp(il, 2) &         fv(il, 1) = fv(il, 1) + 0.01 * rg * work(il) * (mp(il, 2) &
169              * (vp(il, 2) - v(il, 1)) + am(il) * (v(il, 2) - v(il, 1)))              * (vp(il, 2) - v(il, 1)) + am(il) * (v(il, 2) - v(il, 1)))
170      enddo ! il      enddo
171    
172      do j = 2, nl      do j = 2, nl
173         do il = 1, ncum         do il = 1, ncum
174            if (j <= inb(il)) then            if (j <= inb(il)) then
175               fr(il, 1) = fr(il, 1) + 0.01 * grav * work(il) * ment(il, j, 1) &               fr(il, 1) = fr(il, 1) + 0.01 * rg * work(il) * ment(il, j, 1) &
176                    * (qent(il, j, 1) - rr(il, 1))                    * (qent(il, j, 1) - rr(il, 1))
177               fu(il, 1) = fu(il, 1) + 0.01 * grav * work(il) * ment(il, j, 1) &               fu(il, 1) = fu(il, 1) + 0.01 * rg * work(il) * ment(il, j, 1) &
178                    * (uent(il, j, 1) - u(il, 1))                    * (uent(il, j, 1) - u(il, 1))
179               fv(il, 1) = fv(il, 1) + 0.01 * grav * work(il) * ment(il, j, 1) &               fv(il, 1) = fv(il, 1) + 0.01 * rg * work(il) * ment(il, j, 1) &
180                    * (vent(il, j, 1) - v(il, 1))                    * (vent(il, j, 1) - v(il, 1))
181            endif            endif
182         enddo         enddo
183      enddo      enddo
184    
185      ! calculate tendencies of potential temperature and mixing ratio      ! calculate tendencies of potential temperature and mixing ratio
186      ! at levels above the lowest level      ! at levels above the lowest level
187    
188      ! first find the net saturated updraft and downdraft mass fluxes      ! first find the net saturated updraft and downdraft mass fluxes
189      ! through each level      ! through each level
190    
191      loop_i: do i = 2, nl - 1      loop_i: do i = 2, nl - 1
192         num1 = 0         if (any(inb >= i)) then
   
        do il = 1, ncum  
           if (i <= inb(il)) num1 = num1 + 1  
        enddo  
   
        if (num1 > 0) then  
193            amp1(:ncum) = 0.            amp1(:ncum) = 0.
194            ad(:ncum) = 0.            ad(:ncum) = 0.
195    
# Line 221  contains Line 226  contains
226                  dpinv = 1.0 / (ph(il, i) - ph(il, i + 1))                  dpinv = 1.0 / (ph(il, i) - ph(il, i + 1))
227                  cpinv = 1.0 / cpn(il, i)                  cpinv = 1.0 / cpn(il, i)
228    
229                  ! Vecto:                  if (0.01 * rg * dpinv * amp1(il) >= delti) iflag(il) = 1
                 if (0.01 * grav * dpinv * amp1(il) >= delti) iflag(il) = 1  
230    
231                  ft(il, i) = 0.01 * grav * dpinv * (amp1(il) * (t(il, i + 1) &                  ft(il, i) = 0.01 * rg * dpinv * (amp1(il) * (t(il, i + 1) &
232                       - t(il, i) + (gz(il, i + 1) - gz(il, i)) * cpinv) &                       - t(il, i) + (gz(il, i + 1) - gz(il, i)) * cpinv) &
233                       - ad(il) * (t(il, i) - t(il, i - 1) + (gz(il, i) &                       - ad(il) * (t(il, i) - t(il, i - 1) + (gz(il, i) &
234                       - gz(il, i - 1)) * cpinv)) - 0.5 * sigd * lvcp(il, i) &                       - gz(il, i - 1)) * cpinv)) - 0.5 * sigd * lvcp(il, i) &
235                       * (evap(il, i) + evap(il, i + 1))                       * (evap(il, i) + evap(il, i + 1)) - 0.009 * rg * sigd &
236                  rat = cpn(il, i - 1) * cpinv                       * (mp(il, i + 1) * t(il, i) * b(il, i) - mp(il, i) &
237                  ft(il, i) = ft(il, i) - 0.009 * grav * sigd * (mp(il, i + 1) &                       * t(il, i - 1) * cpn(il, i - 1) * cpinv * b(il, i - 1)) &
238                       * t(il, i) * b(il, i) - mp(il, i) * t(il, i - 1) * rat &                       * dpinv + 0.01 * rg * dpinv * ment(il, i, i) &
239                       * b(il, i - 1)) * dpinv                       * (hp(il, i) - h(il, i) + t(il, i) * (rcpv - rcpd) &
240                  ft(il, i) = ft(il, i) + 0.01 * grav * dpinv * ment(il, i, i) &                       * (rr(il, i) - qent(il, i, i))) * cpinv + 0.01 * sigd &
241                       * (hp(il, i) - h(il, i) + t(il, i) * (cpv - cpd) &                       * wt(il, i) * (rcw - rcpd) * water(il, i + 1) &
242                       * (rr(il, i) - qent(il, i, i))) * cpinv                       * (t(il, i + 1) - t(il, i)) * dpinv * cpinv
243                    fr(il, i) = 0.01 * rg * dpinv * (amp1(il) * (rr(il, i + 1) &
                 ft(il, i) = ft(il, i) + 0.01 * sigd * wt(il, i) * (cl - cpd) &  
                      * water(il, i + 1) * (t(il, i + 1) - t(il, i)) * dpinv &  
                      * cpinv  
   
                 fr(il, i) = 0.01 * grav * dpinv * (amp1(il) * (rr(il, i + 1) &  
244                       - rr(il, i)) - ad(il) * (rr(il, i) - rr(il, i - 1)))                       - rr(il, i)) - ad(il) * (rr(il, i) - rr(il, i - 1)))
245                  fu(il, i) = fu(il, i) + 0.01 * grav * dpinv * (amp1(il) &                  fu(il, i) = fu(il, i) + 0.01 * rg * dpinv * (amp1(il) &
246                       * (u(il, i + 1) - u(il, i)) - ad(il) * (u(il, i) &                       * (u(il, i + 1) - u(il, i)) - ad(il) * (u(il, i) &
247                       - u(il, i - 1)))                       - u(il, i - 1)))
248                  fv(il, i) = fv(il, i) + 0.01 * grav * dpinv * (amp1(il) &                  fv(il, i) = fv(il, i) + 0.01 * rg * dpinv * (amp1(il) &
249                       * (v(il, i + 1) - v(il, i)) - ad(il) * (v(il, i) &                       * (v(il, i + 1) - v(il, i)) - ad(il) * (v(il, i) &
250                       - v(il, i - 1)))                       - v(il, i - 1)))
251               endif               endif
# Line 261  contains Line 260  contains
260                     awat = elij(il, k, i) - (1. - ep(il, i)) * clw(il, i)                     awat = elij(il, k, i) - (1. - ep(il, i)) * clw(il, i)
261                     awat = amax1(awat, 0.0)                     awat = amax1(awat, 0.0)
262    
263                     fr(il, i) = fr(il, i) + 0.01 * grav * dpinv &                     fr(il, i) = fr(il, i) + 0.01 * rg * dpinv &
264                          * ment(il, k, i) * (qent(il, k, i) - awat - rr(il, i))                          * ment(il, k, i) * (qent(il, k, i) - awat - rr(il, i))
265                     fu(il, i) = fu(il, i) + 0.01 * grav * dpinv &                     fu(il, i) = fu(il, i) + 0.01 * rg * dpinv &
266                          * ment(il, k, i) * (uent(il, k, i) - u(il, i))                          * ment(il, k, i) * (uent(il, k, i) - u(il, i))
267                     fv(il, i) = fv(il, i) + 0.01 * grav * dpinv &                     fv(il, i) = fv(il, i) + 0.01 * rg * dpinv &
268                          * ment(il, k, i) * (vent(il, k, i) - v(il, i))                          * ment(il, k, i) * (vent(il, k, i) - v(il, i))
269    
270                     ! (saturated updrafts resulting from mixing)                     ! (saturated updrafts resulting from mixing)
# Line 281  contains Line 280  contains
280                     dpinv = 1.0 / (ph(il, i) - ph(il, i + 1))                     dpinv = 1.0 / (ph(il, i) - ph(il, i + 1))
281                     cpinv = 1.0 / cpn(il, i)                     cpinv = 1.0 / cpn(il, i)
282    
283                     fr(il, i) = fr(il, i) + 0.01 * grav * dpinv &                     fr(il, i) = fr(il, i) + 0.01 * rg * dpinv &
284                          * ment(il, k, i) * (qent(il, k, i) - rr(il, i))                          * ment(il, k, i) * (qent(il, k, i) - rr(il, i))
285                     fu(il, i) = fu(il, i) + 0.01 * grav * dpinv &                     fu(il, i) = fu(il, i) + 0.01 * rg * dpinv &
286                          * ment(il, k, i) * (uent(il, k, i) - u(il, i))                          * ment(il, k, i) * (uent(il, k, i) - u(il, i))
287                     fv(il, i) = fv(il, i) + 0.01 * grav * dpinv &                     fv(il, i) = fv(il, i) + 0.01 * rg * dpinv &
288                          * ment(il, k, i) * (vent(il, k, i) - v(il, i))                          * ment(il, k, i) * (vent(il, k, i) - v(il, i))
289                  endif                  endif
290               end do               end do
# Line 299  contains Line 298  contains
298                  ! sb: on ne fait pas encore la correction permettant de mieux                  ! sb: on ne fait pas encore la correction permettant de mieux
299                  ! conserver l'eau:                  ! conserver l'eau:
300                  fr(il, i) = fr(il, i) + 0.5 * sigd * (evap(il, i) &                  fr(il, i) = fr(il, i) + 0.5 * sigd * (evap(il, i) &
301                       + evap(il, i + 1)) + 0.01 * grav * (mp(il, i + 1) &                       + evap(il, i + 1)) + 0.01 * rg * (mp(il, i + 1) &
302                       * (rp(il, i + 1) - rr(il, i)) - mp(il, i) * (rp(il, i) &                       * (qp(il, i + 1) - rr(il, i)) - mp(il, i) * (qp(il, i) &
303                       - rr(il, i - 1))) * dpinv                       - rr(il, i - 1))) * dpinv
304    
305                  fu(il, i) = fu(il, i) + 0.01 * grav * (mp(il, i + 1) &                  fu(il, i) = fu(il, i) + 0.01 * rg * (mp(il, i + 1) &
306                       * (up(il, i + 1) - u(il, i)) - mp(il, i) * (up(il, i) &                       * (up(il, i + 1) - u(il, i)) - mp(il, i) * (up(il, i) &
307                       - u(il, i - 1))) * dpinv                       - u(il, i - 1))) * dpinv
308                  fv(il, i) = fv(il, i) + 0.01 * grav * (mp(il, i + 1) &                  fv(il, i) = fv(il, i) + 0.01 * rg * (mp(il, i + 1) &
309                       * (vp(il, i + 1) - v(il, i)) - mp(il, i) * (vp(il, i) &                       * (vp(il, i + 1) - v(il, i)) - mp(il, i) * (vp(il, i) &
310                       - v(il, i - 1))) * dpinv                       - v(il, i - 1))) * dpinv
311               endif               endif
# Line 340  contains Line 339  contains
339         end if         end if
340      end do loop_i      end do loop_i
341    
342      ! move the detrainment at level inb down to level inb - 1      ! move the detrainment at level inb down to level inb - 1
343      ! in such a way as to preserve the vertically      ! in such a way as to preserve the vertically
344      ! integrated enthalpy and water tendencies      ! integrated enthalpy and water tendencies
345    
346      do il = 1, ncum      do il = 1, ncum
347         ax = 0.1 * ment(il, inb(il), inb(il)) * (hp(il, inb(il)) &         ax = 0.1 * ment(il, inb(il), inb(il)) * (hp(il, inb(il)) &
348              - h(il, inb(il)) + t(il, inb(il)) * (cpv - cpd) &              - h(il, inb(il)) + t(il, inb(il)) * (rcpv - rcpd) &
349              * (rr(il, inb(il)) - qent(il, inb(il), inb(il)))) &              * (rr(il, inb(il)) - qent(il, inb(il), inb(il)))) &
350              / (cpn(il, inb(il)) * (ph(il, inb(il)) - ph(il, inb(il) + 1)))              / (cpn(il, inb(il)) * (ph(il, inb(il)) - ph(il, inb(il) + 1)))
351         ft(il, inb(il)) = ft(il, inb(il)) - ax         ft(il, inb(il)) = ft(il, inb(il)) - ax
# Line 377  contains Line 376  contains
376    
377      end do      end do
378    
379      ! homoginize tendencies below cloud base      ! homoginize tendencies below cloud base
380    
381      do il = 1, ncum      do il = 1, ncum
382         asum(il) = 0.0         asum(il) = 0.0
# Line 390  contains Line 389  contains
389         do il = 1, ncum         do il = 1, ncum
390            if (i <= (icb(il) - 1)) then            if (i <= (icb(il) - 1)) then
391               asum(il) = asum(il) + ft(il, i) * (ph(il, i) - ph(il, i + 1))               asum(il) = asum(il) + ft(il, i) * (ph(il, i) - ph(il, i + 1))
392               bsum(il) = bsum(il) + fr(il, i) * (lv(il, i) + (cl - cpd) &               bsum(il) = bsum(il) + fr(il, i) * (lv(il, i) + (rcw - rcpd) &
393                    * (t(il, i) - t(il, 1))) * (ph(il, i) - ph(il, i + 1))                    * (t(il, i) - t(il, 1))) * (ph(il, i) - ph(il, i + 1))
394               csum(il) = csum(il) + (lv(il, i) + (cl - cpd) * (t(il, i) &               csum(il) = csum(il) + (lv(il, i) + (rcw - rcpd) * (t(il, i) &
395                    - t(il, 1))) * (ph(il, i) - ph(il, i + 1))                    - t(il, 1))) * (ph(il, i) - ph(il, i + 1))
396               dsum(il) = dsum(il) + t(il, i) * (ph(il, i) - ph(il, i + 1)) &               dsum(il) = dsum(il) + t(il, i) * (ph(il, i) - ph(il, i + 1)) &
397                    / th(il, i)                    / th(il, i)
# Line 409  contains Line 408  contains
408         enddo         enddo
409      enddo      enddo
410    
411      ! reset counter and return      ! reset counter and return
412    
413      do il = 1, ncum      do il = 1, ncum
414         sig(il, klev) = 2.0         sig(il, klev) = 2.0
# Line 475  contains Line 474  contains
474         enddo         enddo
475      enddo      enddo
476    
477      !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc      ! D\'etermination de la variation de flux ascendant entre
478      ! determination de la variation de flux ascendant entre      ! deux niveaux non dilu\'es mike
     ! deux niveau non dilue mike  
     !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc  
479    
480      do i = 1, nl      do i = 1, nl
481         do il = 1, ncum         do il = 1, ncum
# Line 520  contains Line 517  contains
517         enddo         enddo
518      enddo      enddo
519    
520      !cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc      ! icb repr\'esente le niveau o\`u se trouve la base du nuage, et
521      ! icb represente de niveau ou se trouve la      ! inb le sommet du nuage
     ! base du nuage, et inb le top du nuage  
     !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc  
522    
523      do i = 1, klev      do i = 1, klev
524         DO il = 1, ncum         DO il = 1, ncum
525            rdcp = (rrd * (1. - rr(il, i)) - rr(il, i) * rrv) &            rdcp = (rd * (1. - rr(il, i)) - rr(il, i) * rv) &
526                 / (cpd * (1. - rr(il, i)) + rr(il, i) * cpv)                 / (rcpd * (1. - rr(il, i)) + rr(il, i) * rcpv)
527            tls(il, i) = t(il, i) * (1000.0 / p(il, i))**rdcp            tls(il, i) = t(il, i) * (1000.0 / p(il, i))**rdcp
528            tps(il, i) = tp(il, i)            tps(il, i) = tp(il, i)
529         end DO         end DO
530      enddo      enddo
531    
532      ! diagnose the in-cloud mixing ratio      ! Diagnose the in-cloud mixing ratio of condensed water
     ! of condensed water  
     !  
533    
534      do i = 1, klev      do i = 1, klev
535         do il = 1, ncum         do il = 1, ncum
# Line 562  contains Line 555  contains
555            do il = 1, ncum            do il = 1, ncum
556               if (i >= icb(il) .and. i <= (inb(il) - 1) &               if (i >= icb(il) .and. i <= (inb(il) - 1) &
557                    .and. j >= icb(il)) then                    .and. j >= icb(il)) then
558                  sax(il, i) = sax(il, i) + rrd * (tvp(il, j) - tv(il, j)) &                  sax(il, i) = sax(il, i) + rd * (tvp(il, j) - tv(il, j)) &
559                       * (ph(il, j) - ph(il, j + 1)) / p(il, j)                       * (ph(il, j) - ph(il, j + 1)) / p(il, j)
560               endif               endif
561            enddo            enddo
# Line 580  contains Line 573  contains
573    
574      do i = 1, nl      do i = 1, nl
575         do il = 1, ncum         do il = 1, ncum
576            if (wa(il, i) > 0.0) siga(il, i) = mac(il, i) / wa(il, i) * rrd &            if (wa(il, i) > 0.0) siga(il, i) = mac(il, i) / wa(il, i) * rd &
577                 * tvp(il, i) / p(il, i) / 100. / delta                 * tvp(il, i) / p(il, i) / 100. / delta
578            siga(il, i) = min(siga(il, i), 1.0)            siga(il, i) = min(siga(il, i), 1.0)
579    

Legend:
Removed from v.189  
changed lines
  Added in v.201

  ViewVC Help
Powered by ViewVC 1.1.21