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

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

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

revision 195 by guez, Wed May 18 17:56:44 2016 UTC revision 197 by guez, Tue May 24 12:25:29 2016 UTC
# Line 13  contains Line 13  contains
13      use cv_thermo_m, only: cpd, ginv, grav      use cv_thermo_m, only: cpd, ginv, grav
14    
15      integer, intent(in):: icb(:) ! (ncum)      integer, intent(in):: icb(:) ! (ncum)
16        ! {2 <= icb <= nl - 3}
17    
18      integer, intent(in):: inb(:) ! (ncum)      integer, intent(in):: inb(:) ! (ncum)
19      ! first model level above the level of neutral buoyancy of the      ! first model level above the level of neutral buoyancy of the
# Line 22  contains Line 23  contains
23      real, intent(in):: gz(:, :) ! (klon, klev)      real, intent(in):: gz(:, :) ! (klon, klev)
24      real, intent(in):: u(:, :), v(:, :) ! (klon, klev)      real, intent(in):: u(:, :), v(:, :) ! (klon, klev)
25      real, intent(in):: p(:, :) ! (klon, klev) pressure at full level, in hPa      real, intent(in):: p(:, :) ! (klon, klev) pressure at full level, in hPa
26      real, intent(in):: ph(:, :) ! (klon, klev + 1)      real, intent(in):: ph(:, :) ! (ncum, klev + 1)
27      real, intent(in):: th(:, :) ! (ncum, nl - 1)      real, intent(in):: th(:, :) ! (ncum, nl - 1)
28      real, intent(in):: tv(:, :) ! (klon, klev)      real, intent(in):: tv(:, :) ! (klon, klev)
29      real, intent(in):: lv(:, :) ! (klon, klev)      real, intent(in):: lv(:, :) ! (klon, klev)
# Line 33  contains Line 34  contains
34      real, intent(in):: ment(:, :, :) ! (ncum, klev, klev)      real, intent(in):: ment(:, :, :) ! (ncum, klev, klev)
35      real, intent(in):: elij(:, :, :) ! (ncum, klev, klev)      real, intent(in):: elij(:, :, :) ! (ncum, klev, klev)
36      real, intent(in):: delt      real, intent(in):: delt
37      real, intent(in):: plcl(:) ! (klon)      real, intent(in):: plcl(:) ! (ncum)
38    
39      real, intent(out):: mp(:, :) ! (klon, klev)      real, intent(out):: mp(:, :) ! (klon, klev)
40      real, intent(out):: qp(:, :), up(:, :), vp(:, :) ! (ncum, nl)      real, intent(out):: qp(:, :), up(:, :), vp(:, :) ! (ncum, nl)
# Line 51  contains Line 52  contains
52      integer i, il, imax      integer i, il, imax
53      real tinv, delti      real tinv, delti
54      real afac, afac1, afac2, bfac      real afac, afac1, afac2, bfac
55      real pr1, pr2, sigt, b6, c6, revap, tevap, delth      real pr1, sigt, b6, c6, revap, tevap, delth
56      real amfac, amp2, xf, tf, fac2, ur, sru, fac, d, af, bf      real amfac, amp2, xf, tf, fac2, ur, sru, fac, d, af, bf
57      real ampmax      real ampmax
58      real lvcp(size(icb), nl) ! (ncum, nl)      real lvcp(size(icb), nl) ! (ncum, nl)
# Line 135  contains Line 136  contains
136               afac = max(afac, 0.)               afac = max(afac, 0.)
137               bfac = 1. / (sigd * wt(il, i))               bfac = 1. / (sigd * wt(il, i))
138    
139               ! Prise en compte de la variation progressive de sigt dans               if (i <= icb(il)) then
140               ! les couches icb et icb - 1:                  ! Prise en compte de la variation progressive de sigt dans
141               ! pour plcl <= ph(i + 1), pr1 = 0 et pr2 = 1                  ! les couches icb et icb - 1 :
142               ! pour plcl >= ph(i), pr1 = 1 et pr2 = 0                  ! pour plcl <= ph(i + 1), pr1 = 0
143               ! pour ph(i + 1) < plcl < ph(i), pr1 est la proportion \`a cheval                  ! pour plcl >= ph(i), pr1 = 1
144               ! sur le nuage, et pr2 est la proportion sous la base du                  ! pour ph(i + 1) < plcl < ph(i), pr1 est la proportion
145               ! nuage.                  ! \`a cheval sur le nuage.
146               pr1 = max(0., min(1., &                  pr1 = max(0., min(1., &
147                    (plcl(il) - ph(il, i + 1)) / (ph(il, i) - ph(il, i + 1))))                       (plcl(il) - ph(il, i + 1)) / (ph(il, i) - ph(il, i + 1))))
148               pr2 = max(0., min(1., &                  sigt = sigp * pr1 + 1. - pr1
149                    (ph(il, i) - plcl(il)) / (ph(il, i) - ph(il, i + 1))))               else
150               sigt = sigp * pr1 + pr2                  ! {i >= icb(il) + 1}
151                    sigt = sigp
152                 end if
153    
154               b6 = bfac * 50. * sigd * (ph(il, i) - ph(il, i + 1)) * sigt * afac               b6 = bfac * 50. * sigd * (ph(il, i) - ph(il, i + 1)) * sigt * afac
155               c6 = water(il, i + 1) + bfac * wdtrain(il) - 50. * sigd * bfac &               c6 = water(il, i + 1) + bfac * wdtrain(il) - 50. * sigd * bfac &

Legend:
Removed from v.195  
changed lines
  Added in v.197

  ViewVC Help
Powered by ViewVC 1.1.21