Newer
Older
!MNH_LIC Copyright 2013-2021 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!-----------------------------------------------------------------
! ###########################
MODULE MODD_PARAM_LIMA_COLD
! ###########################
!> @file
!!**** *MODD_PARAM_LIMA_COLD* - declaration of some descriptive parameters and
!! microphysical factors extensively used in
!! the LIMA cold scheme.
!! AUTHOR
!! ------
!! J.-P. Pinty *Laboratoire d'Aerologie*
!! S. Berthet * Laboratoire d'Aerologie*
!! B. Vié * Laboratoire d'Aerologie*
!!
!! MODIFICATIONS
!! -------------
!! Original ??/??/13
!! C. Barthe 14/03/2022 add CIBU and RDSF
! J. Wurtz 03/2022: new snow characteristics
! M. Taufour 07/2022: add concentration for snow, graupel, hail
!!
!-------------------------------------------------------------------------------
USE MODD_PARAMETERS, ONLY: JPSVNAMELGTMAX
!
IMPLICIT NONE
!
!* 1. DESCRIPTIVE PARAMETERS
! ----------------------
!
! Declaration of microphysical constants, including the descriptive
! parameters for the raindrop and the ice crystal habits, and the
! parameters relevant of the dimensional distributions.
!
! m(D) = XAx * D**XBx : Mass-MaxDim relationship
! v(D) = XCx * D**XDx : Fallspeed-MaxDim relationship
! N(Lbda) = XCCx * Lbda**XCXx : NumberConc-Slopeparam relationship
! XF0x, XF1x, XF2x : Ventilation factors
! XC1x : Shape parameter for deposition
!
! and
!
! XALPHAx, XNUx : Generalized GAMMA law
! Lbda = XLBx * (r_x*rho_dref)**XLBEXx : Slope parameter of the
! distribution law
!
TYPE PARAM_LIMA_COLD_t
REAL :: XLBEXI,XLBI ! Prist. ice distribution parameters
REAL :: XLBEXS,XLBS,XNS ! Snow/agg. distribution parameters
REAL :: XAI,XBI,XC_I,XDI ,XF0I,XF2I,XC1I ! Cloud ice charact.
REAL :: XF0IS,XF1IS ! (large Di vent. coef.)

Marie TAUFOUR
committed
REAL :: XDELTAI, XGAMMAI ! cloud ice area-diameter parameters
REAL :: XAS,XBS,XCS,XDS,XCCS,XCXS,XF0S,XF1S,XC1S ! Snow/agg. charact.
REAL :: XLBDAS_MIN, XLBDAS_MAX ! Max values allowed for the shape parameter of snow
REAL :: XFVELOS ! Wurtz - snow fall speed parameterizaed after Thompson 2008
REAL :: XTRANS_MP_GAMMAS ! Wurtz - change between lambda value for MP and gen. gamma

Marie TAUFOUR
committed
REAL :: XREFFI ! constante for ice crystal effective radius for ecRad
!
!-------------------------------------------------------------------------------
!
!* 2. MICROPHYSICAL FACTORS
! ---------------------
!
REAL :: XFSEDRI,XFSEDCI, & ! Constants for sedimentation
XFSEDRS,XFSEDCS, & !
XFSEDS, XEXSEDS ! fluxes of ice and snow
REAL :: XNUC_DEP,XEXSI_DEP,XEX_DEP, & ! Constants for heterogeneous
XNUC_CON,XEXTT_CON,XEX_CON, & ! ice nucleation : DEP et CON
XMNU0 ! mass of nucleated ice crystal
REAL :: XRHOI_HONH,XCEXP_DIFVAP_HONH, & ! Constants for homogeneous
XCOEF_DIFVAP_HONH,XRCOEF_HONH, & ! haze freezing : HHONI
XCRITSAT1_HONH,XCRITSAT2_HONH, &
XTMIN_HONH,XTMAX_HONH, &
XDLNJODT1_HONH,XDLNJODT2_HONH, &
XC1_HONH,XC2_HONH,XC3_HONH
!
REAL :: XC_HONC,XR_HONC, & ! Constants for homogeneous
XTEXP1_HONC,XTEXP2_HONC, & ! droplet freezing : CHONI
XTEXP3_HONC,XTEXP4_HONC, &
XTEXP5_HONC
!
REAL :: XCSCNVI_MAX, XLBDASCNVI_MAX, &
XRHORSMIN, &
XDSCNVI_LIM, XLBDASCNVI_LIM, & ! Constants for snow
XC0DEPSI,XC1DEPSI, & ! sublimation conversion to
XR0DEPSI,XR1DEPSI ! pristine ice : SCNVI
!
REAL :: XSCFAC, & ! Constants for the Bergeron
X0DEPI,X2DEPI, & ! Findeisen process and
X0DEPS,X1DEPS,XEX0DEPS,XEX1DEPS ! deposition
!
REAL :: XDICNVS_LIM, XLBDAICNVS_LIM, & ! Constants for pristine ice
XC0DEPIS,XC1DEPIS, & ! deposition conversion to
XR0DEPIS,XR1DEPIS ! snow : ICNVS
!
REAL :: XCOLEXIS, & ! Constants for snow
XAGGS_CLARGE1,XAGGS_CLARGE2, & ! aggregation : AGG
XAGGS_RLARGE1,XAGGS_RLARGE2, &
XFIAGGS,XEXIAGGS
!
REAL :: XACCS1, XSPONBUDS1, XSPONBUDS2, & ! Constant for snow
XSPONBUDS3, XSPONCOEFS2 ! spontaneous break-up
!
!??????????????????
REAL :: XKER_ZRNIC_A1,XKER_ZRNIC_A2 ! Long-Zrnic Kernels (ini_ice_coma)
REAL :: XSELFI,XCOLEXII ! Constants for pristine ice
! self-collection (ini_ice_coma)
!
REAL,DIMENSION(:,:), ALLOCATABLE :: XKER_N_SSCS
REAL :: XCOLSS,XCOLEXSS,XFNSSCS, & !
XLBNSSCS1,XLBNSSCS2, & ! Constants for snow self collection
XSCINTP1S,XSCINTP2S !
INTEGER :: NSCLBDAS !
REAL :: XAUTO3, XAUTO4, & ! Constants for pristine ice
XLAUTS, XLAUTS_THRESHOLD, & ! autoconversion : AUT
XITAUTS, XITAUTS_THRESHOLD, & ! (ini_ice_com)
XTEXAUTI
!
REAL :: XCONCI_MAX ! Limitation of the pristine
! ice concentration (init and grid-nesting)
REAL :: XFREFFI ! Factor to compute the cloud ice effective radius
REAL :: XALPHA1
REAL :: XALPHA2
REAL :: XBETA1
REAL :: XBETA2
REAL :: XNU10
REAL :: XNU20
END TYPE PARAM_LIMA_COLD_t
!
TYPE(PARAM_LIMA_COLD_t), TARGET, SAVE :: PARAM_LIMA_COLD
!
REAL, POINTER :: XLBEXI => NULL(), &
XLBI => NULL(), &
XLBEXS => NULL(), &
XLBS => NULL(), &
XNS => NULL(), &
XAI => NULL(), &
XBI => NULL(), &

Marie TAUFOUR
committed
XGAMMAI => NULL(), &
XDELTAI => NULL(), &
XC_I => NULL(), &
XDI => NULL(), &
XF0I => NULL(), &
XF2I => NULL(), &
XC1I => NULL(), &
XF0IS => NULL(), &
XF1IS => NULL(), &
XAS => NULL(), &
XBS => NULL(), &
XCS => NULL(), &
XDS => NULL(), &
XCCS => NULL(), &
XCXS => NULL(), &
XF0S => NULL(), &
XF1S => NULL(), &
XC1S => NULL(), &
XLBDAS_MIN => NULL(), &
XLBDAS_MAX => NULL(), &
XFVELOS => NULL(), &
XTRANS_MP_GAMMAS => NULL(), &

Marie TAUFOUR
committed
XREFFI => NULL(), &
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
XFSEDRI => NULL(), &
XFSEDCI => NULL(), &
XFSEDRS => NULL(), &
XFSEDCS => NULL(), &
XFSEDS => NULL(), &
XEXSEDS => NULL(), &
XNUC_DEP => NULL(), &
XEXSI_DEP => NULL(), &
XEX_DEP => NULL(), &
XNUC_CON => NULL(), &
XEXTT_CON => NULL(), &
XEX_CON => NULL(), &
XMNU0 => NULL(), &
XRHOI_HONH => NULL(), &
XCEXP_DIFVAP_HONH => NULL(), &
XCOEF_DIFVAP_HONH => NULL(), &
XRCOEF_HONH => NULL(), &
XCRITSAT1_HONH => NULL(), &
XCRITSAT2_HONH => NULL(), &
XTMIN_HONH => NULL(), &
XTMAX_HONH => NULL(), &
XDLNJODT1_HONH => NULL(), &
XDLNJODT2_HONH => NULL(), &
XC1_HONH => NULL(), &
XC2_HONH => NULL(), &
XC3_HONH => NULL(), &
XC_HONC => NULL(), &
XR_HONC => NULL(), &
XTEXP1_HONC => NULL(), &
XTEXP2_HONC => NULL(), &
XTEXP3_HONC => NULL(), &
XTEXP4_HONC => NULL(), &
XTEXP5_HONC => NULL(), &
XCSCNVI_MAX => NULL(), &
XLBDASCNVI_MAX => NULL(), &
XRHORSMIN => NULL(), &
XDSCNVI_LIM => NULL(), &
XLBDASCNVI_LIM => NULL(), &
XC0DEPSI => NULL(), &
XC1DEPSI => NULL(), &
XR0DEPSI => NULL(), &
XR1DEPSI => NULL(), &
XSCFAC => NULL(), &
X0DEPI => NULL(), &
X2DEPI => NULL(), &
X0DEPS => NULL(), &
X1DEPS => NULL(), &
XEX0DEPS => NULL(), &
XEX1DEPS => NULL(), &
XDICNVS_LIM => NULL(), &
XLBDAICNVS_LIM => NULL(), &
XC0DEPIS => NULL(), &
XC1DEPIS => NULL(), &
XR0DEPIS => NULL(), &
XR1DEPIS => NULL(), &
XCOLEXIS => NULL(), &
XAGGS_CLARGE1 => NULL(), &
XAGGS_CLARGE2 => NULL(), &
XAGGS_RLARGE1 => NULL(), &
XAGGS_RLARGE2 => NULL(), &
XFIAGGS => NULL(), &
XEXIAGGS => NULL(), &
XACCS1 => NULL(), &
XSPONBUDS1 => NULL(), &
XSPONBUDS2 => NULL(), &
XSPONBUDS3 => NULL(), &
XSPONCOEFS2 => NULL(), &
XKER_ZRNIC_A1 => NULL(), &
XKER_ZRNIC_A2 => NULL(), &
XSELFI => NULL(), &
XCOLEXII => NULL(), &
XCOLSS => NULL(), &
XCOLEXSS => NULL(), &
XFNSSCS => NULL(), &
XLBNSSCS1 => NULL(), &
XLBNSSCS2 => NULL(), &
XSCINTP1S => NULL(), &
XSCINTP2S => NULL(), &
XAUTO3 => NULL(), &
XAUTO4 => NULL(), &
XLAUTS => NULL(), &
XLAUTS_THRESHOLD => NULL(), &
XITAUTS => NULL(), &
XITAUTS_THRESHOLD => NULL(), &
XTEXAUTI => NULL(), &
XCONCI_MAX => NULL(), &
XFREFFI => NULL(), &
XALPHA1 => NULL(), &
XALPHA2 => NULL(), &
XBETA1 => NULL(), &
XBETA2 => NULL(), &
XNU10 => NULL(), &
XNU20 => NULL()
INTEGER, POINTER :: NSCLBDAS => NULL()
REAL,DIMENSION(:,:),POINTER :: XKER_N_SSCS => NULL()
CHARACTER(LEN=JPSVNAMELGTMAX),DIMENSION(8),PARAMETER &
:: CLIMA_COLD_NAMES=(/'CICE ','CSNOW ','CGRAUPEL','CHAIL ',&
'CIFNFREE','CIFNNUCL', &
'CCNINIMM','CCCNNUCL'/)
! basenames of the SV articles stored
! in the binary files
!with IF:Ice-nuclei Free (nonactivated IFN by Dep/Cond)
! IN:Ice-nuclei Nucleated (activated IFN by Dep/Cond)
! NI:Nuclei Immersed (activated IFN by Imm)
! HF:Homogeneous Freezing
CHARACTER(LEN=JPSVNAMELGTMAX),DIMENSION(8),PARAMETER &
:: CLIMA_COLD_CONC=(/'NI ','NS ','NG ','NH ','NIF','NIN','NNI','NNH'/)!for DIAG
!
CONTAINS
SUBROUTINE PARAM_LIMA_COLD_ASSOCIATE()
IMPLICIT NONE
IF(.NOT. ASSOCIATED(XLBEXI)) THEN
XLBEXI => PARAM_LIMA_COLD%XLBEXI
XLBI => PARAM_LIMA_COLD%XLBI
XLBEXS => PARAM_LIMA_COLD%XLBEXS
XLBS => PARAM_LIMA_COLD%XLBS
XNS => PARAM_LIMA_COLD%XNS
XAI => PARAM_LIMA_COLD%XAI
XBI => PARAM_LIMA_COLD%XBI

Marie TAUFOUR
committed
XGAMMAI => PARAM_LIMA_COLD%XGAMMAI
XDELTAI => PARAM_LIMA_COLD%XDELTAI
XC_I => PARAM_LIMA_COLD%XC_I
XDI => PARAM_LIMA_COLD%XDI
XF0I => PARAM_LIMA_COLD%XF0I
XF2I => PARAM_LIMA_COLD%XF2I
XC1I => PARAM_LIMA_COLD%XC1I
XF0IS => PARAM_LIMA_COLD%XF0IS
XF1IS => PARAM_LIMA_COLD%XF1IS
XAS => PARAM_LIMA_COLD%XAS
XBS => PARAM_LIMA_COLD%XBS
XCS => PARAM_LIMA_COLD%XCS
XDS => PARAM_LIMA_COLD%XDS
XCCS => PARAM_LIMA_COLD%XCCS
XCXS => PARAM_LIMA_COLD%XCXS
XF0S => PARAM_LIMA_COLD%XF0S
XF1S => PARAM_LIMA_COLD%XF1S
XC1S => PARAM_LIMA_COLD%XC1S
XLBDAS_MIN => PARAM_LIMA_COLD%XLBDAS_MIN
XLBDAS_MAX => PARAM_LIMA_COLD%XLBDAS_MAX
XFVELOS => PARAM_LIMA_COLD%XFVELOS
XTRANS_MP_GAMMAS => PARAM_LIMA_COLD%XTRANS_MP_GAMMAS

Marie TAUFOUR
committed
XREFFI => PARAM_LIMA_COLD%XREFFI
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
XFSEDRI => PARAM_LIMA_COLD%XFSEDRI
XFSEDCI => PARAM_LIMA_COLD%XFSEDCI
XFSEDRS => PARAM_LIMA_COLD%XFSEDRS
XFSEDCS => PARAM_LIMA_COLD%XFSEDCS
XFSEDS => PARAM_LIMA_COLD%XFSEDS
XEXSEDS => PARAM_LIMA_COLD%XEXSEDS
XNUC_DEP => PARAM_LIMA_COLD%XNUC_DEP
XEXSI_DEP => PARAM_LIMA_COLD%XEXSI_DEP
XEX_DEP => PARAM_LIMA_COLD%XEX_DEP
XNUC_CON => PARAM_LIMA_COLD%XNUC_CON
XEXTT_CON => PARAM_LIMA_COLD%XEXTT_CON
XEX_CON => PARAM_LIMA_COLD%XEX_CON
XMNU0 => PARAM_LIMA_COLD%XMNU0
XRHOI_HONH => PARAM_LIMA_COLD%XRHOI_HONH
XCEXP_DIFVAP_HONH => PARAM_LIMA_COLD%XCEXP_DIFVAP_HONH
XCOEF_DIFVAP_HONH => PARAM_LIMA_COLD%XCOEF_DIFVAP_HONH
XRCOEF_HONH => PARAM_LIMA_COLD%XRCOEF_HONH
XCRITSAT1_HONH => PARAM_LIMA_COLD%XCRITSAT1_HONH
XCRITSAT2_HONH => PARAM_LIMA_COLD%XCRITSAT2_HONH
XTMIN_HONH => PARAM_LIMA_COLD%XTMIN_HONH
XTMAX_HONH => PARAM_LIMA_COLD%XTMAX_HONH
XDLNJODT1_HONH => PARAM_LIMA_COLD%XDLNJODT1_HONH
XDLNJODT2_HONH => PARAM_LIMA_COLD%XDLNJODT2_HONH
XC1_HONH => PARAM_LIMA_COLD%XC1_HONH
XC2_HONH => PARAM_LIMA_COLD%XC2_HONH
XC3_HONH => PARAM_LIMA_COLD%XC3_HONH
XC_HONC => PARAM_LIMA_COLD%XC_HONC
XR_HONC => PARAM_LIMA_COLD%XR_HONC
XTEXP1_HONC => PARAM_LIMA_COLD%XTEXP1_HONC
XTEXP2_HONC => PARAM_LIMA_COLD%XTEXP2_HONC
XTEXP3_HONC => PARAM_LIMA_COLD%XTEXP3_HONC
XTEXP4_HONC => PARAM_LIMA_COLD%XTEXP4_HONC
XTEXP5_HONC => PARAM_LIMA_COLD%XTEXP5_HONC
XCSCNVI_MAX => PARAM_LIMA_COLD%XCSCNVI_MAX
XLBDASCNVI_MAX => PARAM_LIMA_COLD%XLBDASCNVI_MAX
XRHORSMIN => PARAM_LIMA_COLD%XRHORSMIN
XDSCNVI_LIM => PARAM_LIMA_COLD%XDSCNVI_LIM
XLBDASCNVI_LIM => PARAM_LIMA_COLD%XLBDASCNVI_LIM
XC0DEPSI => PARAM_LIMA_COLD%XC0DEPSI
XC1DEPSI => PARAM_LIMA_COLD%XC1DEPSI
XR0DEPSI => PARAM_LIMA_COLD%XR0DEPSI
XR1DEPSI => PARAM_LIMA_COLD%XR1DEPSI
XSCFAC => PARAM_LIMA_COLD%XSCFAC
X0DEPI => PARAM_LIMA_COLD%X0DEPI
X2DEPI => PARAM_LIMA_COLD%X2DEPI
X0DEPS => PARAM_LIMA_COLD%X0DEPS
X1DEPS => PARAM_LIMA_COLD%X1DEPS
XEX0DEPS => PARAM_LIMA_COLD%XEX0DEPS
XEX1DEPS => PARAM_LIMA_COLD%XEX1DEPS
XDICNVS_LIM => PARAM_LIMA_COLD%XDICNVS_LIM
XLBDAICNVS_LIM => PARAM_LIMA_COLD%XLBDAICNVS_LIM
XC0DEPIS => PARAM_LIMA_COLD%XC0DEPIS
XC1DEPIS => PARAM_LIMA_COLD%XC1DEPIS
XR0DEPIS => PARAM_LIMA_COLD%XR0DEPIS
XR1DEPIS => PARAM_LIMA_COLD%XR1DEPIS
XCOLEXIS => PARAM_LIMA_COLD%XCOLEXIS
XAGGS_CLARGE1 => PARAM_LIMA_COLD%XAGGS_CLARGE1
XAGGS_CLARGE2 => PARAM_LIMA_COLD%XAGGS_CLARGE2
XAGGS_RLARGE1 => PARAM_LIMA_COLD%XAGGS_RLARGE1
XAGGS_RLARGE2 => PARAM_LIMA_COLD%XAGGS_RLARGE2
XFIAGGS => PARAM_LIMA_COLD%XFIAGGS
XEXIAGGS => PARAM_LIMA_COLD%XEXIAGGS
XACCS1 => PARAM_LIMA_COLD%XACCS1
XSPONBUDS1 => PARAM_LIMA_COLD%XSPONBUDS1
XSPONBUDS2 => PARAM_LIMA_COLD%XSPONBUDS2
XSPONBUDS3 => PARAM_LIMA_COLD%XSPONBUDS3
XSPONCOEFS2 => PARAM_LIMA_COLD%XSPONCOEFS2
XKER_ZRNIC_A1 => PARAM_LIMA_COLD%XKER_ZRNIC_A1
XKER_ZRNIC_A2 => PARAM_LIMA_COLD%XKER_ZRNIC_A2
XSELFI => PARAM_LIMA_COLD%XSELFI
XCOLEXII => PARAM_LIMA_COLD%XCOLEXII
XCOLSS => PARAM_LIMA_COLD%XCOLSS
XCOLEXSS => PARAM_LIMA_COLD%XCOLEXSS
XFNSSCS => PARAM_LIMA_COLD%XFNSSCS
XLBNSSCS1 => PARAM_LIMA_COLD%XLBNSSCS1
XLBNSSCS2 => PARAM_LIMA_COLD%XLBNSSCS2
XSCINTP1S => PARAM_LIMA_COLD%XSCINTP1S
XSCINTP2S => PARAM_LIMA_COLD%XSCINTP2S
XAUTO3 => PARAM_LIMA_COLD%XAUTO3
XAUTO4 => PARAM_LIMA_COLD%XAUTO4
XLAUTS => PARAM_LIMA_COLD%XLAUTS
XLAUTS_THRESHOLD => PARAM_LIMA_COLD%XLAUTS_THRESHOLD
XITAUTS => PARAM_LIMA_COLD%XITAUTS
XITAUTS_THRESHOLD => PARAM_LIMA_COLD%XITAUTS_THRESHOLD
XTEXAUTI => PARAM_LIMA_COLD%XTEXAUTI
XCONCI_MAX => PARAM_LIMA_COLD%XCONCI_MAX
XFREFFI => PARAM_LIMA_COLD%XFREFFI
XALPHA1 => PARAM_LIMA_COLD%XALPHA1
XALPHA2 => PARAM_LIMA_COLD%XALPHA2
XBETA1 => PARAM_LIMA_COLD%XBETA1
XBETA2 => PARAM_LIMA_COLD%XBETA2
XNU10 => PARAM_LIMA_COLD%XNU10
XNU20 => PARAM_LIMA_COLD%XNU20
NSCLBDAS => PARAM_LIMA_COLD%NSCLBDAS
ENDIF
END SUBROUTINE PARAM_LIMA_COLD_ASSOCIATE
!
SUBROUTINE PARAM_LIMA_COLD_ALLOCATE(HNAME, KDIM1, KDIM2)
IMPLICIT NONE
CHARACTER(LEN=*), INTENT(IN) :: HNAME
INTEGER, INTENT(IN) :: KDIM1
INTEGER, INTENT(IN) :: KDIM2
SELECT CASE(TRIM(HNAME))
CASE('XKER_N_SSCS')
ALLOCATE(PARAM_LIMA_COLD%XKER_N_SSCS(KDIM1, KDIM2))
XKER_N_SSCS => PARAM_LIMA_COLD%XKER_N_SSCS
END SELECT
END SUBROUTINE PARAM_LIMA_COLD_ALLOCATE
!-------------------------------------------------------------------------------
!
END MODULE MODD_PARAM_LIMA_COLD