/[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/CV3_routines/cv3_mixing.f revision 134 by guez, Wed Apr 29 15:47:56 2015 UTC trunk/phylmd/CV30_routines/cv30_mixing.f90 revision 328 by guez, Thu Jun 13 14:40:06 2019 UTC
# Line 1  Line 1 
1  module cv3_mixing_m  module cv30_mixing_m
2    
3    implicit none    implicit none
4    
5  contains  contains
6    
7    SUBROUTINE cv3_mixing(nloc,ncum,nd,na,icb,nk,inb &    SUBROUTINE cv30_mixing(icb, inb, t, rr, rs, u, v, h, lv, hp, ep, clw, m, &
8         ,ph,t,rr,rs,u,v,h,lv,qnk &         sig, ment, qent, uent, vent, nent, sij, elij, ments, qents)
9         ,hp,tv,tvp,ep,clw,m,sig &  
10         ,ment,qent,uent,vent, nent, sij,elij,ments,qents)      ! MIXING
     use cv3_param_m  
     use cvthermo  
11    
     !---------------------------------------------------------------------  
12      ! a faire:      ! a faire:
13      !     - changer rr(il,1) -> qnk(il)      ! - changer rr(il, 1) -> qnk(il)
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
17        USE dimphy, ONLY: klev, klon
18        use suphec_m, only: rcpd, rcpv, rv
19    
20      ! inputs:      ! inputs:
21      integer, intent(in):: ncum, nd, na, nloc      integer, intent(in):: icb(:), inb(:) ! (ncum)
22      integer icb(nloc), inb(nloc), nk(nloc)      real, intent(in):: t(klon, klev), rr(klon, klev), rs(klon, klev)
23      real sig(nloc,nd)      real u(klon, klev), v(klon, klev)
24      real qnk(nloc)      real, intent(in):: h(klon, klev)
25      real ph(nloc,nd+1)      real, intent(in):: lv(:, :) ! (klon, klev)
26      real t(nloc,nd), rr(nloc,nd), rs(nloc,nd)      real, intent(in):: hp(klon, klev)
27      real u(nloc,nd), v(nloc,nd)      real ep(klon, klev), clw(klon, klev)
28      real lv(nloc,na), h(nloc,na), hp(nloc,na)      real m(klon, klev) ! input of convect3
29      real tv(nloc,na), tvp(nloc,na), ep(nloc,na), clw(nloc,na)      real sig(klon, klev)
     real m(nloc,na)        ! input of convect3  
30    
31      ! outputs:      ! outputs:
32      real ment(nloc,na,na), qent(nloc,na,na)      real ment(klon, klev, klev), qent(klon, klev, klev)
33      real uent(nloc,na,na), vent(nloc,na,na)      real uent(klon, klev, klev), vent(klon, klev, klev)
34      real sij(nloc,na,na), elij(nloc,na,na)      integer nent(klon, klev)
35      real ments(nloc,nd,nd), qents(nloc,nd,nd)      real sij(klon, klev, klev), elij(klon, klev, klev)
36      real sigij(nloc,nd,nd)      real ments(klon, klev, klev), qents(klon, klev, klev)
     integer nent(nloc,nd)  
37    
38      ! local variables:      ! Local:
39      integer i, j, k, il, im, jm      integer ncum, i, j, k, il, im, jm
40      integer num1, num2      integer num1, num2
41      real rti, bf2, anum, denom, dei, altem, cwat, stemp, qp      real rti, bf2, anum, denom, dei, altem, cwat, stemp, qp
42      real alt, smid, sjmin, sjmax, delp, delm      real alt, smid, sjmin, sjmax, delp, delm
43      real asij(nloc), smax(nloc), scrit(nloc)      real asij(klon), smax(klon), scrit(klon)
44      real asum(nloc,nd),bsum(nloc,nd),csum(nloc,nd)      real asum(klon, klev), bsum(klon, klev), csum(klon, klev)
45      real wgh      real wgh
46      real zm(nloc,na)      real zm(klon, klev)
47      logical lwork(nloc)      logical lwork(klon)
48    
49        !-------------------------------------------------------------------------
50    
51        ncum = size(icb)
52    
53      !=====================================================================      ! INITIALIZE VARIOUS ARRAYS USED IN THE COMPUTATIONS
54      ! --- INITIALIZE VARIOUS ARRAYS USED IN THE COMPUTATIONS  
55      !=====================================================================      do j = 1, nl
56           do i = 1, ncum
57      do  j=1,nl            nent(i, j) = 0
        do  i=1,ncum  
           nent(i,j)=0  
           ! in convect3, m is computed in cv3_closure  
           ! ori          m(i,1)=0.0  
58         end do         end do
59      end do      end do
60    
61      do  j=1,nl      do j = 1, nl
62         do  k=1,nl         do k = 1, nl
63            do  i=1,ncum            do i = 1, ncum
64               qent(i,k,j)=rr(i,j)               qent(i, k, j) = rr(i, j)
65               uent(i,k,j)=u(i,j)               uent(i, k, j) = u(i, j)
66               vent(i,k,j)=v(i,j)               vent(i, k, j) = v(i, j)
67               elij(i,k,j)=0.0               elij(i, k, j) = 0.0
              !ym            ment(i,k,j)=0.0  
              !ym            sij(i,k,j)=0.0  
68            end do            end do
69         end do         end do
70      end do      end do
71    
72      !ym      ment(1:ncum, 1:klev, 1:klev) = 0.0
73      ment(1:ncum,1:nd,1:nd)=0.0      sij(1:ncum, 1:klev, 1:klev) = 0.0
74      sij(1:ncum,1:nd,1:nd)=0.0  
75        zm(:, :) = 0.
76      zm(:,:)=0.  
77        ! CALCULATE ENTRAINED AIR MASS FLUX (ment), TOTAL WATER MIXING
78      !=====================================================================      ! RATIO (QENT), TOTAL CONDENSED WATER (elij), AND MIXING
79      ! --- CALCULATE ENTRAINED AIR MASS FLUX (ment), TOTAL WATER MIXING      ! FRACTION (sij)
80      ! --- RATIO (QENT), TOTAL CONDENSED WATER (elij), AND MIXING  
81      ! --- FRACTION (sij)      do i = minorig + 1, nl
82      !=====================================================================  
83           do j = minorig, nl
84      do  i=minorig+1, nl            do il = 1, ncum
85                 if((i >= icb(il)).and.(i <= inb(il)).and. &
86         do  j=minorig,nl                    (j >= (icb(il) - 1)).and.(j <= inb(il)))then
87            do  il=1,ncum  
88               if( (i.ge.icb(il)).and.(i.le.inb(il)).and. &                  rti = rr(il, 1) - ep(il, i) * clw(il, i)
89                    (j.ge.(icb(il)-1)).and.(j.le.inb(il)))then                  bf2 = 1. + lv(il, j) * lv(il, j) * rs(il, j) / (rv &
90                         * t(il, j) * t(il, j) * rcpd)
91                  rti=rr(il,1)-ep(il,i)*clw(il,i)                  anum = h(il, j) - hp(il, i) + (rcpv - rcpd) * t(il, j) * (rti &
92                  bf2=1.+lv(il,j)*lv(il,j)*rs(il,j)/(rrv*t(il,j)*t(il,j)*cpd)                       - rr(il, j))
93                  anum=h(il,j)-hp(il,i)+(cpv-cpd)*t(il,j)*(rti-rr(il,j))                  denom = h(il, i) - hp(il, i) + (rcpd - rcpv) * (rr(il, i) &
94                  denom=h(il,i)-hp(il,i)+(cpd-cpv)*(rr(il,i)-rti)*t(il,j)                       - rti) * t(il, j)
95                  dei=denom                  dei = denom
96                  if(abs(dei).lt.0.01)dei=0.01                  if(abs(dei) < 0.01)dei = 0.01
97                  sij(il,i,j)=anum/dei                  sij(il, i, j) = anum / dei
98                  sij(il,i,i)=1.0                  sij(il, i, i) = 1.0
99                  altem=sij(il,i,j)*rr(il,i)+(1.-sij(il,i,j))*rti-rs(il,j)                  altem = sij(il, i, j) * rr(il, i) + (1. - sij(il, i, j)) &
100                  altem=altem/bf2                       * rti - rs(il, j)
101                  cwat=clw(il,j)*(1.-ep(il,j))                  altem = altem / bf2
102                  stemp=sij(il,i,j)                  cwat = clw(il, j) * (1. - ep(il, j))
103                  if((stemp.lt.0.0.or.stemp.gt.1.0.or.altem.gt.cwat) &                  stemp = sij(il, i, j)
104                       .and.j.gt.i)then                  if((stemp < 0.0.or.stemp > 1.0.or.altem > cwat) &
105                     anum=anum-lv(il,j)*(rti-rs(il,j)-cwat*bf2)                       .and.j > i)then
106                     denom=denom+lv(il,j)*(rr(il,i)-rti)                     anum = anum - lv(il, j) * (rti - rs(il, j) - cwat * bf2)
107                     if(abs(denom).lt.0.01)denom=0.01                     denom = denom + lv(il, j) * (rr(il, i) - rti)
108                     sij(il,i,j)=anum/denom                     if(abs(denom) < 0.01)denom = 0.01
109                     altem=sij(il,i,j)*rr(il,i)+(1.-sij(il,i,j))*rti-rs(il,j)                     sij(il, i, j) = anum / denom
110                     altem=altem-(bf2-1.)*cwat                     altem = sij(il, i, j) * rr(il, i) + (1. - sij(il, i, j)) &
111                            * rti - rs(il, j)
112                       altem = altem - (bf2 - 1.) * cwat
113                  end if                  end if
114                  if(sij(il,i,j).gt.0.0.and.sij(il,i,j).lt.0.95)then                  if(sij(il, i, j) > 0.0.and.sij(il, i, j) < 0.95)then
115                     qent(il,i,j)=sij(il,i,j)*rr(il,i)+(1.-sij(il,i,j))*rti                     qent(il, i, j) = sij(il, i, j) * rr(il, i) + (1. &
116                     uent(il,i,j)=sij(il,i,j)*u(il,i)+(1.-sij(il,i,j))*u(il,nk(il))                          - sij(il, i, j)) * rti
117                     vent(il,i,j)=sij(il,i,j)*v(il,i)+(1.-sij(il,i,j))*v(il,nk(il))                     uent(il, i, j) = sij(il, i, j) * u(il, i) + (1. &
118                     elij(il,i,j)=altem                          - sij(il, i, j)) * u(il, minorig)
119                     elij(il,i,j)=amax1(0.0,elij(il,i,j))                     vent(il, i, j) = sij(il, i, j) * v(il, i) + (1. &
120                     ment(il,i,j)=m(il,i)/(1.-sij(il,i,j))                          - sij(il, i, j)) * v(il, minorig)
121                     nent(il,i)=nent(il,i)+1                     elij(il, i, j) = altem
122                       elij(il, i, j) = amax1(0.0, elij(il, i, j))
123                       ment(il, i, j) = m(il, i) / (1. - sij(il, i, j))
124                       nent(il, i) = nent(il, i) + 1
125                  end if                  end if
126                  sij(il,i,j)=amax1(0.0,sij(il,i,j))                  sij(il, i, j) = amax1(0.0, sij(il, i, j))
127                  sij(il,i,j)=amin1(1.0,sij(il,i,j))                  sij(il, i, j) = amin1(1.0, sij(il, i, j))
128               endif ! new               endif ! new
129            end do            end do
130         end do         end do
131    
132         !         ! if no air can entrain at level i assume that updraft detrains
133         !   ***   if no air can entrain at level i assume that updraft detrains  ***         ! at that level and calculate detrained air flux and properties
        !   ***   at that level and calculate detrained air flux and properties  ***  
        !  
   
        !@      do 170 i=icb(il),inb(il)  
   
        do  il=1,ncum  
           if ((i.ge.icb(il)).and.(i.le.inb(il)).and.(nent(il,i).eq.0)) then  
              !@      if(nent(il,i).eq.0)then  
              ment(il,i,i)=m(il,i)  
              qent(il,i,i)=rr(il,nk(il))-ep(il,i)*clw(il,i)  
              uent(il,i,i)=u(il,nk(il))  
              vent(il,i,i)=v(il,nk(il))  
              elij(il,i,i)=clw(il,i)  
              !MAF      sij(il,i,i)=1.0  
              sij(il,i,i)=0.0  
           end if  
        end do  
     end do  
134    
135      do  j=minorig,nl         do il = 1, ncum
136         do  i=minorig,nl            if ((i >= icb(il)).and.(i <= inb(il)).and.(nent(il, i) == 0)) then
137            do  il=1,ncum               ment(il, i, i) = m(il, i)
138               if ((j.ge.(icb(il)-1)).and.(j.le.inb(il)) &               qent(il, i, i) = rr(il, minorig) - ep(il, i) * clw(il, i)
139                    .and.(i.ge.icb(il)).and.(i.le.inb(il)))then               uent(il, i, i) = u(il, minorig)
140                  sigij(il,i,j)=sij(il,i,j)               vent(il, i, i) = v(il, minorig)
141               endif               elij(il, i, i) = clw(il, i)
142            end do               sij(il, i, i) = 0.0
143              end if
144         end do         end do
145      end do      end do
     !@      enddo  
   
     !@170   continue  
146    
147      !=====================================================================      ! NORMALIZE ENTRAINED AIR MASS FLUXES
148      !   ---  NORMALIZE ENTRAINED AIR MASS FLUXES      ! TO REPRESENT EQUAL PROBABILITIES OF MIXING
     !   ---  TO REPRESENT EQUAL PROBABILITIES OF MIXING  
     !=====================================================================  
149    
150      call zilch(asum,nloc*nd)      asum = 0.
151      call zilch(csum,nloc*nd)      csum = 0.
     call zilch(csum,nloc*nd)  
152    
153      do il=1,ncum      do il = 1, ncum
154         lwork(il) = .FALSE.         lwork(il) = .FALSE.
155      enddo      enddo
156    
157      DO  i=minorig+1,nl      DO i = minorig + 1, nl
158    
159         num1=0         num1 = 0
160         do il=1,ncum         do il = 1, ncum
161            if ( i.ge.icb(il) .and. i.le.inb(il) ) num1=num1+1            if (i >= icb(il) .and. i <= inb(il)) num1 = num1 + 1
162         enddo         enddo
163         if (num1.le.0) cycle         if (num1 <= 0) cycle
164    
165           do il = 1, ncum
166         do  il=1,ncum            if (i >= icb(il) .and. i <= inb(il)) then
167            if ( i.ge.icb(il) .and. i.le.inb(il) ) then               lwork(il) = (nent(il, i) /= 0)
168               lwork(il)=(nent(il,i).ne.0)               qp = rr(il, 1) - ep(il, i) * clw(il, i)
169               qp=rr(il,1)-ep(il,i)*clw(il,i)               anum = h(il, i) - hp(il, i) - lv(il, i) * (qp - rs(il, i)) &
170               anum=h(il,i)-hp(il,i)-lv(il,i)*(qp-rs(il,i)) &                    + (rcpv - rcpd) * t(il, i) * (qp - rr(il, i))
171                    +(cpv-cpd)*t(il,i)*(qp-rr(il,i))               denom = h(il, i) - hp(il, i) + lv(il, i) * (rr(il, i) - qp) &
172               denom=h(il,i)-hp(il,i)+lv(il,i)*(rr(il,i)-qp) &                    + (rcpd - rcpv) * t(il, i) * (rr(il, i) - qp)
173                    +(cpd-cpv)*t(il,i)*(rr(il,i)-qp)               if(abs(denom) < 0.01)denom = 0.01
174               if(abs(denom).lt.0.01)denom=0.01               scrit(il) = anum / denom
175               scrit(il)=anum/denom               alt = qp - rs(il, i) + scrit(il) * (rr(il, i) - qp)
176               alt=qp-rs(il,i)+scrit(il)*(rr(il,i)-qp)               if(scrit(il) <= 0.0.or.alt <= 0.0)scrit(il) = 1.0
177               if(scrit(il).le.0.0.or.alt.le.0.0)scrit(il)=1.0               smax(il) = 0.0
178               smax(il)=0.0               asij(il) = 0.0
              asij(il)=0.0  
179            endif            endif
180         end do         end do
181    
182         do  j=nl,minorig,-1         do j = nl, minorig, - 1
183    
184            num2=0            num2 = 0
185            do il=1,ncum            do il = 1, ncum
186               if ( i.ge.icb(il) .and. i.le.inb(il) .and. &               if (i >= icb(il) .and. i <= inb(il) .and. &
187                    j.ge.(icb(il)-1) .and. j.le.inb(il)  &                    j >= (icb(il) - 1) .and. j <= inb(il) &
188                    .and. lwork(il) ) num2=num2+1                    .and. lwork(il)) num2 = num2 + 1
189            enddo            enddo
190            if (num2.le.0) cycle            if (num2 <= 0) cycle
191    
192            do  il=1,ncum            do il = 1, ncum
193               if ( i.ge.icb(il) .and. i.le.inb(il) .and. &               if (i >= icb(il) .and. i <= inb(il) .and. &
194                    j.ge.(icb(il)-1) .and. j.le.inb(il)  &                    j >= (icb(il) - 1) .and. j <= inb(il) &
195                    .and. lwork(il) ) then                    .and. lwork(il)) then
196    
197                  if(sij(il,i,j).gt.1.0e-16.and.sij(il,i,j).lt.0.95)then                  if(sij(il, i, j) > 1.0e-16.and.sij(il, i, j) < 0.95)then
198                     wgh=1.0                     wgh = 1.0
199                     if(j.gt.i)then                     if(j > i)then
200                        sjmax=amax1(sij(il,i,j+1),smax(il))                        sjmax = amax1(sij(il, i, j + 1), smax(il))
201                        sjmax=amin1(sjmax,scrit(il))                        sjmax = amin1(sjmax, scrit(il))
202                        smax(il)=amax1(sij(il,i,j),smax(il))                        smax(il) = amax1(sij(il, i, j), smax(il))
203                        sjmin=amax1(sij(il,i,j-1),smax(il))                        sjmin = amax1(sij(il, i, j - 1), smax(il))
204                        sjmin=amin1(sjmin,scrit(il))                        sjmin = amin1(sjmin, scrit(il))
205                        if(sij(il,i,j).lt.(smax(il)-1.0e-16))wgh=0.0                        if(sij(il, i, j) < (smax(il) - 1.0e-16))wgh = 0.0
206                        smid=amin1(sij(il,i,j),scrit(il))                        smid = amin1(sij(il, i, j), scrit(il))
207                     else                     else
208                        sjmax=amax1(sij(il,i,j+1),scrit(il))                        sjmax = amax1(sij(il, i, j + 1), scrit(il))
209                        smid=amax1(sij(il,i,j),scrit(il))                        smid = amax1(sij(il, i, j), scrit(il))
210                        sjmin=0.0                        sjmin = 0.0
211                        if(j.gt.1)sjmin=sij(il,i,j-1)                        if(j > 1)sjmin = sij(il, i, j - 1)
212                        sjmin=amax1(sjmin,scrit(il))                        sjmin = amax1(sjmin, scrit(il))
213                     endif                     endif
214                     delp=abs(sjmax-smid)                     delp = abs(sjmax - smid)
215                     delm=abs(sjmin-smid)                     delm = abs(sjmin - smid)
216                     asij(il)=asij(il)+wgh*(delp+delm)                     asij(il) = asij(il) + wgh * (delp + delm)
217                     ment(il,i,j)=ment(il,i,j)*(delp+delm)*wgh                     ment(il, i, j) = ment(il, i, j) * (delp + delm) * wgh
218                  endif                  endif
219               endif               endif
220            end do            end do
221    
222         end do         end do
223    
224         do il=1,ncum         do il = 1, ncum
225            if (i.ge.icb(il).and.i.le.inb(il).and.lwork(il)) then            if (i >= icb(il).and.i <= inb(il).and.lwork(il)) then
226               asij(il)=amax1(1.0e-16,asij(il))               asij(il) = amax1(1.0e-16, asij(il))
227               asij(il)=1.0/asij(il)               asij(il) = 1.0 / asij(il)
228               asum(il,i)=0.0               asum(il, i) = 0.0
229               bsum(il,i)=0.0               bsum(il, i) = 0.0
230               csum(il,i)=0.0               csum(il, i) = 0.0
231            endif            endif
232         enddo         enddo
233    
234         do  j=minorig,nl         do j = minorig, nl
235            do il=1,ncum            do il = 1, ncum
236               if ( i.ge.icb(il) .and. i.le.inb(il) .and. lwork(il) &               if (i >= icb(il) .and. i <= inb(il) .and. lwork(il) &
237                    .and. j.ge.(icb(il)-1) .and. j.le.inb(il) ) then                    .and. j >= (icb(il) - 1) .and. j <= inb(il)) then
238                  ment(il,i,j)=ment(il,i,j)*asij(il)                  ment(il, i, j) = ment(il, i, j) * asij(il)
239               endif               endif
240            enddo            enddo
241         end do         end do
242    
243         do  j=minorig,nl         do j = minorig, nl
244            do il=1,ncum            do il = 1, ncum
245               if ( i.ge.icb(il) .and. i.le.inb(il) .and. lwork(il) &               if (i >= icb(il) .and. i <= inb(il) .and. lwork(il) &
246                    .and. j.ge.(icb(il)-1) .and. j.le.inb(il) ) then                    .and. j >= (icb(il) - 1) .and. j <= inb(il)) then
247                  asum(il,i)=asum(il,i)+ment(il,i,j)                  asum(il, i) = asum(il, i) + ment(il, i, j)
248                  ment(il,i,j)=ment(il,i,j)*sig(il,j)                  ment(il, i, j) = ment(il, i, j) * sig(il, j)
249                  bsum(il,i)=bsum(il,i)+ment(il,i,j)                  bsum(il, i) = bsum(il, i) + ment(il, i, j)
250               endif               endif
251            enddo            enddo
252         end do         end do
253    
254         do il=1,ncum         do il = 1, ncum
255            if (i.ge.icb(il).and.i.le.inb(il).and.lwork(il)) then            if (i >= icb(il).and.i <= inb(il).and.lwork(il)) then
256               bsum(il,i)=amax1(bsum(il,i),1.0e-16)               bsum(il, i) = amax1(bsum(il, i), 1.0e-16)
257               bsum(il,i)=1.0/bsum(il,i)               bsum(il, i) = 1.0 / bsum(il, i)
258            endif            endif
259         enddo         enddo
260    
261         do  j=minorig,nl         do j = minorig, nl
262            do il=1,ncum            do il = 1, ncum
263               if ( i.ge.icb(il) .and. i.le.inb(il) .and. lwork(il) &               if (i >= icb(il) .and. i <= inb(il) .and. lwork(il) &
264                    .and. j.ge.(icb(il)-1) .and. j.le.inb(il) ) then                    .and. j >= (icb(il) - 1) .and. j <= inb(il)) then
265                  ment(il,i,j)=ment(il,i,j)*asum(il,i)*bsum(il,i)                  ment(il, i, j) = ment(il, i, j) * asum(il, i) * bsum(il, i)
266               endif               endif
267            enddo            enddo
268         end do         end do
269    
270         do  j=minorig,nl         do j = minorig, nl
271            do il=1,ncum            do il = 1, ncum
272               if ( i.ge.icb(il) .and. i.le.inb(il) .and. lwork(il) &               if (i >= icb(il) .and. i <= inb(il) .and. lwork(il) &
273                    .and. j.ge.(icb(il)-1) .and. j.le.inb(il) ) then                    .and. j >= (icb(il) - 1) .and. j <= inb(il)) then
274                  csum(il,i)=csum(il,i)+ment(il,i,j)                  csum(il, i) = csum(il, i) + ment(il, i, j)
275               endif               endif
276            enddo            enddo
277         end do         end do
278    
279         do il=1,ncum         do il = 1, ncum
280            if ( i.ge.icb(il) .and. i.le.inb(il) .and. lwork(il) &            if (i >= icb(il) .and. i <= inb(il) .and. lwork(il) &
281                 .and. csum(il,i).lt.m(il,i) ) then                 .and. csum(il, i) < m(il, i)) then
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               !MAF        sij(il,i,i)=1.0               sij(il, i, i) = 0.0
              sij(il,i,i)=0.0  
289            endif            endif
290         enddo ! il         enddo ! il
291    
292      end DO      end DO
293      !  
294      ! MAF: renormalisation de MENT      ! MAF: renormalisation de MENT
295      do jm=1,nd      do jm = 1, klev
296         do im=1,nd         do im = 1, klev
297            do il=1,ncum            do il = 1, ncum
298               zm(il,im)=zm(il,im)+(1.-sij(il,im,jm))*ment(il,im,jm)               zm(il, im) = zm(il, im) + (1. - sij(il, im, jm)) * ment(il, im, jm)
299            end do            end do
300         end do         end do
301      end do      end do
302      !  
303      do jm=1,nd      do jm = 1, klev
304         do im=1,nd         do im = 1, klev
305            do il=1,ncum            do il = 1, ncum
306               if(zm(il,im).ne.0.) then               if(zm(il, im) /= 0.) then
307                  ment(il,im,jm)=ment(il,im,jm)*m(il,im)/zm(il,im)                  ment(il, im, jm) = ment(il, im, jm) * m(il, im) / zm(il, im)
308               endif               endif
309            end do            end do
310         end do         end do
311      end do      end do
312      !  
313      do jm=1,nd      do jm = 1, klev
314         do im=1,nd         do im = 1, klev
315            do  il=1,ncum            do il = 1, ncum
316               qents(il,im,jm)=qent(il,im,jm)               qents(il, im, jm) = qent(il, im, jm)
317               ments(il,im,jm)=ment(il,im,jm)               ments(il, im, jm) = ment(il, im, jm)
318            end do            end do
319         enddo         enddo
320      enddo      enddo
321    
322    end SUBROUTINE cv3_mixing    end SUBROUTINE cv30_mixing
323    
324  end module cv3_mixing_m  end module cv30_mixing_m

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

  ViewVC Help
Powered by ViewVC 1.1.21