/[lmdze]/trunk/phylmd/Conflx/flxmain.f
ViewVC logotype

Diff of /trunk/phylmd/Conflx/flxmain.f

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

revision 63 by guez, Wed Aug 1 14:13:57 2012 UTC revision 71 by guez, Mon Jul 8 18:12:18 2013 UTC
# Line 4  module flxmain_m Line 4  module flxmain_m
4    
5  contains  contains
6    
7    SUBROUTINE flxmain(pdtime, pten, pqen, pqsen, pqhfl, pap, paph, pgeo, &    SUBROUTINE flxmain(dtime, ten, qen, qsen, pqhfl, pap, paph, pgeo, ldland, &
8         ldland, ptte, pqte, pvervel, prsfc, pssfc, kcbot, kctop, kdtop, pmfu, &         ptte, pqte, pvervel, prsfc, pssfc, kcbot, kctop, kdtop, mfu, mfd, &
9         pmfd, pen_u, pde_u, pen_d, pde_d, dt_con, dq_con, pmflxr, pmflxs)         pen_u, pde_u, pen_d, pde_d, dt_con, dq_con, pmflxr, pmflxs)
10    
11      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
12        use flxasc_m, only: flxasc
13        use flxdtdq_m, only: flxdtdq
14        use flxflux_m, only: flxflux
15        use flxini_m, only: flxini
16      USE suphec_m, ONLY: rcpd, retv, rg, rlvtt      USE suphec_m, ONLY: rcpd, retv, rg, rlvtt
17        USE yoecumf, ONLY: flxsetup, cmfdeps, entrpen, entrscv, lmfdd
18      USE yoethf_m, ONLY: r4les, r5les      USE yoethf_m, ONLY: r4les, r5les
     USE yoecumf, ONLY: cmfdeps, entrpen, entrscv, lmfdd  
     use flxsetup_m, only: flxsetup  
19    
20      REAL pten(klon,klev), pqen(klon,klev), pqsen(klon,klev)      REAL, intent(in):: dtime
21      REAL ptte(klon,klev)      REAL, intent(in):: ten(klon, klev)
22      REAL pqte(klon,klev)      real, intent(in):: qen(klon, klev)
23      REAL pvervel(klon,klev)      real, intent(inout):: qsen(klon, klev)
24      REAL pgeo(klon,klev), pap(klon,klev), paph(klon,klev+1)      REAL, intent(in):: pqhfl(klon)
25      REAL pqhfl(klon)      real pap(klon, klev), paph(klon, klev+1)
26        REAL, intent(in):: pgeo(klon, klev)
27      REAL ptu(klon,klev), pqu(klon,klev), plu(klon,klev)      LOGICAL ldland(klon)
28      REAL plude(klon,klev)      REAL ptte(klon, klev)
29      REAL pmfu(klon,klev)      REAL pqte(klon, klev)
30        REAL pvervel(klon, klev)
31      REAL prsfc(klon), pssfc(klon)      REAL prsfc(klon), pssfc(klon)
32      INTEGER  kcbot(klon), kctop(klon), ktype(klon)      INTEGER kcbot(klon), kctop(klon)
33      LOGICAL  ldland(klon), ldcum(klon)      INTEGER kdtop(klon)
34        REAL, intent(out):: mfu(klon, klev)
35      REAL ztenh(klon,klev), zqenh(klon,klev), zqsenh(klon,klev)      real, intent(out):: mfd(klon, klev)
36      REAL zgeoh(klon,klev)      REAL pen_u(klon, klev), pde_u(klon, klev)
37      REAL zmfub(klon), zmfub1(klon)      REAL pen_d(klon, klev), pde_d(klon, klev)
38      REAL zmfus(klon,klev), zmfuq(klon,klev), zmful(klon,klev)      REAL dt_con(klon, klev), dq_con(klon, klev)
39      REAL zdmfup(klon,klev), zdpmel(klon,klev)      REAL pmflxr(klon, klev+1)
40        REAL pmflxs(klon, klev+1)
41    
42        ! Local:
43        REAL ptu(klon, klev), pqu(klon, klev), plu(klon, klev)
44        REAL plude(klon, klev)
45        INTEGER ktype(klon)
46        LOGICAL ldcum(klon)
47    
48        REAL ztenh(klon, klev), zqenh(klon, klev), zqsenh(klon, klev)
49        REAL zgeoh(klon, klev)
50        REAL mfub(klon), mfub1(klon)
51        REAL mfus(klon, klev), mfuq(klon, klev), mful(klon, klev)
52        REAL zdmfup(klon, klev), zdpmel(klon, klev)
53      REAL zentr(klon), zhcbase(klon)      REAL zentr(klon), zhcbase(klon)
54      REAL zdqpbl(klon), zdqcv(klon), zdhpbl(klon)      REAL zdqpbl(klon), zdqcv(klon), zdhpbl(klon)
55      REAL zrfl(klon)      REAL zrfl(klon)
56      REAL pmflxr(klon,klev+1)      INTEGER ilab(klon, klev), ictop0(klon)
57      REAL pmflxs(klon,klev+1)      LOGICAL llo1
     INTEGER  ilab(klon,klev), ictop0(klon)  
     LOGICAL  llo1  
     REAL dt_con(klon,klev), dq_con(klon,klev)  
58      REAL zmfmax, zdh      REAL zmfmax, zdh
     REAL, intent(in):: pdtime  
59      real zqumqe, zdqmin, zalvdcp, zhsat, zzz      real zqumqe, zdqmin, zalvdcp, zhsat, zzz
60      REAL zhhat, zpbmpt, zgam, zeps, zfac      REAL zhhat, zpbmpt, zgam, zeps, zfac
61      INTEGER i, k, ikb, itopm2, kcum      INTEGER i, k, ikb, itopm2, kcum
62    
     REAL pen_u(klon,klev), pde_u(klon,klev)  
     REAL pen_d(klon,klev), pde_d(klon,klev)  
63    
64      REAL ptd(klon,klev), pqd(klon,klev), pmfd(klon,klev)      REAL ptd(klon, klev), pqd(klon, klev)
65      REAL zmfds(klon,klev), zmfdq(klon,klev), zdmfdp(klon,klev)      REAL zmfds(klon, klev), zmfdq(klon, klev), zdmfdp(klon, klev)
     INTEGER kdtop(klon)  
66      LOGICAL lddraf(klon)      LOGICAL lddraf(klon)
67    
68      LOGICAL:: firstcal = .TRUE.      LOGICAL:: firstcal = .TRUE.
# Line 69  contains Line 79  contains
79      ENDDO      ENDDO
80      DO k = 1, klev      DO k = 1, klev
81         DO i = 1, klon         DO i = 1, klon
82            dt_con(i,k) = 0.0            dt_con(i, k) = 0.0
83            dq_con(i,k) = 0.0            dq_con(i, k) = 0.0
84         ENDDO         ENDDO
85      ENDDO      ENDDO
86    
87      ! initialiser les variables et faire l'interpolation verticale      ! initialiser les variables et faire l'interpolation verticale
88    
89      CALL flxini(pten, pqen, pqsen, pgeo, &      CALL flxini(ten, qen, qsen, pgeo, paph, zgeoh, ztenh, zqenh, zqsenh, &
90           paph, zgeoh, ztenh, zqenh, zqsenh, &           ptu, pqu, ptd, pqd, mfd, zmfds, zmfdq, zdmfdp, mfu, mfus, mfuq, &
91           ptu, pqu, ptd, pqd, pmfd, zmfds, zmfdq, zdmfdp, &           zdmfup, zdpmel, plu, plude, ilab, pen_u, pde_u, pen_d, pde_d)
          pmfu, zmfus, zmfuq, zdmfup, &  
          zdpmel, plu, plude, ilab, pen_u, pde_u, pen_d, pde_d)  
92    
93      ! determiner les valeurs au niveau de base de la tour convective      ! determiner les valeurs au niveau de base de la tour convective
94    
# Line 95  contains Line 103  contains
103    
104      k=1      k=1
105      DO i = 1, klon      DO i = 1, klon
106         zdqcv(i) = pqte(i,k)*(paph(i,k+1)-paph(i,k))         zdqcv(i) = pqte(i, k)*(paph(i, k+1)-paph(i, k))
107         zdhpbl(i) = 0.0         zdhpbl(i) = 0.0
108         zdqpbl(i) = 0.0         zdqpbl(i) = 0.0
109      ENDDO      ENDDO
110    
111      DO k=2,klev      DO k=2, klev
112         DO i = 1, klon         DO i = 1, klon
113            zdqcv(i)=zdqcv(i)+pqte(i,k)*(paph(i,k+1)-paph(i,k))            zdqcv(i)=zdqcv(i)+pqte(i, k)*(paph(i, k+1)-paph(i, k))
114            IF (k.GE.kcbot(i)) THEN            IF (k.GE.kcbot(i)) THEN
115               zdqpbl(i)=zdqpbl(i)+pqte(i,k)*(paph(i,k+1)-paph(i,k))               zdqpbl(i)=zdqpbl(i)+pqte(i, k)*(paph(i, k+1)-paph(i, k))
116               zdhpbl(i)=zdhpbl(i)+(RCPD*ptte(i,k)+RLVTT*pqte(i,k)) &               zdhpbl(i)=zdhpbl(i)+(RCPD*ptte(i, k)+RLVTT*pqte(i, k)) &
117                    *(paph(i,k+1)-paph(i,k))                    *(paph(i, k+1)-paph(i, k))
118            ENDIF            ENDIF
119         ENDDO         ENDDO
120      ENDDO      ENDDO
121    
122      DO i = 1, klon      DO i = 1, klon
123         ktype(i) = 2         if (zdqcv(i) > MAX(0., - 1.5 * pqhfl(i) * RG)) then
124         if (zdqcv(i).GT.MAX(0.,-1.5*pqhfl(i)*RG)) ktype(i) = 1            ktype(i) = 1
125         !cc         if (zdqcv(i).GT.MAX(0.,-1.1*pqhfl(i)*RG)) ktype(i) = 1         else
126              ktype(i) = 2
127           end if
128      ENDDO      ENDDO
129    
130      ! determiner le flux de masse entrant a travers la base.      ! Déterminer le flux de masse entrant à travers la base. On
131      ! on ignore, pour l'instant, l'effet du panache descendant      ! ignore, pour l'instant, l'effet du panache descendant
132    
133      DO i = 1, klon      DO i = 1, klon
134         ikb=kcbot(i)         ikb=kcbot(i)
135         zqumqe=pqu(i,ikb)+plu(i,ikb)-zqenh(i,ikb)         zqumqe=pqu(i, ikb)+plu(i, ikb)-zqenh(i, ikb)
136         zdqmin=MAX(0.01*zqenh(i,ikb),1.E-10)         zdqmin=MAX(0.01*zqenh(i, ikb), 1.E-10)
137         IF (zdqpbl(i).GT.0..AND.zqumqe.GT.zdqmin.AND.ldcum(i)) THEN         IF (zdqpbl(i) > 0..AND.zqumqe > zdqmin.AND.ldcum(i)) THEN
138            zmfub(i) = zdqpbl(i)/(RG*MAX(zqumqe,zdqmin))            mfub(i) = zdqpbl(i)/(RG*MAX(zqumqe, zdqmin))
139         ELSE         ELSE
140            zmfub(i) = 0.01            mfub(i) = 0.01
141            ldcum(i)=.FALSE.            ldcum(i)=.FALSE.
142         ENDIF         ENDIF
143         IF (ktype(i).EQ.2) THEN         IF (ktype(i) == 2) THEN
144            zdh = RCPD*(ptu(i,ikb)-ztenh(i,ikb)) + RLVTT*zqumqe            zdh = RCPD*(ptu(i, ikb)-ztenh(i, ikb)) + RLVTT*zqumqe
145            zdh = RG * MAX(zdh,1.0E5*zdqmin)            zdh = RG * MAX(zdh, 1.0E5*zdqmin)
146            IF (zdhpbl(i).GT.0..AND.ldcum(i))zmfub(i)=zdhpbl(i)/zdh            IF (zdhpbl(i) > 0..AND.ldcum(i))mfub(i)=zdhpbl(i)/zdh
147         ENDIF         ENDIF
148         zmfmax = (paph(i,ikb)-paph(i,ikb-1)) / (RG*pdtime)         zmfmax = (paph(i, ikb)-paph(i, ikb-1)) / (RG*dtime)
149         zmfub(i) = MIN(zmfub(i),zmfmax)         mfub(i) = MIN(mfub(i), zmfmax)
150         zentr(i) = ENTRSCV         zentr(i) = ENTRSCV
151         IF (ktype(i).EQ.1) zentr(i) = ENTRPEN         IF (ktype(i) == 1) zentr(i) = ENTRPEN
152      ENDDO      ENDDO
153    
154      ! DETERMINE CLOUD ASCENT FOR ENTRAINING PLUME      ! DETERMINE CLOUD ASCENT FOR ENTRAINING PLUME
155    
156      ! (A) calculer d'abord la hauteur "theorique" de la tour convective sans      ! (A) calculer d'abord la hauteur "theorique" de la tour convective sans
157      !     considerer l'entrainement ni le detrainement du panache, sachant      ! considerer l'entrainement ni le detrainement du panache, sachant
158      !     ces derniers peuvent abaisser la hauteur theorique.      ! ces derniers peuvent abaisser la hauteur theorique.
159    
160      DO i = 1, klon      DO i = 1, klon
161         ikb=kcbot(i)         ikb=kcbot(i)
162         zhcbase(i)=RCPD*ptu(i,ikb)+zgeoh(i,ikb)+RLVTT*pqu(i,ikb)         zhcbase(i)=RCPD*ptu(i, ikb)+zgeoh(i, ikb)+RLVTT*pqu(i, ikb)
163         ictop0(i)=kcbot(i)-1         ictop0(i)=kcbot(i)-1
164      ENDDO      ENDDO
165    
166      zalvdcp=RLVTT/RCPD      zalvdcp=RLVTT/RCPD
167      DO k=klev-1,3,-1      DO k=klev-1, 3, -1
168         DO i = 1, klon         DO i = 1, klon
169            zhsat=RCPD*ztenh(i,k)+zgeoh(i,k)+RLVTT*zqsenh(i,k)            zhsat=RCPD*ztenh(i, k)+zgeoh(i, k)+RLVTT*zqsenh(i, k)
170            zgam=R5LES*zalvdcp*zqsenh(i,k)/ &            zgam=R5LES*zalvdcp*zqsenh(i, k)/ &
171                 ((1.-RETV  *zqsenh(i,k))*(ztenh(i,k)-R4LES)**2)                 ((1.-RETV *zqsenh(i, k))*(ztenh(i, k)-R4LES)**2)
172            zzz=RCPD*ztenh(i,k)*0.608            zzz=RCPD*ztenh(i, k)*0.608
173            zhhat=zhsat-(zzz+zgam*zzz)/(1.+zgam*zzz/RLVTT)* &            zhhat=zhsat-(zzz+zgam*zzz)/(1.+zgam*zzz/RLVTT)* &
174                 MAX(zqsenh(i,k)-zqenh(i,k),0.)                 MAX(zqsenh(i, k)-zqenh(i, k), 0.)
175            IF(k.LT.ictop0(i).AND.zhcbase(i).GT.zhhat) ictop0(i)=k            IF(k < ictop0(i).AND.zhcbase(i) > zhhat) ictop0(i)=k
176         ENDDO         ENDDO
177      ENDDO      ENDDO
178    
179      ! (B) calculer le panache ascendant      ! (B) calculer le panache ascendant
180    
181      CALL flxasc(pdtime,ztenh, zqenh, pten, pqen, pqsen, &      CALL flxasc(dtime, ztenh, zqenh, ten, qen, qsen, pgeo, zgeoh, pap, &
182           pgeo, zgeoh, pap, paph, pqte, pvervel, &           paph, pqte, pvervel, ldland, ldcum, ktype, ilab, ptu, pqu, plu, &
183           ldland, ldcum, ktype, ilab, &           mfu, mfub, zentr, mfus, mfuq, mful, plude, zdmfup, kcbot, &
184           ptu, pqu, plu, pmfu, zmfub, zentr, &           kctop, ictop0, kcum, pen_u, pde_u)
          zmfus, zmfuq, zmful, plude, zdmfup, &  
          kcbot, kctop, ictop0, kcum, pen_u, pde_u)  
185    
186      IF (kcum /= 0) then      kcum_not_zero: IF (kcum /= 0) then
187         ! verifier l'epaisseur de la convection et changer eventuellement         ! verifier l'epaisseur de la convection et changer eventuellement
188         ! le taux d'entrainement/detrainement         ! le taux d'entrainement/detrainement
189    
190         DO i = 1, klon         DO i = 1, klon
191            zpbmpt=paph(i,kcbot(i))-paph(i,kctop(i))            zpbmpt=paph(i, kcbot(i))-paph(i, kctop(i))
192            IF(ldcum(i).AND.ktype(i).EQ.1.AND.zpbmpt.LT.2.E4)ktype(i)=2            IF(ldcum(i) .AND. ktype(i) == 1 .AND. zpbmpt < 2E4) ktype(i) = 2
193            IF(ldcum(i)) ictop0(i)=kctop(i)            IF(ldcum(i)) ictop0(i)=kctop(i)
194            IF(ktype(i).EQ.2) zentr(i)=ENTRSCV            IF(ktype(i) == 2) zentr(i)=ENTRSCV
195         ENDDO         ENDDO
196    
197         IF (lmfdd) THEN  ! si l'on considere le panache descendant         IF (lmfdd) THEN ! si l'on considere le panache descendant
198            ! calculer la precipitation issue du panache ascendant pour            ! calculer la precipitation issue du panache ascendant pour
199            ! determiner l'existence du panache descendant dans la convection            ! determiner l'existence du panache descendant dans la convection
200            DO i = 1, klon            DO i = 1, klon
201               zrfl(i)=zdmfup(i,1)               zrfl(i)=zdmfup(i, 1)
202            ENDDO            ENDDO
203            DO k=2,klev            DO k=2, klev
204               DO i = 1, klon               DO i = 1, klon
205                  zrfl(i)=zrfl(i)+zdmfup(i,k)                  zrfl(i)=zrfl(i)+zdmfup(i, k)
206               ENDDO               ENDDO
207            ENDDO            ENDDO
208    
209            ! determiner le LFS (level of free sinking: niveau de plonge libre)            ! determiner le LFS (level of free sinking: niveau de plonge libre)
210            CALL flxdlfs(ztenh, zqenh, zgeoh, paph, ptu, pqu, &            CALL flxdlfs(ztenh, zqenh, zgeoh, paph, ptu, pqu, &
211                 ldcum,    kcbot,    kctop,    zmfub,    zrfl, &                 ldcum, kcbot, kctop, mfub, zrfl, &
212                 ptd,      pqd, &                 ptd, pqd, &
213                 pmfd,     zmfds,    zmfdq,    zdmfdp, &                 mfd, zmfds, zmfdq, zdmfdp, &
214                 kdtop,    lddraf)                 kdtop, lddraf)
215    
216            ! calculer le panache descendant            ! calculer le panache descendant
217            CALL flxddraf(ztenh,    zqenh, &            CALL flxddraf(ztenh, zqenh, &
218                 zgeoh,    paph,     zrfl, &                 zgeoh, paph, zrfl, &
219                 ptd,      pqd, &                 ptd, pqd, &
220                 pmfd,     zmfds,    zmfdq,    zdmfdp, &                 mfd, zmfds, zmfdq, zdmfdp, &
221                 lddraf, pen_d, pde_d)                 lddraf, pen_d, pde_d)
222    
223            ! calculer de nouveau le flux de masse entrant a travers la base            ! calculer de nouveau le flux de masse entrant a travers la base
# Line 218  contains Line 226  contains
226            DO i = 1, klon            DO i = 1, klon
227               IF (lddraf(i)) THEN               IF (lddraf(i)) THEN
228                  ikb = kcbot(i)                  ikb = kcbot(i)
229                  llo1 = PMFD(i,ikb).LT.0.                  llo1 = MFD(i, ikb) < 0.
230                  zeps = 0.                  zeps = 0.
231                  IF ( llo1 ) zeps = CMFDEPS                  IF (llo1) zeps = CMFDEPS
232                  zqumqe = pqu(i,ikb)+plu(i,ikb)- &                  zqumqe = pqu(i, ikb)+plu(i, ikb)- &
233                       zeps*pqd(i,ikb)-(1.-zeps)*zqenh(i,ikb)                       zeps*pqd(i, ikb)-(1.-zeps)*zqenh(i, ikb)
234                  zdqmin = MAX(0.01*zqenh(i,ikb),1.E-10)                  zdqmin = MAX(0.01*zqenh(i, ikb), 1.E-10)
235                  zmfmax = (paph(i,ikb)-paph(i,ikb-1)) / (RG*pdtime)                  zmfmax = (paph(i, ikb)-paph(i, ikb-1)) / (RG*dtime)
236                  IF (zdqpbl(i).GT.0..AND.zqumqe.GT.zdqmin.AND.ldcum(i) &                  IF (zdqpbl(i) > 0..AND.zqumqe > zdqmin.AND.ldcum(i) &
237                       .AND.zmfub(i).LT.zmfmax) THEN                       .AND.mfub(i) < zmfmax) THEN
238                     zmfub1(i) = zdqpbl(i) / (RG*MAX(zqumqe,zdqmin))                     mfub1(i) = zdqpbl(i) / (RG*MAX(zqumqe, zdqmin))
239                  ELSE                  ELSE
240                     zmfub1(i) = zmfub(i)                     mfub1(i) = mfub(i)
241                  ENDIF                  ENDIF
242                  IF (ktype(i).EQ.2) THEN                  IF (ktype(i) == 2) THEN
243                     zdh = RCPD*(ptu(i,ikb)-zeps*ptd(i,ikb)- &                     zdh = RCPD*(ptu(i, ikb)-zeps*ptd(i, ikb)- &
244                          (1.-zeps)*ztenh(i,ikb))+RLVTT*zqumqe                          (1.-zeps)*ztenh(i, ikb))+RLVTT*zqumqe
245                     zdh = RG * MAX(zdh,1.0E5*zdqmin)                     zdh = RG * MAX(zdh, 1.0E5*zdqmin)
246                     IF (zdhpbl(i).GT.0..AND.ldcum(i))zmfub1(i)=zdhpbl(i)/zdh                     IF (zdhpbl(i) > 0..AND.ldcum(i))mfub1(i)=zdhpbl(i)/zdh
247                  ENDIF                  ENDIF
248                  IF ( .NOT.((ktype(i).EQ.1.OR.ktype(i).EQ.2).AND. &                  IF (.NOT. ((ktype(i) == 1 .OR. ktype(i) == 2) .AND. &
249                       ABS(zmfub1(i)-zmfub(i)).LT.0.2*zmfub(i)) ) &                       ABS(mfub1(i)-mfub(i)) < 0.2*mfub(i))) &
250                       zmfub1(i) = zmfub(i)                       mfub1(i) = mfub(i)
251               ENDIF               ENDIF
252            ENDDO            ENDDO
253            DO k = 1, klev            DO k = 1, klev
254               DO i = 1, klon               DO i = 1, klon
255                  IF (lddraf(i)) THEN                  IF (lddraf(i)) THEN
256                     zfac = zmfub1(i)/MAX(zmfub(i),1.E-10)                     zfac = mfub1(i)/MAX(mfub(i), 1.E-10)
257                     pmfd(i,k) = pmfd(i,k)*zfac                     mfd(i, k) = mfd(i, k)*zfac
258                     zmfds(i,k) = zmfds(i,k)*zfac                     zmfds(i, k) = zmfds(i, k)*zfac
259                     zmfdq(i,k) = zmfdq(i,k)*zfac                     zmfdq(i, k) = zmfdq(i, k)*zfac
260                     zdmfdp(i,k) = zdmfdp(i,k)*zfac                     zdmfdp(i, k) = zdmfdp(i, k)*zfac
261                     pen_d(i,k) = pen_d(i,k)*zfac                     pen_d(i, k) = pen_d(i, k)*zfac
262                     pde_d(i,k) = pde_d(i,k)*zfac                     pde_d(i, k) = pde_d(i, k)*zfac
263                  ENDIF                  ENDIF
264               ENDDO               ENDDO
265            ENDDO            ENDDO
266            DO i = 1, klon            DO i = 1, klon
267               IF (lddraf(i)) zmfub(i)=zmfub1(i)               IF (lddraf(i)) mfub(i)=mfub1(i)
268            ENDDO            ENDDO
269         ENDIF   ! fin de test sur lmfdd         ENDIF ! fin de test sur lmfdd
270    
271         ! calculer de nouveau le panache ascendant         ! calculer de nouveau le panache ascendant
272    
273         CALL flxasc(pdtime,ztenh, zqenh, pten, pqen, pqsen, &         CALL flxasc(dtime, ztenh, zqenh, ten, qen, qsen, pgeo, zgeoh, pap, &
274              pgeo, zgeoh, pap, paph, pqte, pvervel, &              paph, pqte, pvervel, ldland, ldcum, ktype, ilab, ptu, pqu, plu, &
275              ldland, ldcum, ktype, ilab, &              mfu, mfub, zentr, mfus, mfuq, mful, plude, zdmfup, kcbot, &
276              ptu, pqu, plu, pmfu, zmfub, zentr, &              kctop, ictop0, kcum, pen_u, pde_u)
             zmfus, zmfuq, zmful, plude, zdmfup, &  
             kcbot, kctop, ictop0, kcum, pen_u, pde_u)  
277    
278         ! determiner les flux convectifs en forme finale, ainsi que         ! Déterminer les flux convectifs en forme finale, ainsi que la
279         ! la quantite des precipitations         ! quantité des précipitations
280    
281         CALL flxflux(pdtime, pqen, pqsen, ztenh, zqenh, pap, paph,  &         CALL flxflux(dtime, qen, qsen, ztenh, zqenh, pap, paph, &
282              ldland, zgeoh, kcbot, kctop, lddraf, kdtop, ktype, ldcum, &              ldland, zgeoh, kcbot, kctop, lddraf, kdtop, ktype, ldcum, &
283              pmfu, pmfd, zmfus, zmfds, zmfuq, zmfdq, zmful, plude, &              mfu, mfd, mfus, zmfds, mfuq, zmfdq, mful, plude, &
284              zdmfup, zdmfdp, pten, prsfc, pssfc, zdpmel, itopm2, &              zdmfup, zdmfdp, ten, prsfc, pssfc, zdpmel, itopm2, &
285              pmflxr, pmflxs)              pmflxr, pmflxs)
286    
287         ! calculer les tendances pour T et Q         ! calculer les tendances pour T et Q
288    
289         CALL flxdtdq(itopm2, paph, ldcum, pten, &         CALL flxdtdq(itopm2, paph, ldcum, ten, mfus, zmfds, mfuq, zmfdq, &
290              zmfus, zmfds, zmfuq, zmfdq, zmful, zdmfup, zdmfdp, zdpmel, &              mful, zdmfup, zdmfdp, zdpmel, dt_con, dq_con)
291              dt_con,dq_con)      end IF kcum_not_zero
     end IF  
292    
293    END SUBROUTINE flxmain    END SUBROUTINE flxmain
294    

Legend:
Removed from v.63  
changed lines
  Added in v.71

  ViewVC Help
Powered by ViewVC 1.1.21