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

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

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

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

Legend:
Removed from v.97  
changed lines
  Added in v.187

  ViewVC Help
Powered by ViewVC 1.1.21