/[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/cv3_mixing.f revision 184 by guez, Wed Mar 16 14:50:46 2016 UTC
# Line 4  module cv3_mixing_m Line 4  module cv3_mixing_m
4    
5  contains  contains
6    
7    SUBROUTINE cv3_mixing(nloc,ncum,nd,na,icb,nk,inb &    SUBROUTINE cv3_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)
        ,ment,qent,uent,vent, nent, sij,elij,ments,qents)  
10      use cv3_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 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 cv3_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 170 i=icb(il), inb(il)
127         do  i=minorig,nl  
128            do  il=1,ncum         do il=1, ncum
129               if ((j.ge.(icb(il)-1)).and.(j.le.inb(il)) &            if ((i >= icb(il)).and.(i <= inb(il)).and.(nent(il, i) == 0)) then
130                    .and.(i.ge.icb(il)).and.(i.le.inb(il)))then               !@ if(nent(il, i) == 0)then
131                  sigij(il,i,j)=sij(il,i,j)               ment(il, i, i)=m(il, i)
132               endif               qent(il, i, i)=rr(il, nk(il))-ep(il, i)*clw(il, i)
133            end do               uent(il, i, i)=u(il, nk(il))
134                 vent(il, i, i)=v(il, nk(il))
135                 elij(il, i, i)=clw(il, i)
136                 !MAF sij(il, i, i)=1.0
137                 sij(il, i, i)=0.0
138              end if
139         end do         end do
140      end do      end do
     !@      enddo  
   
     !@170   continue  
141    
142      !=====================================================================      ! --- NORMALIZE ENTRAINED AIR MASS FLUXES
143      !   ---  NORMALIZE ENTRAINED AIR MASS FLUXES      ! --- TO REPRESENT EQUAL PROBABILITIES OF MIXING
     !   ---  TO REPRESENT EQUAL PROBABILITIES OF MIXING  
     !=====================================================================  
144    
145      call zilch(asum,nloc*nd)      call zilch(asum, nloc*nd)
146      call zilch(csum,nloc*nd)      call zilch(csum, nloc*nd)
147      call zilch(csum,nloc*nd)      call zilch(csum, nloc*nd)
148    
149      do il=1,ncum      do il=1, ncum
150         lwork(il) = .FALSE.         lwork(il) = .FALSE.
151      enddo      enddo
152    
153      DO  i=minorig+1,nl      DO i=minorig+1, nl
154    
155         num1=0         num1=0
156         do il=1,ncum         do il=1, ncum
157            if ( i.ge.icb(il) .and. i.le.inb(il) ) num1=num1+1            if (i >= icb(il) .and. i <= inb(il)) num1=num1+1
158         enddo         enddo
159         if (num1.le.0) cycle         if (num1 <= 0) cycle
   
160    
161         do  il=1,ncum         do il=1, ncum
162            if ( i.ge.icb(il) .and. i.le.inb(il) ) then            if (i >= icb(il) .and. i <= inb(il)) then
163               lwork(il)=(nent(il,i).ne.0)               lwork(il)=(nent(il, i) /= 0)
164               qp=rr(il,1)-ep(il,i)*clw(il,i)               qp=rr(il, 1)-ep(il, i)*clw(il, i)
165               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)) &
166                    +(cpv-cpd)*t(il,i)*(qp-rr(il,i))                    +(cpv-cpd)*t(il, i)*(qp-rr(il, i))
167               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) &
168                    +(cpd-cpv)*t(il,i)*(rr(il,i)-qp)                    +(cpd-cpv)*t(il, i)*(rr(il, i)-qp)
169               if(abs(denom).lt.0.01)denom=0.01               if(abs(denom) < 0.01)denom=0.01
170               scrit(il)=anum/denom               scrit(il)=anum/denom
171               alt=qp-rs(il,i)+scrit(il)*(rr(il,i)-qp)               alt=qp-rs(il, i)+scrit(il)*(rr(il, i)-qp)
172               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
173               smax(il)=0.0               smax(il)=0.0
174               asij(il)=0.0               asij(il)=0.0
175            endif            endif
176         end do         end do
177    
178         do  j=nl,minorig,-1         do j=nl, minorig, -1
179    
180            num2=0            num2=0
181            do il=1,ncum            do il=1, ncum
182               if ( i.ge.icb(il) .and. i.le.inb(il) .and. &               if (i >= icb(il) .and. i <= inb(il) .and. &
183                    j.ge.(icb(il)-1) .and. j.le.inb(il)  &                    j >= (icb(il)-1) .and. j <= inb(il) &
184                    .and. lwork(il) ) num2=num2+1                    .and. lwork(il)) num2=num2+1
185            enddo            enddo
186            if (num2.le.0) cycle            if (num2 <= 0) cycle
187    
188            do  il=1,ncum            do il=1, ncum
189               if ( i.ge.icb(il) .and. i.le.inb(il) .and. &               if (i >= icb(il) .and. i <= inb(il) .and. &
190                    j.ge.(icb(il)-1) .and. j.le.inb(il)  &                    j >= (icb(il)-1) .and. j <= inb(il) &
191                    .and. lwork(il) ) then                    .and. lwork(il)) then
192    
193                  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
194                     wgh=1.0                     wgh=1.0
195                     if(j.gt.i)then                     if(j > i)then
196                        sjmax=amax1(sij(il,i,j+1),smax(il))                        sjmax=amax1(sij(il, i, j+1), smax(il))
197                        sjmax=amin1(sjmax,scrit(il))                        sjmax=amin1(sjmax, scrit(il))
198                        smax(il)=amax1(sij(il,i,j),smax(il))                        smax(il)=amax1(sij(il, i, j), smax(il))
199                        sjmin=amax1(sij(il,i,j-1),smax(il))                        sjmin=amax1(sij(il, i, j-1), smax(il))
200                        sjmin=amin1(sjmin,scrit(il))                        sjmin=amin1(sjmin, scrit(il))
201                        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
202                        smid=amin1(sij(il,i,j),scrit(il))                        smid=amin1(sij(il, i, j), scrit(il))
203                     else                     else
204                        sjmax=amax1(sij(il,i,j+1),scrit(il))                        sjmax=amax1(sij(il, i, j+1), scrit(il))
205                        smid=amax1(sij(il,i,j),scrit(il))                        smid=amax1(sij(il, i, j), scrit(il))
206                        sjmin=0.0                        sjmin=0.0
207                        if(j.gt.1)sjmin=sij(il,i,j-1)                        if(j > 1)sjmin=sij(il, i, j-1)
208                        sjmin=amax1(sjmin,scrit(il))                        sjmin=amax1(sjmin, scrit(il))
209                     endif                     endif
210                     delp=abs(sjmax-smid)                     delp=abs(sjmax-smid)
211                     delm=abs(sjmin-smid)                     delm=abs(sjmin-smid)
212                     asij(il)=asij(il)+wgh*(delp+delm)                     asij(il)=asij(il)+wgh*(delp+delm)
213                     ment(il,i,j)=ment(il,i,j)*(delp+delm)*wgh                     ment(il, i, j)=ment(il, i, j)*(delp+delm)*wgh
214                  endif                  endif
215               endif               endif
216            end do            end do
217    
218         end do         end do
219    
220         do il=1,ncum         do il=1, ncum
221            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
222               asij(il)=amax1(1.0e-16,asij(il))               asij(il)=amax1(1.0e-16, asij(il))
223               asij(il)=1.0/asij(il)               asij(il)=1.0/asij(il)
224               asum(il,i)=0.0               asum(il, i)=0.0
225               bsum(il,i)=0.0               bsum(il, i)=0.0
226               csum(il,i)=0.0               csum(il, i)=0.0
227            endif            endif
228         enddo         enddo
229    
230         do  j=minorig,nl         do j=minorig, nl
231            do il=1,ncum            do il=1, ncum
232               if ( i.ge.icb(il) .and. i.le.inb(il) .and. lwork(il) &               if (i >= icb(il) .and. i <= inb(il) .and. lwork(il) &
233                    .and. j.ge.(icb(il)-1) .and. j.le.inb(il) ) then                    .and. j >= (icb(il)-1) .and. j <= inb(il)) then
234                  ment(il,i,j)=ment(il,i,j)*asij(il)                  ment(il, i, j)=ment(il, i, j)*asij(il)
235               endif               endif
236            enddo            enddo
237         end do         end do
238    
239         do  j=minorig,nl         do j=minorig, nl
240            do il=1,ncum            do il=1, ncum
241               if ( i.ge.icb(il) .and. i.le.inb(il) .and. lwork(il) &               if (i >= icb(il) .and. i <= inb(il) .and. lwork(il) &
242                    .and. j.ge.(icb(il)-1) .and. j.le.inb(il) ) then                    .and. j >= (icb(il)-1) .and. j <= inb(il)) then
243                  asum(il,i)=asum(il,i)+ment(il,i,j)                  asum(il, i)=asum(il, i)+ment(il, i, j)
244                  ment(il,i,j)=ment(il,i,j)*sig(il,j)                  ment(il, i, j)=ment(il, i, j)*sig(il, j)
245                  bsum(il,i)=bsum(il,i)+ment(il,i,j)                  bsum(il, i)=bsum(il, i)+ment(il, i, j)
246               endif               endif
247            enddo            enddo
248         end do         end do
249    
250         do il=1,ncum         do il=1, ncum
251            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
252               bsum(il,i)=amax1(bsum(il,i),1.0e-16)               bsum(il, i)=amax1(bsum(il, i), 1.0e-16)
253               bsum(il,i)=1.0/bsum(il,i)               bsum(il, i)=1.0/bsum(il, i)
254            endif            endif
255         enddo         enddo
256    
257         do  j=minorig,nl         do j=minorig, nl
258            do il=1,ncum            do il=1, ncum
259               if ( i.ge.icb(il) .and. i.le.inb(il) .and. lwork(il) &               if (i >= icb(il) .and. i <= inb(il) .and. lwork(il) &
260                    .and. j.ge.(icb(il)-1) .and. j.le.inb(il) ) then                    .and. j >= (icb(il)-1) .and. j <= inb(il)) then
261                  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)
262               endif               endif
263            enddo            enddo
264         end do         end do
265    
266         do  j=minorig,nl         do j=minorig, nl
267            do il=1,ncum            do il=1, ncum
268               if ( i.ge.icb(il) .and. i.le.inb(il) .and. lwork(il) &               if (i >= icb(il) .and. i <= inb(il) .and. lwork(il) &
269                    .and. j.ge.(icb(il)-1) .and. j.le.inb(il) ) then                    .and. j >= (icb(il)-1) .and. j <= inb(il)) then
270                  csum(il,i)=csum(il,i)+ment(il,i,j)                  csum(il, i)=csum(il, i)+ment(il, i, j)
271               endif               endif
272            enddo            enddo
273         end do         end do
274    
275         do il=1,ncum         do il=1, ncum
276            if ( i.ge.icb(il) .and. i.le.inb(il) .and. lwork(il) &            if (i >= icb(il) .and. i <= inb(il) .and. lwork(il) &
277                 .and. csum(il,i).lt.m(il,i) ) then                 .and. csum(il, i) < m(il, i)) then
278               nent(il,i)=0               nent(il, i)=0
279               ment(il,i,i)=m(il,i)               ment(il, i, i)=m(il, i)
280               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)
281               uent(il,i,i)=u(il,nk(il))               uent(il, i, i)=u(il, nk(il))
282               vent(il,i,i)=v(il,nk(il))               vent(il, i, i)=v(il, nk(il))
283               elij(il,i,i)=clw(il,i)               elij(il, i, i)=clw(il, i)
284               !MAF        sij(il,i,i)=1.0               !MAF sij(il, i, i)=1.0
285               sij(il,i,i)=0.0               sij(il, i, i)=0.0
286            endif            endif
287         enddo ! il         enddo ! il
288    
289      end DO      end DO
290      !  
291      ! MAF: renormalisation de MENT      ! MAF: renormalisation de MENT
292      do jm=1,nd      do jm=1, nd
293         do im=1,nd         do im=1, nd
294            do il=1,ncum            do il=1, ncum
295               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)
296            end do            end do
297         end do         end do
298      end do      end do
299      !  
300      do jm=1,nd      do jm=1, nd
301         do im=1,nd         do im=1, nd
302            do il=1,ncum            do il=1, ncum
303               if(zm(il,im).ne.0.) then               if(zm(il, im) /= 0.) then
304                  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)
305               endif               endif
306            end do            end do
307         end do         end do
308      end do      end do
309      !  
310      do jm=1,nd      do jm=1, nd
311         do im=1,nd         do im=1, nd
312            do  il=1,ncum            do il=1, ncum
313               qents(il,im,jm)=qent(il,im,jm)               qents(il, im, jm)=qent(il, im, jm)
314               ments(il,im,jm)=ment(il,im,jm)               ments(il, im, jm)=ment(il, im, jm)
315            end do            end do
316         enddo         enddo
317      enddo      enddo

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

  ViewVC Help
Powered by ViewVC 1.1.21