/[lmdze]/trunk/phylmd/CV30_routines/cv30_mixing.f90
ViewVC logotype

Diff of /trunk/phylmd/CV30_routines/cv30_mixing.f90

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

trunk/Sources/phylmd/CV30_routines/cv30_mixing.f revision 195 by guez, Wed May 18 17:56:44 2016 UTC trunk/phylmd/CV30_routines/cv30_mixing.f90 revision 328 by guez, Thu Jun 13 14:40:06 2019 UTC
# Line 4  module cv30_mixing_m Line 4  module cv30_mixing_m
4    
5  contains  contains
6    
7    SUBROUTINE cv30_mixing(icb, nk, inb, t, rr, rs, u, v, h, lv, hp, ep, clw, &    SUBROUTINE cv30_mixing(icb, inb, t, rr, rs, u, v, h, lv, hp, ep, clw, m, &
8         m, sig, ment, qent, uent, vent, nent, sij, elij, ments, qents)         sig, ment, qent, uent, vent, nent, sij, elij, ments, qents)
9    
10      ! MIXING      ! MIXING
11    
# Line 14  contains Line 14  contains
14      ! - vectorisation de la partie normalisation des flux (do 789)      ! - vectorisation de la partie normalisation des flux (do 789)
15    
16      use cv30_param_m, only: minorig, nl      use cv30_param_m, only: minorig, nl
     use cv_thermo_m, only: cpd, cpv, rrv  
17      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
18        use suphec_m, only: rcpd, rcpv, rv
19    
20      ! inputs:      ! inputs:
21      integer, intent(in):: icb(:), nk(:), inb(:) ! (ncum)      integer, intent(in):: icb(:), inb(:) ! (ncum)
22      real t(klon, klev), rr(klon, klev), rs(klon, klev)      real, intent(in):: t(klon, klev), rr(klon, klev), rs(klon, klev)
23      real u(klon, klev), v(klon, klev)      real u(klon, klev), v(klon, klev)
24      real h(klon, klev), lv(klon, klev), hp(klon, klev)      real, intent(in):: h(klon, klev)
25        real, intent(in):: lv(:, :) ! (klon, klev)
26        real, intent(in):: hp(klon, klev)
27      real ep(klon, klev), clw(klon, klev)      real ep(klon, klev), clw(klon, klev)
28      real m(klon, klev) ! input of convect3      real m(klon, klev) ! input of convect3
29      real sig(klon, klev)      real sig(klon, klev)
# Line 84  contains Line 86  contains
86                    (j >= (icb(il) - 1)).and.(j <= inb(il)))then                    (j >= (icb(il) - 1)).and.(j <= inb(il)))then
87    
88                  rti = rr(il, 1) - ep(il, i) * clw(il, i)                  rti = rr(il, 1) - ep(il, i) * clw(il, i)
89                  bf2 = 1. + lv(il, j) * lv(il, j) * rs(il, j) / (rrv &                  bf2 = 1. + lv(il, j) * lv(il, j) * rs(il, j) / (rv &
90                       * t(il, j) * t(il, j) * cpd)                       * t(il, j) * t(il, j) * rcpd)
91                  anum = h(il, j) - hp(il, i) + (cpv - cpd) * t(il, j) * (rti &                  anum = h(il, j) - hp(il, i) + (rcpv - rcpd) * t(il, j) * (rti &
92                       - rr(il, j))                       - rr(il, j))
93                  denom = h(il, i) - hp(il, i) + (cpd - cpv) * (rr(il, i) &                  denom = h(il, i) - hp(il, i) + (rcpd - rcpv) * (rr(il, i) &
94                       - rti) * t(il, j)                       - rti) * t(il, j)
95                  dei = denom                  dei = denom
96                  if(abs(dei) < 0.01)dei = 0.01                  if(abs(dei) < 0.01)dei = 0.01
# Line 113  contains Line 115  contains
115                     qent(il, i, j) = sij(il, i, j) * rr(il, i) + (1. &                     qent(il, i, j) = sij(il, i, j) * rr(il, i) + (1. &
116                          - sij(il, i, j)) * rti                          - sij(il, i, j)) * rti
117                     uent(il, i, j) = sij(il, i, j) * u(il, i) + (1. &                     uent(il, i, j) = sij(il, i, j) * u(il, i) + (1. &
118                          - sij(il, i, j)) * u(il, nk(il))                          - sij(il, i, j)) * u(il, minorig)
119                     vent(il, i, j) = sij(il, i, j) * v(il, i) + (1. &                     vent(il, i, j) = sij(il, i, j) * v(il, i) + (1. &
120                          - sij(il, i, j)) * v(il, nk(il))                          - sij(il, i, j)) * v(il, minorig)
121                     elij(il, i, j) = altem                     elij(il, i, j) = altem
122                     elij(il, i, j) = amax1(0.0, elij(il, i, j))                     elij(il, i, j) = amax1(0.0, elij(il, i, j))
123                     ment(il, i, j) = m(il, i) / (1. - sij(il, i, j))                     ment(il, i, j) = m(il, i) / (1. - sij(il, i, j))
# Line 133  contains Line 135  contains
135         do il = 1, ncum         do il = 1, ncum
136            if ((i >= icb(il)).and.(i <= inb(il)).and.(nent(il, i) == 0)) then            if ((i >= icb(il)).and.(i <= inb(il)).and.(nent(il, i) == 0)) then
137               ment(il, i, i) = m(il, i)               ment(il, i, i) = m(il, i)
138               qent(il, i, i) = rr(il, nk(il)) - ep(il, i) * clw(il, i)               qent(il, i, i) = rr(il, minorig) - ep(il, i) * clw(il, i)
139               uent(il, i, i) = u(il, nk(il))               uent(il, i, i) = u(il, minorig)
140               vent(il, i, i) = v(il, nk(il))               vent(il, i, i) = v(il, minorig)
141               elij(il, i, i) = clw(il, i)               elij(il, i, i) = clw(il, i)
142               sij(il, i, i) = 0.0               sij(il, i, i) = 0.0
143            end if            end if
# Line 165  contains Line 167  contains
167               lwork(il) = (nent(il, i) /= 0)               lwork(il) = (nent(il, i) /= 0)
168               qp = rr(il, 1) - ep(il, i) * clw(il, i)               qp = rr(il, 1) - ep(il, i) * clw(il, i)
169               anum = h(il, i) - hp(il, i) - lv(il, i) * (qp - rs(il, i)) &               anum = h(il, i) - hp(il, i) - lv(il, i) * (qp - rs(il, i)) &
170                    + (cpv - cpd) * t(il, i) * (qp - rr(il, i))                    + (rcpv - rcpd) * t(il, i) * (qp - rr(il, i))
171               denom = h(il, i) - hp(il, i) + lv(il, i) * (rr(il, i) - qp) &               denom = h(il, i) - hp(il, i) + lv(il, i) * (rr(il, i) - qp) &
172                    + (cpd - cpv) * t(il, i) * (rr(il, i) - qp)                    + (rcpd - rcpv) * t(il, i) * (rr(il, i) - qp)
173               if(abs(denom) < 0.01)denom = 0.01               if(abs(denom) < 0.01)denom = 0.01
174               scrit(il) = anum / denom               scrit(il) = anum / denom
175               alt = qp - rs(il, i) + scrit(il) * (rr(il, i) - qp)               alt = qp - rs(il, i) + scrit(il) * (rr(il, i) - qp)
# Line 280  contains Line 282  contains
282               nent(il, i) = 0               nent(il, i) = 0
283               ment(il, i, i) = m(il, i)               ment(il, i, i) = m(il, i)
284               qent(il, i, i) = rr(il, 1) - ep(il, i) * clw(il, i)               qent(il, i, i) = rr(il, 1) - ep(il, i) * clw(il, i)
285               uent(il, i, i) = u(il, nk(il))               uent(il, i, i) = u(il, minorig)
286               vent(il, i, i) = v(il, nk(il))               vent(il, i, i) = v(il, minorig)
287               elij(il, i, i) = clw(il, i)               elij(il, i, i) = clw(il, i)
288               sij(il, i, i) = 0.0               sij(il, i, i) = 0.0
289            endif            endif

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

  ViewVC Help
Powered by ViewVC 1.1.21