11 |
USE dimphy, ONLY: klev, klon |
USE dimphy, ONLY: klev, klon |
12 |
USE suphec_m, ONLY: rcpd, retv, rg, rlvtt |
USE suphec_m, ONLY: rcpd, retv, rg, rlvtt |
13 |
USE yoethf_m, ONLY: r4les, r5les |
USE yoethf_m, ONLY: r4les, r5les |
14 |
USE yoecumf, ONLY: cmfdeps, entrpen, entrscv, lmfdd |
USE yoecumf, ONLY: flxsetup, cmfdeps, entrpen, entrscv, lmfdd |
|
use flxsetup_m, only: flxsetup |
|
15 |
|
|
16 |
|
REAL, intent(in):: pdtime |
17 |
REAL pten(klon,klev), pqen(klon,klev), pqsen(klon,klev) |
REAL pten(klon,klev), pqen(klon,klev), pqsen(klon,klev) |
18 |
REAL ptte(klon,klev) |
REAL ptte(klon,klev) |
19 |
REAL pqte(klon,klev) |
REAL pqte(klon,klev) |
25 |
REAL plude(klon,klev) |
REAL plude(klon,klev) |
26 |
REAL pmfu(klon,klev) |
REAL pmfu(klon,klev) |
27 |
REAL prsfc(klon), pssfc(klon) |
REAL prsfc(klon), pssfc(klon) |
28 |
INTEGER kcbot(klon), kctop(klon), ktype(klon) |
INTEGER kcbot(klon), kctop(klon), ktype(klon) |
29 |
LOGICAL ldland(klon), ldcum(klon) |
LOGICAL ldland(klon), ldcum(klon) |
30 |
|
|
31 |
REAL ztenh(klon,klev), zqenh(klon,klev), zqsenh(klon,klev) |
REAL ztenh(klon,klev), zqenh(klon,klev), zqsenh(klon,klev) |
32 |
REAL zgeoh(klon,klev) |
REAL zgeoh(klon,klev) |
38 |
REAL zrfl(klon) |
REAL zrfl(klon) |
39 |
REAL pmflxr(klon,klev+1) |
REAL pmflxr(klon,klev+1) |
40 |
REAL pmflxs(klon,klev+1) |
REAL pmflxs(klon,klev+1) |
41 |
INTEGER ilab(klon,klev), ictop0(klon) |
INTEGER ilab(klon,klev), ictop0(klon) |
42 |
LOGICAL llo1 |
LOGICAL llo1 |
43 |
REAL dt_con(klon,klev), dq_con(klon,klev) |
REAL dt_con(klon,klev), dq_con(klon,klev) |
44 |
REAL zmfmax, zdh |
REAL zmfmax, zdh |
|
REAL, intent(in):: pdtime |
|
45 |
real zqumqe, zdqmin, zalvdcp, zhsat, zzz |
real zqumqe, zdqmin, zalvdcp, zhsat, zzz |
46 |
REAL zhhat, zpbmpt, zgam, zeps, zfac |
REAL zhhat, zpbmpt, zgam, zeps, zfac |
47 |
INTEGER i, k, ikb, itopm2, kcum |
INTEGER i, k, ikb, itopm2, kcum |
113 |
DO i = 1, klon |
DO i = 1, klon |
114 |
ktype(i) = 2 |
ktype(i) = 2 |
115 |
if (zdqcv(i).GT.MAX(0.,-1.5*pqhfl(i)*RG)) ktype(i) = 1 |
if (zdqcv(i).GT.MAX(0.,-1.5*pqhfl(i)*RG)) ktype(i) = 1 |
116 |
!cc if (zdqcv(i).GT.MAX(0.,-1.1*pqhfl(i)*RG)) ktype(i) = 1 |
!cc if (zdqcv(i).GT.MAX(0.,-1.1*pqhfl(i)*RG)) ktype(i) = 1 |
117 |
ENDDO |
ENDDO |
118 |
|
|
119 |
! determiner le flux de masse entrant a travers la base. |
! determiner le flux de masse entrant a travers la base. |
143 |
! DETERMINE CLOUD ASCENT FOR ENTRAINING PLUME |
! DETERMINE CLOUD ASCENT FOR ENTRAINING PLUME |
144 |
|
|
145 |
! (A) calculer d'abord la hauteur "theorique" de la tour convective sans |
! (A) calculer d'abord la hauteur "theorique" de la tour convective sans |
146 |
! considerer l'entrainement ni le detrainement du panache, sachant |
! considerer l'entrainement ni le detrainement du panache, sachant |
147 |
! ces derniers peuvent abaisser la hauteur theorique. |
! ces derniers peuvent abaisser la hauteur theorique. |
148 |
|
|
149 |
DO i = 1, klon |
DO i = 1, klon |
150 |
ikb=kcbot(i) |
ikb=kcbot(i) |
157 |
DO i = 1, klon |
DO i = 1, klon |
158 |
zhsat=RCPD*ztenh(i,k)+zgeoh(i,k)+RLVTT*zqsenh(i,k) |
zhsat=RCPD*ztenh(i,k)+zgeoh(i,k)+RLVTT*zqsenh(i,k) |
159 |
zgam=R5LES*zalvdcp*zqsenh(i,k)/ & |
zgam=R5LES*zalvdcp*zqsenh(i,k)/ & |
160 |
((1.-RETV *zqsenh(i,k))*(ztenh(i,k)-R4LES)**2) |
((1.-RETV *zqsenh(i,k))*(ztenh(i,k)-R4LES)**2) |
161 |
zzz=RCPD*ztenh(i,k)*0.608 |
zzz=RCPD*ztenh(i,k)*0.608 |
162 |
zhhat=zhsat-(zzz+zgam*zzz)/(1.+zgam*zzz/RLVTT)* & |
zhhat=zhsat-(zzz+zgam*zzz)/(1.+zgam*zzz/RLVTT)* & |
163 |
MAX(zqsenh(i,k)-zqenh(i,k),0.) |
MAX(zqsenh(i,k)-zqenh(i,k),0.) |
185 |
IF(ktype(i).EQ.2) zentr(i)=ENTRSCV |
IF(ktype(i).EQ.2) zentr(i)=ENTRSCV |
186 |
ENDDO |
ENDDO |
187 |
|
|
188 |
IF (lmfdd) THEN ! si l'on considere le panache descendant |
IF (lmfdd) THEN ! si l'on considere le panache descendant |
189 |
! calculer la precipitation issue du panache ascendant pour |
! calculer la precipitation issue du panache ascendant pour |
190 |
! determiner l'existence du panache descendant dans la convection |
! determiner l'existence du panache descendant dans la convection |
191 |
DO i = 1, klon |
DO i = 1, klon |
199 |
|
|
200 |
! determiner le LFS (level of free sinking: niveau de plonge libre) |
! determiner le LFS (level of free sinking: niveau de plonge libre) |
201 |
CALL flxdlfs(ztenh, zqenh, zgeoh, paph, ptu, pqu, & |
CALL flxdlfs(ztenh, zqenh, zgeoh, paph, ptu, pqu, & |
202 |
ldcum, kcbot, kctop, zmfub, zrfl, & |
ldcum, kcbot, kctop, zmfub, zrfl, & |
203 |
ptd, pqd, & |
ptd, pqd, & |
204 |
pmfd, zmfds, zmfdq, zdmfdp, & |
pmfd, zmfds, zmfdq, zdmfdp, & |
205 |
kdtop, lddraf) |
kdtop, lddraf) |
206 |
|
|
207 |
! calculer le panache descendant |
! calculer le panache descendant |
208 |
CALL flxddraf(ztenh, zqenh, & |
CALL flxddraf(ztenh, zqenh, & |
209 |
zgeoh, paph, zrfl, & |
zgeoh, paph, zrfl, & |
210 |
ptd, pqd, & |
ptd, pqd, & |
211 |
pmfd, zmfds, zmfdq, zdmfdp, & |
pmfd, zmfds, zmfdq, zdmfdp, & |
212 |
lddraf, pen_d, pde_d) |
lddraf, pen_d, pde_d) |
213 |
|
|
214 |
! calculer de nouveau le flux de masse entrant a travers la base |
! calculer de nouveau le flux de masse entrant a travers la base |
257 |
DO i = 1, klon |
DO i = 1, klon |
258 |
IF (lddraf(i)) zmfub(i)=zmfub1(i) |
IF (lddraf(i)) zmfub(i)=zmfub1(i) |
259 |
ENDDO |
ENDDO |
260 |
ENDIF ! fin de test sur lmfdd |
ENDIF ! fin de test sur lmfdd |
261 |
|
|
262 |
! calculer de nouveau le panache ascendant |
! calculer de nouveau le panache ascendant |
263 |
|
|
271 |
! determiner les flux convectifs en forme finale, ainsi que |
! determiner les flux convectifs en forme finale, ainsi que |
272 |
! la quantite des precipitations |
! la quantite des precipitations |
273 |
|
|
274 |
CALL flxflux(pdtime, pqen, pqsen, ztenh, zqenh, pap, paph, & |
CALL flxflux(pdtime, pqen, pqsen, ztenh, zqenh, pap, paph, & |
275 |
ldland, zgeoh, kcbot, kctop, lddraf, kdtop, ktype, ldcum, & |
ldland, zgeoh, kcbot, kctop, lddraf, kdtop, ktype, ldcum, & |
276 |
pmfu, pmfd, zmfus, zmfds, zmfuq, zmfdq, zmful, plude, & |
pmfu, pmfd, zmfus, zmfds, zmfuq, zmfdq, zmful, plude, & |
277 |
zdmfup, zdmfdp, pten, prsfc, pssfc, zdpmel, itopm2, & |
zdmfup, zdmfdp, pten, prsfc, pssfc, zdpmel, itopm2, & |