@@ -9,9 +9,11 @@ SUBROUTINE ARO_SHALLOW_MF(PHYEX,&
9
9
PSFTH ,PSFRV , &
10
10
PTHM ,PRM , &
11
11
PUM ,PVM ,PTKEM ,PSVM , &
12
- PDUDT_MF ,PDVDT_MF , &
12
+ PDUDT_MF ,PDVDT_MF ,PDTKEDT_MF , &
13
13
PDTHLDT_MF ,PDRTDT_MF ,PDSVDT_MF , &
14
- PSIGMF ,PRC_MF ,PRI_MF ,PCF_MF ,PFLXZTHVMF , &
14
+ PSIGMF ,PRC_MF ,PRI_MF ,PCF_MF , &
15
+ PHLC_HRC_MF , PHLC_HCF_MF , PHLI_HRI_MF , PHLI_HCF_MF , &
16
+ PWEIGHT_MF_CLOUD , PFLXZTHVMF , PFLXZUMF , PFLXZVMF , &
15
17
PTHL_UP ,PRT_UP ,PRV_UP ,PRC_UP ,PRI_UP , &
16
18
PU_UP , PV_UP , PTHV_UP , PW_UP , PFRAC_UP , PEMF , &
17
19
YDDDH ,YDLDDH ,YDMDDH )
@@ -57,6 +59,10 @@ SUBROUTINE ARO_SHALLOW_MF(PHYEX,&
57
59
! ! Y. Seity : new arguments for EDMF scheme 04/2009
58
60
! ! S. Riette 18 May 2010: aro_shallow_mf and shallow_mf interfaces changed
59
61
! ! S. Riette Jan 2012: support for both order of vertical levels
62
+ ! ! A. Marcel Jan 2025: EDMF contribution to dynamic TKE production
63
+ ! ! A. Marcel Jan 2025: TKE mixing
64
+ ! ! A. Marcel Jan 2025: bi-Gaussian PDF and associated subgrid precipitation
65
+ ! ! A. Marcel Jan 2025: relaxation of the small fraction assumption
60
66
! !
61
67
!- ------------------------------------------------------------------------------
62
68
!
@@ -75,6 +81,8 @@ SUBROUTINE ARO_SHALLOW_MF(PHYEX,&
75
81
USE YOMLDDH, ONLY : TLDDH
76
82
USE YOMMDDH, ONLY : TMDDH
77
83
!
84
+ USE YOMLSFORC, ONLY: LMUSCLFA, NMUSCLFA
85
+ !
78
86
IMPLICIT NONE
79
87
!
80
88
! * 0.1 Declarations of dummy arguments :
@@ -122,12 +130,17 @@ SUBROUTINE ARO_SHALLOW_MF(PHYEX,&
122
130
! variables for EDMF scheme
123
131
REAL , DIMENSION (KLON,KLEV), INTENT (OUT ):: PDUDT_MF ! tendency of U by massflux scheme
124
132
REAL , DIMENSION (KLON,KLEV), INTENT (OUT ):: PDVDT_MF ! tendency of V by massflux scheme
133
+ REAL , DIMENSION (KLON,KLEV), INTENT (OUT ):: PDTKEDT_MF ! tendency of TKE by massflux scheme
125
134
REAL , DIMENSION (KLON,KLEV), INTENT (OUT ):: PDTHLDT_MF ! tendency of thl by massflux scheme
126
135
REAL , DIMENSION (KLON,KLEV), INTENT (OUT ):: PDRTDT_MF ! tendency of rt by massflux scheme
127
136
REAL , DIMENSION (KLON,KLEV,KSV), INTENT (OUT ):: PDSVDT_MF ! tendency of Sv by massflux scheme
128
137
129
138
REAL , DIMENSION (KLON,KLEV), INTENT (OUT ) :: PSIGMF,PRC_MF,PRI_MF,PCF_MF ! cloud info for the cloud scheme
139
+ REAL , DIMENSION (KLON,KLEV), INTENT (OUT ) :: PHLC_HRC_MF, PHLC_HCF_MF, PHLI_HRI_MF, PHLI_HCF_MF ! high/low cloud diagnostics
140
+ REAL , DIMENSION (KLON,KLEV), INTENT (OUT ) :: PWEIGHT_MF_CLOUD ! weight coefficient for the mass-flux cloud
130
141
REAL , DIMENSION (KLON,KLEV), INTENT (OUT ) :: PFLXZTHVMF ! Thermal production for TKE scheme
142
+ REAL , DIMENSION (KLON,KLEV), INTENT (OUT ) :: PFLXZUMF ! Dynamic production for TKE scheme
143
+ REAL , DIMENSION (KLON,KLEV), INTENT (OUT ) :: PFLXZVMF ! Dynamic production for TKE scheme
131
144
REAL , DIMENSION (KLON,KLEV), INTENT (INOUT ) :: PTHL_UP ! Thl updraft characteristics
132
145
REAL , DIMENSION (KLON,KLEV), INTENT (INOUT ) :: PRT_UP ! Rt updraft characteristics
133
146
REAL , DIMENSION (KLON,KLEV), INTENT (INOUT ) :: PRV_UP ! Vapor updraft characteristics
@@ -148,13 +161,17 @@ SUBROUTINE ARO_SHALLOW_MF(PHYEX,&
148
161
! * 0.2 Declarations of local variables :
149
162
!
150
163
TYPE (TBUDGETDATA), DIMENSION (NBUDGET_SV1) :: YLBUDGET ! NBUDGET_SV1 is the one with the highest number needed for shallow_mf
151
- INTEGER , DIMENSION (size (PRHODJ,1 )) :: IKLCL,IKETL,IKCTL
152
- REAL ,DIMENSION (size (PRHODJ,1 ),size (PRHODJ,2 )) :: ZFLXZTHMF,ZFLXZRMF,ZFLXZUMF,ZFLXZVMF
153
- REAL ,DIMENSION (size (PRHODJ,1 ),size (PRHODJ,2 )) :: ZDETR,ZENTR
164
+ INTEGER , DIMENSION (KLON) :: IKLCL,IKETL,IKCTL
165
+ REAL ,DIMENSION (KLON,KLEV) :: ZFLXZTHMF,ZFLXZRMF,ZFLXZTKEMF
166
+ REAL ,DIMENSION (KLON,KLEV) :: ZDETR,ZENTR
167
+ REAL ,DIMENSION (KLON,KLEV) :: ZTKE_UP
168
+ REAL ,DIMENSION (size (PRHODJ,1 ),size (PRHODJ,2 )) :: ZW
154
169
TYPE (DIMPHYEX_t) :: YLDIMPHYEX
155
170
REAL (KIND= JPHOOK) :: ZHOOK_HANDLE
156
171
INTEGER :: JBU ! Loop index for budgets
157
172
!
173
+ #include " wrarom.intfb.h"
174
+ !
158
175
!
159
176
!
160
177
!- -----------------------------------------------------------------------------
@@ -205,7 +222,7 @@ SUBROUTINE ARO_SHALLOW_MF(PHYEX,&
205
222
!
206
223
! ---------------------------------
207
224
!
208
- CALL SHALLOW_MF(YLDIMPHYEX, PHYEX% CST, PHYEX% NEBN, PHYEX% PARAM_MFSHALLN, PHYEX% TURBN, PHYEX% CSTURB, &
225
+ CALL SHALLOW_MF(YLDIMPHYEX, PHYEX% CST, PHYEX% NEBN, PHYEX% PARAM_MFSHALLN, PHYEX% TURBN, PHYEX% CSTURB, PHYEX % RAIN_ICE_PARAMN, &
209
226
&KRR= KRR, KRRL= KRRL, KRRI= KRRI, KSV= KSV, &
210
227
&ONOMIXLG= PHYEX% MISC% ONOMIXLG,KSV_LGBEG= KSV_LGBEG,KSV_LGEND= KSV_LGEND, &
211
228
&PTSTEP= PTSTEP, &
@@ -214,12 +231,14 @@ SUBROUTINE ARO_SHALLOW_MF(PHYEX,&
214
231
&PPABSM= PPABSM,PEXNM= PEXNM, &
215
232
&PSFTH= PSFTH,PSFRV= PSFRV, &
216
233
&PTHM= PTHM,PRM= PRM,PUM= PUM,PVM= PVM,PTKEM= PTKEM,PSVM= PSVM, &
217
- &PDUDT_MF= PDUDT_MF,PDVDT_MF= PDVDT_MF, &
234
+ &PDUDT_MF= PDUDT_MF,PDVDT_MF= PDVDT_MF,PDTKEDT_MF = PDTKEDT_MF, &
218
235
&PDTHLDT_MF= PDTHLDT_MF,PDRTDT_MF= PDRTDT_MF,PDSVDT_MF= PDSVDT_MF, &
219
- &PSIGMF= PSIGMF,PRC_MF= PRC_MF,PRI_MF= PRI_MF,PCF_MF= PCF_MF,PFLXZTHVMF= PFLXZTHVMF, &
220
- &PFLXZTHMF= ZFLXZTHMF,PFLXZRMF= ZFLXZRMF,PFLXZUMF= ZFLXZUMF,PFLXZVMF= ZFLXZVMF, &
236
+ &PSIGMF= PSIGMF,PRC_MF= PRC_MF,PRI_MF= PRI_MF,PCF_MF= PCF_MF, &
237
+ &PHLC_HRC= PHLC_HRC_MF, PHLC_HCF= PHLC_HCF_MF, PHLI_HRI= PHLI_HRI_MF, PHLI_HCF= PHLI_HCF_MF,&
238
+ &PWEIGHT_MF_CLOUD= PWEIGHT_MF_CLOUD, PFLXZTHVMF= PFLXZTHVMF, &
239
+ &PFLXZTHMF= ZFLXZTHMF,PFLXZRMF= ZFLXZRMF,PFLXZUMF= PFLXZUMF,PFLXZVMF= PFLXZVMF,PFLXZTKEMF= ZFLXZTKEMF, &
221
240
&PTHL_UP= PTHL_UP,PRT_UP= PRT_UP,PRV_UP= PRV_UP,PRC_UP= PRC_UP,PRI_UP= PRI_UP, &
222
- &PU_UP= PU_UP, PV_UP= PV_UP, PTHV_UP= PTHV_UP, PW_UP= PW_UP, &
241
+ &PU_UP= PU_UP, PV_UP= PV_UP, PTKE_UP = ZTKE_UP, PTHV_UP= PTHV_UP, PW_UP= PW_UP, &
223
242
&PFRAC_UP= PFRAC_UP,PEMF= PEMF,PDETR= ZDETR,PENTR= ZENTR, &
224
243
&KKLCL= IKLCL,KKETL= IKETL,KKCTL= IKCTL,PDX= PDX,PDY= PDY, &
225
244
&BUCONF= PHYEX% MISC% TBUCONF, TBUDGETS= YLBUDGET, KBUDGETS= SIZE (YLBUDGET) )
@@ -233,5 +252,44 @@ SUBROUTINE ARO_SHALLOW_MF(PHYEX,&
233
252
!
234
253
! -----------------------------------------------
235
254
!
255
+ IF (LMUSCLFA) THEN
256
+ ! Some updraft variables are initialised with environmental values.
257
+ ! ZW mask must be used to suppress those values, for variables on flux levels
258
+ ZW= 1 .
259
+ WHERE (PFRAC_UP== 0 .) ZW= 0 .
260
+
261
+ ! Variables on flux levels
262
+ CALL WRAROM(NMUSCLFA, ' MF' , PEMF* ZW, &
263
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .TRUE. )
264
+ CALL WRAROM(NMUSCLFA, ' CF_MF' , PCF_MF, &
265
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .FALSE. )
266
+ CALL WRAROM(NMUSCLFA, ' ZWU' , PW_UP* ZW, &
267
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .TRUE. )
268
+ CALL WRAROM(NMUSCLFA, ' PUDAL' , PFRAC_UP* ZW, &
269
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .TRUE. )
270
+ CALL WRAROM(NMUSCLFA, ' ZEPSILON_U' , ZENTR, &
271
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .FALSE. )
272
+ CALL WRAROM(NMUSCLFA, ' ZDELTA_U' , ZDETR, &
273
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .FALSE. )
274
+ CALL WRAROM(NMUSCLFA, ' PQLSHCONV' , PRC_UP/ (1 .+ PRT_UP)* ZW, &
275
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .TRUE. )
276
+ CALL WRAROM(NMUSCLFA, ' PQISHCONV' , PRI_UP/ (1 .+ PRT_UP)* ZW, &
277
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .TRUE. )
278
+ CALL WRAROM(NMUSCLFA, ' PQU' , PRV_UP/ (1 .+ PRT_UP)* ZW, &
279
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .TRUE. )
280
+ CALL WRAROM(NMUSCLFA, ' THV_UP' , PTHV_UP* ZW, &
281
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .TRUE. )
282
+ CALL WRAROM(NMUSCLFA, ' RT_UP' , PRT_UP* ZW, &
283
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .TRUE. )
284
+ CALL WRAROM(NMUSCLFA, ' TKE_UP' , ZTKE_UP* ZW, &
285
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .TRUE. )
286
+ CALL WRAROM(NMUSCLFA, ' WE_UP' , ZFLXZTKEMF* ZW, &
287
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .TRUE. )
288
+ CALL WRAROM(NMUSCLFA, ' WRT_UP' , ZFLXZRMF* ZW, &
289
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .TRUE. )
290
+ CALL WRAROM(NMUSCLFA, ' WTHL_UP' , ZFLXZTHMF* ZW, &
291
+ KLON, YLDIMPHYEX% NKT, YLDIMPHYEX% NKB, YLDIMPHYEX% NKE, YLDIMPHYEX% NKL, .TRUE. )
292
+ ENDIF
293
+ !
236
294
IF (LHOOK) CALL DR_HOOK(' ARO_SHALLOW_MF' ,1 ,ZHOOK_HANDLE)
237
295
END SUBROUTINE ARO_SHALLOW_MF
0 commit comments