/[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

trunk/libf/phylmd/Conflx/flxmain.f90 revision 64 by guez, Wed Aug 29 14:47:17 2012 UTC trunk/phylmd/Conflx/flxmain.f90 revision 76 by guez, Fri Nov 15 18:45:49 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
     USE yoethf_m, ONLY: r4les, r5les  
17      USE yoecumf, ONLY: flxsetup, cmfdeps, entrpen, entrscv, lmfdd      USE yoecumf, ONLY: flxsetup, cmfdeps, entrpen, entrscv, lmfdd
18        USE yoethf_m, ONLY: r4les, r5les
19    
20      REAL, intent(in):: pdtime      REAL, intent(in):: dtime
21      REAL pten(klon,klev), pqen(klon,klev), pqsen(klon,klev)      REAL, intent(in):: ten(klon, klev)
22      REAL ptte(klon,klev)      real, intent(in):: qen(klon, klev)
23      REAL pqte(klon,klev)      real, intent(inout):: qsen(klon, klev)
24      REAL pvervel(klon,klev)      REAL, intent(in):: pqhfl(klon)
25      REAL pgeo(klon,klev), pap(klon,klev), paph(klon,klev+1)      real pap(klon, klev), paph(klon, klev+1)
26      REAL pqhfl(klon)      REAL, intent(in):: pgeo(klon, klev)
27        LOGICAL ldland(klon)
28      REAL ptu(klon,klev), pqu(klon,klev), plu(klon,klev)      REAL ptte(klon, klev)
29      REAL plude(klon,klev)      REAL pqte(klon, klev)
30      REAL pmfu(klon,klev)      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)
     REAL pmflxs(klon,klev+1)  
     INTEGER ilab(klon,klev), ictop0(klon)  
57      LOGICAL llo1      LOGICAL llo1
     REAL dt_con(klon,klev), dq_con(klon,klev)  
58      REAL zmfmax, zdh      REAL zmfmax, zdh
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 63  contains Line 74  contains
74         firstcal = .FALSE.         firstcal = .FALSE.
75      ENDIF      ENDIF
76    
77      DO i = 1, klon      ldcum = .FALSE.
78         ldcum(i) = .FALSE.      dt_con = 0.
79      ENDDO      dq_con = 0.
80      DO k = 1, klev  
81         DO i = 1, klon      ! Initialiser les variables et faire l'interpolation verticale :
82            dt_con(i,k) = 0.0      CALL flxini(ten, qen, qsen, pgeo, paph, zgeoh, ztenh, zqenh, zqsenh, &
83            dq_con(i,k) = 0.0           ptu, pqu, ptd, pqd, mfd, zmfds, zmfdq, zdmfdp, mfu, mfus, mfuq, &
84         ENDDO           zdmfup, zdpmel, plu, plude, ilab, pen_u, pde_u, pen_d, pde_d)
85      ENDDO  
86        ! Déterminer les valeurs au niveau de base de la tour convective :
87      ! initialiser les variables et faire l'interpolation verticale      CALL flxbase(ztenh, zqenh, zgeoh, paph, ptu, pqu, plu, ldcum, kcbot, ilab)
88    
89      CALL flxini(pten, pqen, pqsen, pgeo, &      ! Calculer la convergence totale de l'humidité et celle en
90           paph, zgeoh, ztenh, zqenh, zqsenh, &      ! provenance de la couche limite, plus précisément, la convergence
91           ptu, pqu, ptd, pqd, pmfd, zmfds, zmfdq, zdmfdp, &      ! intégrée entre le sol et la base de la convection. Cette
92           pmfu, zmfus, zmfuq, zdmfup, &      ! dernière convergence est comparée avec l'&vaporation obtenue
93           zdpmel, plu, plude, ilab, pen_u, pde_u, pen_d, pde_d)      ! dans la couche limite pour déterminer le type de la convection.
94    
95      ! determiner les valeurs au niveau de base de la tour convective      zdqcv = pqte(:, 1) * (paph(:, 2) - paph(:, 1))
96        zdhpbl = 0.
97      CALL flxbase(ztenh, zqenh, zgeoh, paph, &      zdqpbl = 0.
          ptu, pqu, plu, ldcum, kcbot, ilab)  
   
     ! calculer la convergence totale de l'humidite et celle en provenance  
     ! de la couche limite, plus precisement, la convergence integree entre  
     ! le sol et la base de la convection. Cette derniere convergence est  
     ! comparee avec l'evaporation obtenue dans la couche limite pour  
     ! determiner le type de la convection  
   
     k=1  
     DO i = 1, klon  
        zdqcv(i) = pqte(i,k)*(paph(i,k+1)-paph(i,k))  
        zdhpbl(i) = 0.0  
        zdqpbl(i) = 0.0  
     ENDDO  
98    
99      DO k=2,klev      DO k=2, klev
100         DO i = 1, klon         DO i = 1, klon
101            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))
102            IF (k.GE.kcbot(i)) THEN            IF (k.GE.kcbot(i)) THEN
103               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))
104               zdhpbl(i)=zdhpbl(i)+(RCPD*ptte(i,k)+RLVTT*pqte(i,k)) &               zdhpbl(i)=zdhpbl(i)+(RCPD*ptte(i, k)+RLVTT*pqte(i, k)) &
105                    *(paph(i,k+1)-paph(i,k))                    *(paph(i, k+1)-paph(i, k))
106            ENDIF            ENDIF
107         ENDDO         ENDDO
108      ENDDO      ENDDO
109    
110      DO i = 1, klon      DO i = 1, klon
111         ktype(i) = 2         if (zdqcv(i) > MAX(0., - 1.5 * pqhfl(i) * RG)) then
112         if (zdqcv(i).GT.MAX(0.,-1.5*pqhfl(i)*RG)) ktype(i) = 1            ktype(i) = 1
113         !cc if (zdqcv(i).GT.MAX(0.,-1.1*pqhfl(i)*RG)) ktype(i) = 1         else
114              ktype(i) = 2
115           end if
116      ENDDO      ENDDO
117    
118      ! determiner le flux de masse entrant a travers la base.      ! Déterminer le flux de masse entrant à travers la base. On
119      ! on ignore, pour l'instant, l'effet du panache descendant      ! ignore, pour l'instant, l'effet du panache descendant
120    
121      DO i = 1, klon      DO i = 1, klon
122         ikb=kcbot(i)         ikb=kcbot(i)
123         zqumqe=pqu(i,ikb)+plu(i,ikb)-zqenh(i,ikb)         zqumqe=pqu(i, ikb)+plu(i, ikb)-zqenh(i, ikb)
124         zdqmin=MAX(0.01*zqenh(i,ikb),1.E-10)         zdqmin=MAX(0.01*zqenh(i, ikb), 1.E-10)
125         IF (zdqpbl(i).GT.0..AND.zqumqe.GT.zdqmin.AND.ldcum(i)) THEN         IF (zdqpbl(i) > 0..AND.zqumqe > zdqmin.AND.ldcum(i)) THEN
126            zmfub(i) = zdqpbl(i)/(RG*MAX(zqumqe,zdqmin))            mfub(i) = zdqpbl(i)/(RG*MAX(zqumqe, zdqmin))
127         ELSE         ELSE
128            zmfub(i) = 0.01            mfub(i) = 0.01
129            ldcum(i)=.FALSE.            ldcum(i)=.FALSE.
130         ENDIF         ENDIF
131         IF (ktype(i).EQ.2) THEN         IF (ktype(i) == 2) THEN
132            zdh = RCPD*(ptu(i,ikb)-ztenh(i,ikb)) + RLVTT*zqumqe            zdh = RCPD*(ptu(i, ikb)-ztenh(i, ikb)) + RLVTT*zqumqe
133            zdh = RG * MAX(zdh,1.0E5*zdqmin)            zdh = RG * MAX(zdh, 1.0E5*zdqmin)
134            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
135         ENDIF         ENDIF
136         zmfmax = (paph(i,ikb)-paph(i,ikb-1)) / (RG*pdtime)         zmfmax = (paph(i, ikb)-paph(i, ikb-1)) / (RG*dtime)
137         zmfub(i) = MIN(zmfub(i),zmfmax)         mfub(i) = MIN(mfub(i), zmfmax)
138         zentr(i) = ENTRSCV         zentr(i) = ENTRSCV
139         IF (ktype(i).EQ.1) zentr(i) = ENTRPEN         IF (ktype(i) == 1) zentr(i) = ENTRPEN
140      ENDDO      ENDDO
141    
142      ! DETERMINE CLOUD ASCENT FOR ENTRAINING PLUME      ! DETERMINE CLOUD ASCENT FOR ENTRAINING PLUME
# Line 148  contains Line 147  contains
147    
148      DO i = 1, klon      DO i = 1, klon
149         ikb=kcbot(i)         ikb=kcbot(i)
150         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)
151         ictop0(i)=kcbot(i)-1         ictop0(i)=kcbot(i)-1
152      ENDDO      ENDDO
153    
154      zalvdcp=RLVTT/RCPD      zalvdcp=RLVTT/RCPD
155      DO k=klev-1,3,-1      DO k=klev-1, 3, -1
156         DO i = 1, klon         DO i = 1, klon
157            zhsat=RCPD*ztenh(i,k)+zgeoh(i,k)+RLVTT*zqsenh(i,k)            zhsat=RCPD*ztenh(i, k)+zgeoh(i, k)+RLVTT*zqsenh(i, k)
158            zgam=R5LES*zalvdcp*zqsenh(i,k)/ &            zgam=R5LES*zalvdcp*zqsenh(i, k)/ &
159                 ((1.-RETV *zqsenh(i,k))*(ztenh(i,k)-R4LES)**2)                 ((1.-RETV *zqsenh(i, k))*(ztenh(i, k)-R4LES)**2)
160            zzz=RCPD*ztenh(i,k)*0.608            zzz=RCPD*ztenh(i, k)*0.608
161            zhhat=zhsat-(zzz+zgam*zzz)/(1.+zgam*zzz/RLVTT)* &            zhhat=zhsat-(zzz+zgam*zzz)/(1.+zgam*zzz/RLVTT)* &
162                 MAX(zqsenh(i,k)-zqenh(i,k),0.)                 MAX(zqsenh(i, k)-zqenh(i, k), 0.)
163            IF(k.LT.ictop0(i).AND.zhcbase(i).GT.zhhat) ictop0(i)=k            IF(k < ictop0(i).AND.zhcbase(i) > zhhat) ictop0(i)=k
164         ENDDO         ENDDO
165      ENDDO      ENDDO
166    
167      ! (B) calculer le panache ascendant      ! (B) calculer le panache ascendant
168    
169      CALL flxasc(pdtime,ztenh, zqenh, pten, pqen, pqsen, &      CALL flxasc(dtime, ztenh, zqenh, ten, qen, qsen, pgeo, zgeoh, pap, &
170           pgeo, zgeoh, pap, paph, pqte, pvervel, &           paph, pqte, pvervel, ldland, ldcum, ktype, ilab, ptu, pqu, plu, &
171           ldland, ldcum, ktype, ilab, &           mfu, mfub, zentr, mfus, mfuq, mful, plude, zdmfup, kcbot, &
172           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)  
173    
174      IF (kcum /= 0) then      kcum_not_zero: IF (kcum /= 0) then
175         ! verifier l'epaisseur de la convection et changer eventuellement         ! verifier l'epaisseur de la convection et changer eventuellement
176         ! le taux d'entrainement/detrainement         ! le taux d'entrainement/detrainement
177    
178         DO i = 1, klon         DO i = 1, klon
179            zpbmpt=paph(i,kcbot(i))-paph(i,kctop(i))            zpbmpt=paph(i, kcbot(i))-paph(i, kctop(i))
180            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
181            IF(ldcum(i)) ictop0(i)=kctop(i)            IF(ldcum(i)) ictop0(i)=kctop(i)
182            IF(ktype(i).EQ.2) zentr(i)=ENTRSCV            IF(ktype(i) == 2) zentr(i)=ENTRSCV
183         ENDDO         ENDDO
184    
185         IF (lmfdd) THEN ! si l'on considere le panache descendant         downdraft: IF (lmfdd) THEN
186              ! si l'on considere le panache descendant
187            ! calculer la precipitation issue du panache ascendant pour            ! calculer la precipitation issue du panache ascendant pour
188            ! determiner l'existence du panache descendant dans la convection            ! determiner l'existence du panache descendant dans la convection
189            DO i = 1, klon            DO i = 1, klon
190               zrfl(i)=zdmfup(i,1)               zrfl(i)=zdmfup(i, 1)
191            ENDDO            ENDDO
192            DO k=2,klev            DO k=2, klev
193               DO i = 1, klon               DO i = 1, klon
194                  zrfl(i)=zrfl(i)+zdmfup(i,k)                  zrfl(i)=zrfl(i)+zdmfup(i, k)
195               ENDDO               ENDDO
196            ENDDO            ENDDO
197    
198            ! determiner le LFS (level of free sinking: niveau de plonge libre)            ! determiner le LFS (level of free sinking: niveau de plonge libre)
199            CALL flxdlfs(ztenh, zqenh, zgeoh, paph, ptu, pqu, &            CALL flxdlfs(ztenh, zqenh, zgeoh, paph, ptu, pqu, &
200                 ldcum, kcbot, kctop, zmfub, zrfl, &                 ldcum, kcbot, kctop, mfub, zrfl, &
201                 ptd, pqd, &                 ptd, pqd, &
202                 pmfd, zmfds, zmfdq, zdmfdp, &                 mfd, zmfds, zmfdq, zdmfdp, &
203                 kdtop, lddraf)                 kdtop, lddraf)
204    
205            ! calculer le panache descendant            ! calculer le panache descendant
206            CALL flxddraf(ztenh, zqenh, &            CALL flxddraf(ztenh, zqenh, &
207                 zgeoh, paph, zrfl, &                 zgeoh, paph, zrfl, &
208                 ptd, pqd, &                 ptd, pqd, &
209                 pmfd, zmfds, zmfdq, zdmfdp, &                 mfd, zmfds, zmfdq, zdmfdp, &
210                 lddraf, pen_d, pde_d)                 lddraf, pen_d, pde_d)
211    
212            ! 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 217  contains Line 215  contains
215            DO i = 1, klon            DO i = 1, klon
216               IF (lddraf(i)) THEN               IF (lddraf(i)) THEN
217                  ikb = kcbot(i)                  ikb = kcbot(i)
218                  llo1 = PMFD(i,ikb).LT.0.                  llo1 = MFD(i, ikb) < 0.
219                  zeps = 0.                  zeps = 0.
220                  IF ( llo1 ) zeps = CMFDEPS                  IF (llo1) zeps = CMFDEPS
221                  zqumqe = pqu(i,ikb)+plu(i,ikb)- &                  zqumqe = pqu(i, ikb)+plu(i, ikb)- &
222                       zeps*pqd(i,ikb)-(1.-zeps)*zqenh(i,ikb)                       zeps*pqd(i, ikb)-(1.-zeps)*zqenh(i, ikb)
223                  zdqmin = MAX(0.01*zqenh(i,ikb),1.E-10)                  zdqmin = MAX(0.01*zqenh(i, ikb), 1.E-10)
224                  zmfmax = (paph(i,ikb)-paph(i,ikb-1)) / (RG*pdtime)                  zmfmax = (paph(i, ikb)-paph(i, ikb-1)) / (RG*dtime)
225                  IF (zdqpbl(i).GT.0..AND.zqumqe.GT.zdqmin.AND.ldcum(i) &                  IF (zdqpbl(i) > 0..AND.zqumqe > zdqmin.AND.ldcum(i) &
226                       .AND.zmfub(i).LT.zmfmax) THEN                       .AND.mfub(i) < zmfmax) THEN
227                     zmfub1(i) = zdqpbl(i) / (RG*MAX(zqumqe,zdqmin))                     mfub1(i) = zdqpbl(i) / (RG*MAX(zqumqe, zdqmin))
228                  ELSE                  ELSE
229                     zmfub1(i) = zmfub(i)                     mfub1(i) = mfub(i)
230                  ENDIF                  ENDIF
231                  IF (ktype(i).EQ.2) THEN                  IF (ktype(i) == 2) THEN
232                     zdh = RCPD*(ptu(i,ikb)-zeps*ptd(i,ikb)- &                     zdh = RCPD*(ptu(i, ikb)-zeps*ptd(i, ikb)- &
233                          (1.-zeps)*ztenh(i,ikb))+RLVTT*zqumqe                          (1.-zeps)*ztenh(i, ikb))+RLVTT*zqumqe
234                     zdh = RG * MAX(zdh,1.0E5*zdqmin)                     zdh = RG * MAX(zdh, 1.0E5*zdqmin)
235                     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
236                  ENDIF                  ENDIF
237                  IF ( .NOT.((ktype(i).EQ.1.OR.ktype(i).EQ.2).AND. &                  IF (.NOT. ((ktype(i) == 1 .OR. ktype(i) == 2) .AND. &
238                       ABS(zmfub1(i)-zmfub(i)).LT.0.2*zmfub(i)) ) &                       ABS(mfub1(i)-mfub(i)) < 0.2*mfub(i))) &
239                       zmfub1(i) = zmfub(i)                       mfub1(i) = mfub(i)
240               ENDIF               ENDIF
241            ENDDO            ENDDO
242            DO k = 1, klev            DO k = 1, klev
243               DO i = 1, klon               DO i = 1, klon
244                  IF (lddraf(i)) THEN                  IF (lddraf(i)) THEN
245                     zfac = zmfub1(i)/MAX(zmfub(i),1.E-10)                     zfac = mfub1(i)/MAX(mfub(i), 1.E-10)
246                     pmfd(i,k) = pmfd(i,k)*zfac                     mfd(i, k) = mfd(i, k)*zfac
247                     zmfds(i,k) = zmfds(i,k)*zfac                     zmfds(i, k) = zmfds(i, k)*zfac
248                     zmfdq(i,k) = zmfdq(i,k)*zfac                     zmfdq(i, k) = zmfdq(i, k)*zfac
249                     zdmfdp(i,k) = zdmfdp(i,k)*zfac                     zdmfdp(i, k) = zdmfdp(i, k)*zfac
250                     pen_d(i,k) = pen_d(i,k)*zfac                     pen_d(i, k) = pen_d(i, k)*zfac
251                     pde_d(i,k) = pde_d(i,k)*zfac                     pde_d(i, k) = pde_d(i, k)*zfac
252                  ENDIF                  ENDIF
253               ENDDO               ENDDO
254            ENDDO            ENDDO
255            DO i = 1, klon            DO i = 1, klon
256               IF (lddraf(i)) zmfub(i)=zmfub1(i)               IF (lddraf(i)) mfub(i)=mfub1(i)
257            ENDDO            ENDDO
258         ENDIF ! fin de test sur lmfdd         ENDIF downdraft
259    
260         ! calculer de nouveau le panache ascendant         ! calculer de nouveau le panache ascendant
261    
262         CALL flxasc(pdtime,ztenh, zqenh, pten, pqen, pqsen, &         CALL flxasc(dtime, ztenh, zqenh, ten, qen, qsen, pgeo, zgeoh, pap, &
263              pgeo, zgeoh, pap, paph, pqte, pvervel, &              paph, pqte, pvervel, ldland, ldcum, ktype, ilab, ptu, pqu, plu, &
264              ldland, ldcum, ktype, ilab, &              mfu, mfub, zentr, mfus, mfuq, mful, plude, zdmfup, kcbot, &
265              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)  
266    
267         ! determiner les flux convectifs en forme finale, ainsi que         ! Déterminer les flux convectifs en forme finale, ainsi que la
268         ! la quantite des precipitations         ! quantité des précipitations
269    
270         CALL flxflux(pdtime, pqen, pqsen, ztenh, zqenh, pap, paph, &         CALL flxflux(dtime, qen, qsen, ztenh, zqenh, pap, paph, &
271              ldland, zgeoh, kcbot, kctop, lddraf, kdtop, ktype, ldcum, &              ldland, zgeoh, kcbot, kctop, lddraf, kdtop, ktype, ldcum, &
272              pmfu, pmfd, zmfus, zmfds, zmfuq, zmfdq, zmful, plude, &              mfu, mfd, mfus, zmfds, mfuq, zmfdq, mful, plude, &
273              zdmfup, zdmfdp, pten, prsfc, pssfc, zdpmel, itopm2, &              zdmfup, zdmfdp, ten, prsfc, pssfc, zdpmel, itopm2, &
274              pmflxr, pmflxs)              pmflxr, pmflxs)
275    
276         ! calculer les tendances pour T et Q         ! calculer les tendances pour T et Q
277    
278         CALL flxdtdq(itopm2, paph, ldcum, pten, &         CALL flxdtdq(itopm2, paph, ldcum, ten, mfus, zmfds, mfuq, zmfdq, &
279              zmfus, zmfds, zmfuq, zmfdq, zmful, zdmfup, zdmfdp, zdpmel, &              mful, zdmfup, zdmfdp, zdpmel, dt_con, dq_con)
280              dt_con,dq_con)      end IF kcum_not_zero
     end IF  
281    
282    END SUBROUTINE flxmain    END SUBROUTINE flxmain
283    

Legend:
Removed from v.64  
changed lines
  Added in v.76

  ViewVC Help
Powered by ViewVC 1.1.21