source: LMDZ.3.3/tags/version0/libf/dyn3d/redecoupenc.F @ 285

Last change on this file since 285 was 285, checked in by (none), 23 years ago

This commit was manufactured by cvs2svn to create tag 'version0'.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 18.3 KB
Line 
1c $Header
2      SUBROUTINE redecoupenc
3     s     (irec,massemn,pbarun,pbarvn,wn,tetan,phin,
4     s     nrec,avant,airefi,
5     s     zmfu, zmfd, zen_u, zde_u,zen_d, zde_d, coefkz,
6     s     yu1,yv1,ftsol,pctsrf,
7     s     frac_impa,frac_nucl,phisn)
8
9      IMPLICIT NONE
10
11#include "dimensions.h"
12#include "paramet.h"
13
14#include "comvert.h"
15#include "comconst.h"
16#include "comgeom2.h"
17
18#include "tracstoke.h"
19
20      integer irec,nrec,i,j
21
22      integer ig,l
23      integer imo,jmo,imn,jmn,ii,jj,ig
24      parameter (imn=iim,jmn=jjm,imo=imn/2,jmo=(jmn+1)/2)
25      integer ngrido,ngridn
26      parameter(ngrido=(jmo-1)*imo+2,ngridn=(jmn-1)*imn+2)
27      real zdtvr
28
29      INTEGER nbsrf
30      PARAMETER (nbsrf=4) ! nombre de sous-fractions pour une maille
31
32      real zmfd(ngridn,llm),zde_d(ngridn,llm),zen_d(ngridn,llm)
33      real zmfu(ngridn,llm),zde_u(ngridn,llm),zen_u(ngridn,llm)
34      real mfd(ngridn,llm),de_d(ngridn,llm),en_d(ngridn,llm)
35      real mfu(ngridn,llm),de_u(ngridn,llm),en_u(ngridn,llm)
36       
37        real*4 airedy(iip1,jjp1)
38      real*4 rlonu_dy(iip1,jjp1),rlonv_dy(iip1,jjm),
39     . rlatu_dy(iip1,jjp1),rlatv_dy(iip1,jjm)
40
41      real coefkz(ngridn,llm)
42      real frac_impa(ngridn,llm),frac_nucl(ngridn,llm)
43      real yu1(ngridn), yv1(ngridn)
44      real ftsol(ngridn,nbsrf),pctsrf(ngridn,nbsrf)
45      integer imfu,imfd,ien_u,ide_u,
46     s      ien_d,ide_d,
47     s      icoefkz,izu1,izv1,
48     s      itsol,ipsf,
49     s      ilei, ilec
50      parameter(imfu=1,imfd=llm+1,ien_u=2*llm+1,ide_u=3*llm+1,
51     s      ien_d=4*llm+1,ide_d=5*llm+1,
52     s      icoefkz=6*llm+1,
53     s      ilei=7*llm+1,ilec=8*llm+1,
54     s      izu1=9*llm+1,izv1=9*llm+2,
55     s      itsol=9*llm+3,ipsf=9*llm+3+nbsrf)
56      logical avant
57
58
59      real massefi(ngridn,llm)
60
61      real massemn(imn+1,jmn+1,llm),tetan(imn+1,jmn+1,llm)
62      real pbarun(imn+1,jmn+1,llm),pbarvn(imn+1,jmn,llm)
63      real wn(imn+1,jmn+1,llm),phin(imn+1,jmn+1,llm)
64      real phisn(imn+1,jmn+1)
65      real phisfi(imn,jmn+1)
66      real massemo(imo+1,jmo+1,llm),tetao(imo+1,jmo+1,llm)
67      real pbaruo(imo+1,jmo+1,llm),pbarvo(imo+1,jmo,llm)
68      real wo(imo+1,jmo+1,llm),phio(imo+1,jmo+1,llm)
69      real phiso(imo+1,jmo+1)
70
71      real pbarvst(imo+1,jmo+1,llm)
72
73      real airefi(ngridn)
74
75      real xlecn(ngridn,9*llm+2+2*nbsrf),tmpn(imn+1,jmn+1)
76      real xleco(ngrido,9*llm+2+2*nbsrf),tmpo(imo+1,jmo+1)
77
78      real zcontrole(ngridn),zmass,tmpdyn(imn+1,jmn+1),zflux
79
80      real ziadvtrac,zrec,ziadvtrac2,zrec2
81      real zim,zjm,zlm,zklon,zklev
82
83      real zpi
84c  longitudes et latitudes lues
85      real rlonul(1:imo+1),rlatvl(1:jmo)
86      real rlonvl(1:imo+1),rlatul(1:jmo+1)
87c  longitudes et latitudes anciennes
88      real rlonuo(0:imo+1),rlatvo(0:jmo+1)
89c  longitudes et latitudes nouvelles
90      real rlonun(0:imn+1),rlatvn(0:jmn+1)
91      real aireo(imo+1,jmo+1)
92
93      integer ndecx(imo+1),ndecy(jmo+1)
94      real alphax(imn+1),alphay(jmn+1)
95      real alphaxo(imo+1)
96      real alpha(imn+1,jmn+1)
97
98      real aa,uu(0:imo+1),vv(imo+1,0:jmo+1)
99
100
101      integer iest(imo+1),iouest(imo+1)
102      integer jsud(jmo+1),jnord(jmo+1)
103
104      integer in,io,jn,jo,l,iin,jjn
105      integer i,j
106      real dlatm,dlatp,dlonm,dlonp
107
108
109      zpi=2.*asin(1.)
110
111
112c==================================================================
113c   Si le numero du record est 0 alors: INITIALISATION
114c==================================================================
115c
116      print*,'ENTREE DANS LECTFLUX'
117        print*,'IREC=',IREC
118      if(irec.eq.0) then
119
120        print*,'IREC==',0
121
122C test         call inigeom
123c==================================================================
124c   Definition des surdecoupages dans les deux directions
125c==================================================================
126
127      ndecx(1)=1
128      do io=2,imo
129         ndecx(io)=2
130      enddo
131      ndecx(imo+1)=1
132
133      ndecy(1)=1
134      do jo=2,jmo
135         ndecy(jo)=2
136      enddo
137      ndecy(jmo+1)=1
138
139      ii=0
140      do io=1,imo+1
141         ii=ii+ndecx(io)
142      enddo
143      if(ii.ne.iim) then
144         print*,'ii=',ii,'   iim=',iim
145         stop
146      endif
147
148      jj=0
149      do jo=1,jmo+1
150         jj=jj+ndecy(jo)
151      enddo
152      if(jj.ne.jjp1) then
153         print*,'jj=',jj,'   jjm=',jjm
154         stop
155      endif
156
157c==================================================================
158c   Calcul des jsud,... correspondant aux intersections des
159c   grilles.
160c==================================================================
161
162      iest(1)=0
163      do io=2,imo+1
164         iest(io)=iest(io-1)+ndecx(io-1)
165         iouest(io-1)=iest(io)
166      enddo
167      iouest(imo+1)=iest(imo+1)+ndecx(imo+1)
168
169      jnord(1)=0
170      do jo=2,jmo+1
171         jnord(jo)=jnord(jo-1)+ndecy(jo-1)
172         jsud(jo-1)=jnord(jo)
173      enddo
174      jsud(jmo+1)=jnord(jmo+1)+ndecy(jmo+1)
175
176c==================================================================
177c   ouverture des fichiers, lecture des entetes
178c==================================================================
179       
180        CALL read_dstoke(0,zdtvr,ziadvtrac,ziadvtrac2)
181
182        CALL read_fstoke(0,
183     .   zrec,zim,zjm,zlm,
184     .   rlonu_dy,rlonv_dy,rlatu_dy,rlatv_dy,aireo,phiso,
185     .   massemo,pbaruo,pbarvo,wo,tetao,phio)
186
187        print*,'zrec,zdtvr,ziadvtrac,zim,zjm,zlm'
188      print*,zrec,zdtvr,ziadvtrac,zim,zjm,zlm
189
190      if((imo-nint(zim))*(jmo-nint(zjm)).ne.0) then
191        print*,'Modifier les dimensions dans redecoupe '
192        print*,'Mettre imo=',zim,'   jmo=',zjm
193        stop
194      endif
195
196        CALL read_pstoke(0,
197     .   zrec,zklon,zklev,airefi,phisfi,
198     .   mfu,mfd,en_u,de_u,en_d,de_d,coefkz,
199     .   frac_impa,frac_nucl,yu1,yv1,ftsol,pctsrf)
200       
201        print*,'Entete du fichier physique'
202      print*,zrec2,ziadvtrac2,zklon,zklev
203
204      nrec=zrec
205      dtvr=zdtvr
206      istdyn=ziadvtrac
207      istphy=ziadvtrac2
208
209c==================================================================
210c   Definition des anciennes latitudes et longitudes
211c   (qui pourraient etre relues plus tard)
212c==================================================================
213
214      rlonuo(0)=-zpi
215      do io=1,imo
216c        rlonuo(io)=2.*zpi/FLOAT(imo)*(io+0.5-0.5*FLOAT(imo)-1.)
217c        print*,'LON ',io,rlonuo(io),rlonul(io)
218         rlonuo(io)=rlonul(io)
219      enddo
220      rlonuo(imo+1)=zpi
221
222      rlatvo(0)=zpi/2.
223      do jo=1,jmo
224c        rlatvo(jo)=zpi/FLOAT(jmo)*(0.5*FLOAT(jmo)+1.-jo-0.5)
225c        print*,'LAT ',jo,rlatvo(jo),rlatvl(jo)
226         rlatvo(jo)=rlatvl(jo)
227      enddo
228      rlatvo(jmo+1)=-zpi/2.
229
230c     do jo=1,jmo+1
231c        do io=1,imo+1
232c           aireo(io,jo)=rad*rad
233c    s         *(rlonuo(io)-rlonuo(io-1))
234c    s         *(sin(rlatvo(jo-1))-sin(rlatvo(jo)))
235c           aireo(io,jo)=airel(io,jo)
236c        enddo
237c        aireo(1,jo)=aireo(1,jo)+aireo(imo+1,jo)
238c        aireo(imo+1,jo)=aireo(1,jo)
239c     enddo
240
241      do io=2,imo
242         alphaxo(io)=1.
243      enddo
244      alphaxo(1)=(rlonuo(1)-rlonuo(0))
245     s        /(rlonuo(1)-rlonuo(0)+rlonuo(imo+1)-rlonuo(imo))
246      alphaxo(imo+1)=1.-alphaxo(1)
247
248c==================================================================
249c    Definition des nouvelles latitudes et longitudes
250c==================================================================
251
252      rlonun(0)=-zpi
253      do io=1,imo+1
254         do iin=1,iouest(io)-iest(io)
255            in=iin+iest(io)
256            rlonun(in)=
257     s      rlonuo(io-1)+iin*(rlonuo(io)-rlonuo(io-1))
258     s      /ndecx(io)
259            alphax(in)=alphaxo(io)/ndecx(io)
260            print787,io,rlonuo(io-1)*180./zpi,in
261     s      ,iest(io),iouest(io),rlonun(in)*180./zpi,alphax(in)
262         enddo
263      enddo
264
265      rlatvn(0)=0.5*zpi
266      do jo=1,jmo+1
267         print*,'jo=',jo
268         do jjn=1,jsud(jo)-jnord(jo)
269            jn=jnord(jo)+jjn
270            rlatvn(jn)=rlatvo(jo-1)+jjn*(rlatvo(jo)-rlatvo(jo-1))
271     s      /ndecy(jo)
272            alphay(jn)=(sin(rlatvn(jn-1))-sin(rlatvn(jn)))
273     s                /(sin(rlatvo(jo-1))-sin(rlatvo(jo)))
274            print787,jo,rlatvo(jo-1)*180./zpi,jn
275     s      ,jnord(jo),jsud(jo),rlatvn(jn)*180./zpi,alphay(jn)
276         enddo
277      enddo
278
279787   format(i5,f10.2,3(i5),2(f10.2))
280      do in=1,imn
281         rlonu(in)=rlonun(in)
282         rlonv(in)=0.5*(rlonun(in)+rlonun(in-1))
283      enddo
284      rlonv(imn+1)=rlonv(1)+2.*zpi
285      rlonu(imn+1)=rlonu(1)+2.*zpi
286
287      do jn=1,jmn
288         rlatv(jn)=rlatvn(jn)
289      enddo
290      do jn=1,jmn+1
291         rlatu(jn)=0.5*(rlatvn(jn-1)+rlatvn(jn))
292      enddo
293
294      do jn=1,jmn+1
295         do in=1,imn
296            alpha(in,jn)=alphax(in)*alphay(jn)
297         enddo
298         alpha(imn+1,jn)=0.
299      enddo
300
301c     call dump2d(iip1,jjp1,alpha,'ALPHA   ')
302
303c      .  on a :  cu(i,j) = rad * COS(y) * dx/dX         .
304c      .          cv( j ) = rad          * dy/dY         .
305c   A 1 point scalaire P (i,j) de la grille, reguliere en (X,Y) , sont
306c   affectees 4 aires entourant P , calculees respectivement aux points
307c            ( i + 1/4, j - 1/4 )    :    aireij1 (i,j)
308c            ( i + 1/4, j + 1/4 )    :    aireij2 (i,j)
309c            ( i - 1/4, j + 1/4 )    :    aireij3 (i,j)
310c            ( i - 1/4, j - 1/4 )    :    aireij4 (i,j)
311c
312c                             . V
313c
314c                 aireij4 .        . aireij1
315c
316c                   U .       . P      . U
317c
318c                 aireij3 .        . aireij2
319c
320c                             . V
321
322
323      do j=1,jjp1
324         do i=1,iim
325            dlonp=rlonun(i)-rlonv(i)
326            dlonm=rlonv(i)-rlonun(i-1)
327            dlatp=sin(rlatvn(j-1))-sin(rlatu(j))
328            dlatm=sin(rlatu(j))-sin(rlatvn(j))
329            aireij1 ( i,j ) = rad*rad*dlatp*dlonp
330            aireij2 ( i,j ) = rad*rad*dlatm*dlonp
331            aireij3 ( i,j ) = rad*rad*dlatm*dlonm
332            aireij4 ( i,j ) = rad*rad*dlatp*dlonm
333      aire    ( i,j )  = aireij1(i,j) + aireij2(i,j) + aireij3(i,j) +
334     *                          aireij4(i,j)
335      alpha1  ( i,j )  = aireij1(i,j) / aire(i,j)
336      alpha2  ( i,j )  = aireij2(i,j) / aire(i,j)
337      alpha3  ( i,j )  = aireij3(i,j) / aire(i,j)
338      alpha4  ( i,j )  = aireij4(i,j) / aire(i,j)
339      alpha1p2( i,j )  = alpha1 (i,j) + alpha2 (i,j)
340      alpha1p4( i,j )  = alpha1 (i,j) + alpha4 (i,j)
341      alpha2p3( i,j )  = alpha2 (i,j) + alpha3 (i,j)
342      alpha3p4( i,j )  = alpha3 (i,j) + alpha4 (i,j)
343           enddo
344           aireij1(iip1,j)=aireij1(1,j)
345           aireij2(iip1,j)=aireij2(1,j)
346           aireij3(iip1,j)=aireij3(1,j)
347           aireij4(iip1,j)=aireij4(1,j)
348           aire(iip1,j)=aire(1,j)
349           alpha1(iip1,j)=alpha1(1,j)
350           alpha2(iip1,j)=alpha2(1,j)
351           alpha3(iip1,j)=alpha3(1,j)
352           alpha4(iip1,j)=alpha4(1,j)
353           alpha1p2(iip1,j)=alpha1p2(1,j)
354           alpha1p4(iip1,j)=alpha1p4(1,j)
355           alpha2p3(iip1,j)=alpha2p3(1,j)
356           alpha3p4(iip1,j)=alpha3p4(1,j)
357       enddo
358c     call dump2d(iip1,jjp1,aire,'AIRE   ')
359
360c     do jn=1,jjp1
361c        do in=1,iim
362c           aire(in,jn)=rad*rad*(sin(rlatvn(jn-1))-sin(rlatvn(jn)))
363c    s      *(rlonun(in)-rlonun(in-1))
364c           unsaire(in,jn)=1./aire(in,jn)
365c        enddo
366c        aire(iip1,jn)=aire(1,jn)
367c        unsaire(iip1,jn)=unsaire(1,jn)
368c     enddo
369c     call dump2d(iip1,jjp1,aire,'AIRE2   ')
370      DO 42 j = 1,jjp1
371      DO 41 i = 1,iim
372      unsaire(i,j) = 1./ aire(i,j)
373      aireu  (i,j) = aireij1(i,j) + aireij2(i,j) + aireij4(i+1,j) +
374     *                           aireij3(i+1,j)
375  41  CONTINUE
376      aireu  (iip1,j) = aireu  (1,j)
377      unsaire(iip1,j) = unsaire(1,j)
378  42  CONTINUE
379      DO 48 j = 1,jjm
380        DO i=1,iim
381         airev(i,j)     = aireij2(i,j)+ aireij3(i,j)+ aireij1(i,j+1) +
382     *                           aireij4(i,j+1)
383        ENDDO
384       airev   (iip1,j) = airev(1,j)
385  48  CONTINUE
386      apoln=0.
387      apols=0.
388      do i=1,iim
389         apoln=apoln+aire(i,1)
390         apols=apols+aire(i,jjp1)
391      enddo
392
393
394
395      do jn=1,jjp1
396         do in=1,iim
397            cu(in,jn)=rad*cos(rlatu(jn))*(rlonv(in+1)-rlonv(in))
398         enddo
399         cu(iip1,jn)=cu(1,jn)
400      enddo
401      do jn=1,jjm
402         do in=1,iim+1
403            cv(in,jn)=rad*(rlatu(jn)-rlatu(jn+1))
404         enddo
405      enddo
406
407
408c==================================================================
409c   Fin des initialisations
410      else ! irec=0
411c==================================================================
412
413
414c-----------------------------------------------------------------------
415c   Lecture des fichiers fluxmass et  physique:
416c   -----------------------------------------------------
417       
418        CALL read_fstoke(irec,
419     .   zrec,zim,zjm,zlm,
420     .   rlonu_dy,rlonv_dy,rlatu_dy,rlatv_dy,aireo,phiso,
421     .   massemo,pbaruo,pbarvo,wo,tetao,phio)
422
423        do l=1,llm
424           do j=1,jmo
425              do i=1,imo+1
426                 pbarvo(i,j,l)=pbarvst(i,j,l)
427              enddo
428           enddo
429        enddo
430
431         do l=1,llm
432            do jo=1,jmo+1
433               do io=1,imo+1
434                  do jn=jnord(jo)+1,jsud(jo)
435                     do in=iest(io)+1,iouest(io)
436                        wn(in,jn,l)=alpha(in,jn)*wo(io,jo,l)
437                        massemn(in,jn,l)=alpha(in,jn)
438     s                     *massemo(io,jo,l)
439                        tetan(in,jn,l)=tetao(io,jo,l)
440                        phin(in,jn,l)=phio(io,jo,l)
441c marine               
442                        phisn(i,jn) = phiso(io,jo)
443                     enddo
444                  enddo
445               enddo
446            enddo
447            do jn=1,jmn+1
448               wn(imn+1,jn,l)=wn(1,jn,l)
449               massemn(imn+1,jn,l)=massemn(1,jn,l)
450               tetan(imn+1,jn,l)=tetan(1,jn,l)
451               phin(imn+1,jn,l)=phin(1,jn,l)
452c marine
453                phisn(imn+1,jn)=phisn(1,jn)
454
455            enddo
456         enddo
457
458         do l=1,llm
459            do jo=1,jmo+1
460               uu(imo+1)=0.5*(pbaruo(imo,jo,l)+pbaruo(imo+1,jo,l))
461               uu(0)=uu(imo+1)
462               do io=1,imo
463                  uu(io)=pbaruo(io,jo,l)
464               enddo
465               do io=1,imo+1
466                  do jn=jnord(jo)+1,jsud(jo)
467                     aa=0.
468                     do in=iest(io)+1,iouest(io)
469                        aa=aa+alphax(in)
470                        pbarun(in,jn,l)=alphay(jn)*
471     s                    (uu(io-1)+aa*(uu(io)-uu(io-1)))
472                     enddo
473                  enddo
474               enddo
475            enddo
476            do jn=1,jmn+1
477               pbarun(imn+1,jn,l)=pbarun(1,jn,l)
478            enddo
479         enddo
480       
481        do l=1,llm
482            do jo=1,jmo
483               do io=1,imo+1
484                  vv(io,jo)=pbarvo(io,jo,l)
485               enddo
486            enddo
487            do io=1,imo+1
488               vv(io,0)=0.
489               vv(io,jmo+1)=0.
490            enddo
491            do jo=1,jmo+1
492               do io=1,imo+1
493                  aa=0.
494c                 do jn=jnord(jo)+1,max(jsud(jo),jmo)
495                  do jn=jnord(jo)+1,min(jsud(jo),jmn)
496                     aa=aa+alphay(jn)
497                     do in=iest(io)+1,iouest(io)
498                        pbarvn(in,jn,l)=alphax(in)*
499     s                  (vv(io,jo-1)+aa*(vv(io,jo)-vv(io,jo-1)))
500                     enddo
501                  enddo
502               enddo
503            enddo
504            do jn=1,jmn
505               pbarvn(iip1,jn,l)=pbarvn(1,jn,l)
506            enddo
507         enddo
508
509       
510        CALL read_pstoke(irec,
511     .   zrec,zklon,zklev,airefi,phisfi,
512     .   mfu,mfd,en_u,de_u,en_d,de_d,coefkz,
513     .   frac_impa,frac_nucl,yu1,yv1,ftsol,pctsrf)
514
515c==================================================================
516c  Passage  a la nouvelle grille
517c==================================================================
518         do l=1,9*llm+2+2*nbsrf
519c   passage aa la grille dynamique ancienne
520            do io=1,imo+1
521               tmpo(io,1)=xleco(1,l)
522               tmpo(io,jmo+1)=xleco(ngrido,l)
523            enddo
524            do jo=2,jmo
525               do io=1,imo
526                  tmpo(io,jo)=xleco((jo-2)*imo+io+1,l)
527               enddo
528               tmpo(imo+1,jo)=tmpo(1,jo)
529            enddo
530c   passage a la grillle dynamique nouvelle
531            do jo=1,jmo+1
532               do io=1,imo+1
533                  do jn=jnord(jo)+1,jsud(jo)
534                     do in=iest(io)+1,iouest(io)
535                        tmpn(in,jn)=tmpo(io,jo)
536                     enddo
537                  enddo
538               enddo
539            enddo
540c   passage a la grille physique nouvelle
541            xlecn(1,l)=tmpn(1,1)
542            xlecn(ngridn,l)=tmpn(1,jmn+1)
543            do jn=2,jmn
544               do in=1,imn
545                  xlecn((jn-2)*imn+in+1,l)=tmpn(in,jn)
546               enddo
547            enddo
548         enddo
549
550c==================================================================
551        if (avant) then
552c Simu directe
553       do l=1,llm
554          do ig=1,ngridn
555             zmfu(ig,l)=mfu(ig,l)
556             zmfd(ig,l)=mfd(ig,l)
557             zde_u(ig,l)=de_u(ig,l)
558             zen_u(ig,l)=en_u(ig,l)
559             zde_d(ig,l)=de_d(ig,l)
560             zen_d(ig,l)=en_d(ig,l)
561          enddo
562       enddo
563      else
564c   Simu retro
565       do l=1,llm
566          do ig=1,ngridn
567             zmfd(ig,l)=-mfu(ig,l)
568             zmfu(ig,l)=-mfd(ig,l)
569             zen_d(ig,l)=de_u(ig,l)
570             zde_d(ig,l)=en_u(ig,l)
571             zen_u(ig,l)=de_d(ig,l)
572             zde_u(ig,l)=en_d(ig,l)
573          enddo
574       enddo
575      endif
576
577c-----------------------------------------------------------------------
578c   PETIT CONTROLE SUR LES FLUX CONVECTIFS...
579c-----------------------------------------------------------------------
580
581         call gr_dyn_fi(llm,iip1,jjp1,ngridn,massemn,massefi)
582
583      print*,'Ap redec irec'
584         do ig=1,ngridn
585            zcontrole(ig)=1.
586         enddo
587c   zmass=(max(massemn(ig,l),massemn(ig,l-1))/airefi(ig)
588         do l=2,llm
589            do ig=1,ngridn
590               zmass=max(massefi(ig,l),massefi(ig,l-1))/airefi(ig)
591               zflux=max(abs(zmfu(ig,l)),abs(zmfd(ig,l)))*dtphys
592               if(zflux.gt.0.9*zmass) then
593                 zcontrole(ig)=min(zcontrole(ig),0.9*zmass/zflux)
594               endif
595            enddo
596         enddo
597
598         do ig=1,ngridn
599            if(zcontrole(ig).lt.0.99999) then
600               print*,'ATTENTION !!! on reduit les flux de masse '
601               print*,'convectifs au point ig=',ig
602            endif
603         enddo
604
605         call gr_fi_dyn(1,ngridn,iip1,jjp1,zcontrole,tmpdyn)
606
607         do l=1,llm
608            do ig=1,ngridn
609               zmfu(ig,l)=zmfu(ig,l)*zcontrole(ig)
610               zmfd(ig,l)=zmfd(ig,l)*zcontrole(ig)
611               zen_u(ig,l)=zen_u(ig,l)*zcontrole(ig)
612               zde_u(ig,l)=zde_u(ig,l)*zcontrole(ig)
613               zen_d(ig,l)=zen_d(ig,l)*zcontrole(ig)
614               zde_d(ig,l)=zde_d(ig,l)*zcontrole(ig)
615            enddo
616         enddo
617
618
619      endif ! irec=0
620
621
622      RETURN
623      END
624
625
Note: See TracBrowser for help on using the repository browser.