From 002e41962837005800aca4b5862d720f854a7cc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Riette?= <sebastien.riette@meteo.fr> Date: Wed, 29 Jun 2022 11:05:39 +0200 Subject: [PATCH] S. Riette 29/06/2022 first version of main_rain_ice test program --- src/common/micro/ini_rain_ice.F90 | 62 ++-- src/mesonh/micro/ini_rain_ice.f90 | 4 +- ...ata_mod.F90 => getdata_ice_adjust_mod.F90} | 4 +- src/testprogs/ice_adjust/main_ice_adjust.F90 | 4 +- src/testprogs/rain_ice/main_rain_ice.F90 | 304 ++++++++++++++++++ .../xrd_getoptions.F90 | 0 .../{ice_adjust => support}/xrd_unix_env.F90 | 0 7 files changed, 341 insertions(+), 37 deletions(-) rename src/testprogs/ice_adjust/{getdata_mod.F90 => getdata_ice_adjust_mod.F90} (99%) create mode 100644 src/testprogs/rain_ice/main_rain_ice.F90 rename src/testprogs/{ice_adjust => support}/xrd_getoptions.F90 (100%) rename src/testprogs/{ice_adjust => support}/xrd_unix_env.F90 (100%) diff --git a/src/common/micro/ini_rain_ice.F90 b/src/common/micro/ini_rain_ice.F90 index 85eb2f093..ecb3b4244 100644 --- a/src/common/micro/ini_rain_ice.F90 +++ b/src/common/micro/ini_rain_ice.F90 @@ -166,9 +166,12 @@ REAL :: PWETLBDAR_MAX,PWETLBDAH_MAX,PWETLBDAR_MIN,PWETLBDAH_MIN ! REAL(KIND=JPRB) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- -! IF (LHOOK) CALL DR_HOOK('INI_RAIN_ICE',0,ZHOOK_HANDLE) ! +IF(.NOT.ASSOCIATED(XCEXVT)) CALL RAIN_ICE_DESCR_ASSOCIATE() +IF(.NOT.ASSOCIATED(XFSEDC)) CALL RAIN_ICE_PARAM_ASSOCIATE() +! +! !* 0. FUNCTION STATEMENTS ! ------------------- ! @@ -178,13 +181,27 @@ IF (LHOOK) CALL DR_HOOK('INI_RAIN_ICE',0,ZHOOK_HANDLE) ! ! ! -IF (ALLOCATED(XRTMIN)) THEN ! In case of nesting microphysics constants of +IF (ASSOCIATED(XRTMIN)) THEN ! In case of nesting microphysics constants of ! MODD_RAIN_ICE_PARAM are computed only once, ! but if INI_RAIN_ICE has been called already ! one must change the XRTMIN size. - DEALLOCATE(XRTMIN) + CALL RAIN_ICE_DESCR_DEALLOCATE() +END IF +! +IF (HCLOUD == 'ICE4') THEN + CALL RAIN_ICE_DESCR_ALLOCATE(7) +ELSE IF (HCLOUD == 'ICE3') THEN + CALL RAIN_ICE_DESCR_ALLOCATE(6) END IF ! +XRTMIN(1) = 1.0E-20 +XRTMIN(2) = 1.0E-20 +XRTMIN(3) = 1.0E-20 +XRTMIN(4) = 1.0E-20 +XRTMIN(5) = 1.0E-15 +XRTMIN(6) = 1.0E-15 +IF (HCLOUD == 'ICE4') XRTMIN(7) = 1.0E-15 +! !------------------------------------------------------------------------------- ! !* 2. CHARACTERISTICS OF THE SPECIES @@ -370,20 +387,6 @@ XLBDAG_MAX = 100000.0 ZCONC_MAX = 1.E6 ! Maximal concentration for falling particules set to 1 per cc XLBDAS_MAX = ( ZCONC_MAX/XCCS )**(1./XCXS) ! -IF (HCLOUD == 'ICE4') THEN - ALLOCATE( XRTMIN(7) ) -ELSE IF (HCLOUD == 'ICE3') THEN - ALLOCATE( XRTMIN(6) ) -END IF -! -XRTMIN(1) = 1.0E-20 -XRTMIN(2) = 1.0E-20 -XRTMIN(3) = 1.0E-20 -XRTMIN(4) = 1.0E-20 -XRTMIN(5) = 1.0E-15 -XRTMIN(6) = 1.0E-15 -IF (HCLOUD == 'ICE4') XRTMIN(7) = 1.0E-15 -! XCONC_SEA=1E8 ! 100/cm3 XCONC_LAND=3E8 ! 300/cm3 XCONC_URBAN=5E8 ! 500/cm3 @@ -545,8 +548,7 @@ IF (GFLAG) THEN WRITE(UNIT=KLUOUT,FMT='(" Crit. ice cont. XCRIAUTI=",E13.6)') XCRIAUTI WRITE(UNIT=KLUOUT,FMT='(" A Coef. for cirrus law XACRIAUTI=",E13.6)')XACRIAUTI WRITE(UNIT=KLUOUT,FMT='(" B Coef. for cirrus law XBCRIAUTI=",E13.6)')XBCRIAUTI - WRITE(UNIT=KLUOUT, & - & FMT='(" Temp degC at which cirrus law starts to be used=",E13.6)') XT0CRIAUTI + WRITE(UNIT=KLUOUT,FMT='(" Temp degC at which cirrus law starts to be used=",E13.6)') XT0CRIAUTI END IF ! ! @@ -628,9 +630,9 @@ XGAMINC_BOUND_MIN = 1.0E-1 ! Minimal value of (Lbda * D_cs^lim)**alpha XGAMINC_BOUND_MAX = 1.0E7 ! Maximal value of (Lbda * D_cs^lim)**alpha ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/REAL(NGAMINC-1)) ! -IF( .NOT.ALLOCATED(XGAMINC_RIM1) ) ALLOCATE( XGAMINC_RIM1(NGAMINC) ) -IF( .NOT.ALLOCATED(XGAMINC_RIM2) ) ALLOCATE( XGAMINC_RIM2(NGAMINC) ) -IF( .NOT.ALLOCATED(XGAMINC_RIM4) ) ALLOCATE( XGAMINC_RIM4(NGAMINC) ) +IF( .NOT.ASSOCIATED(XGAMINC_RIM1) ) CALL RAIN_ICE_PARAM_ALLOCATE('XGAMINC_RIM1', NGAMINC) +IF( .NOT.ASSOCIATED(XGAMINC_RIM2) ) CALL RAIN_ICE_PARAM_ALLOCATE('XGAMINC_RIM2', NGAMINC) +IF( .NOT.ASSOCIATED(XGAMINC_RIM4) ) CALL RAIN_ICE_PARAM_ALLOCATE('XGAMINC_RIM4', NGAMINC) ! DO J1=1,NGAMINC ZBOUND = XGAMINC_BOUND_MIN*ZRATE**(J1-1) @@ -680,9 +682,9 @@ IND = 50 ! Interval number, collection efficiency and infinite diameter ZESR = 1.0 ! factor used to integrate the dimensional distributions when ZFDINFTY = 20.0 ! computing the kernels XKER_RACCSS, XKER_RACCS and XKER_SACCRG ! -IF( .NOT.ALLOCATED(XKER_RACCSS) ) ALLOCATE( XKER_RACCSS(NACCLBDAS,NACCLBDAR) ) -IF( .NOT.ALLOCATED(XKER_RACCS ) ) ALLOCATE( XKER_RACCS (NACCLBDAS,NACCLBDAR) ) -IF( .NOT.ALLOCATED(XKER_SACCRG) ) ALLOCATE( XKER_SACCRG(NACCLBDAR,NACCLBDAS) ) +IF( .NOT.ASSOCIATED(XKER_RACCSS) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_RACCSS', NACCLBDAS,NACCLBDAR) +IF( .NOT.ASSOCIATED(XKER_RACCS ) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_RACCS', NACCLBDAS,NACCLBDAR) +IF( .NOT.ASSOCIATED(XKER_SACCRG) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_SACCRG', NACCLBDAR,NACCLBDAS) ! CALL READ_XKER_RACCS (KACCLBDAS,KACCLBDAR,KND, & PALPHAS,PNUS,PALPHAR,PNUR,PESR,PBS,PBR,PCS,PDS,PCR,PDR, & @@ -890,7 +892,7 @@ IND = 50 ! Interval number, collection efficiency and infinite diameter ZEGS = 1.0 ! factor used to integrate the dimensional distributions when ZFDINFTY = 20.0 ! computing the kernels XKER_SDRYG ! -IF( .NOT.ALLOCATED(XKER_SDRYG) ) ALLOCATE( XKER_SDRYG(NDRYLBDAG,NDRYLBDAS) ) +IF( .NOT.ASSOCIATED(XKER_SDRYG) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_SDRYG', NDRYLBDAG,NDRYLBDAS) ! CALL READ_XKER_SDRYG (KDRYLBDAG,KDRYLBDAS,KND, & PALPHAG,PNUG,PALPHAS,PNUS,PEGS,PBS,PCG,PDG,PCS,PDS, & @@ -956,7 +958,7 @@ IND = 50 ! Number of interval used to integrate the dimensional ZEGR = 1.0 ! distributions when computing the kernel XKER_RDRYG ZFDINFTY = 20.0 ! -IF( .NOT.ALLOCATED(XKER_RDRYG) ) ALLOCATE( XKER_RDRYG(NDRYLBDAG,NDRYLBDAR) ) +IF( .NOT.ASSOCIATED(XKER_RDRYG) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_RDRYG', NDRYLBDAG,NDRYLBDAR) ! CALL READ_XKER_RDRYG (KDRYLBDAG,KDRYLBDAR,KND, & PALPHAG,PNUG,PALPHAR,PNUR,PEGR,PBR,PCG,PDG,PCR,PDR, & @@ -1094,7 +1096,7 @@ IND = 50 ! Interval number, collection efficiency and infinite diameter ZEHS = 1.0 ! factor used to integrate the dimensional distributions when ZFDINFTY = 20.0 ! computing the kernels XKER_SWETH ! -IF( .NOT.ALLOCATED(XKER_SWETH) ) ALLOCATE( XKER_SWETH(NWETLBDAH,NWETLBDAS) ) +IF( .NOT.ASSOCIATED(XKER_SWETH) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_SWETH', NWETLBDAH,NWETLBDAS) ! CALL READ_XKER_SWETH (KWETLBDAH,KWETLBDAS,KND, & PALPHAH,PNUH,PALPHAS,PNUS,PEHS,PBS,PCH,PDH,PCS,PDS, & @@ -1160,7 +1162,7 @@ IND = 50 ! Number of interval used to integrate the dimensional ZEHG = 1.0 ! distributions when computing the kernel XKER_GWETH ZFDINFTY = 20.0 ! -IF( .NOT.ALLOCATED(XKER_GWETH) ) ALLOCATE( XKER_GWETH(NWETLBDAH,NWETLBDAG) ) +IF( .NOT.ASSOCIATED(XKER_GWETH) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_GWETH', NWETLBDAH,NWETLBDAG) ! CALL READ_XKER_GWETH (KWETLBDAH,KWETLBDAG,KND, & PALPHAH,PNUH,PALPHAG,PNUG,PEHG,PBG,PCH,PDH,PCG,PDG, & @@ -1226,7 +1228,7 @@ IND = 50 ! Number of interval used to integrate the dimensional ZEHR = 1.0 ! distributions when computing the kernel XKER_RWETH ZFDINFTY = 20.0 ! -IF( .NOT.ALLOCATED(XKER_RWETH) ) ALLOCATE( XKER_RWETH(NWETLBDAH,NWETLBDAR) ) +IF( .NOT.ASSOCIATED(XKER_RWETH) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_RWETH', NWETLBDAH,NWETLBDAR) ! CALL READ_XKER_RWETH (KWETLBDAH,KWETLBDAR,KND, & PALPHAH,PNUH,PALPHAR,PNUR,PEHR,PBR,PCH,PDH,PCR,PDR, & diff --git a/src/mesonh/micro/ini_rain_ice.f90 b/src/mesonh/micro/ini_rain_ice.f90 index 4e9c50f03..18b47a203 100644 --- a/src/mesonh/micro/ini_rain_ice.f90 +++ b/src/mesonh/micro/ini_rain_ice.f90 @@ -178,7 +178,6 @@ IF (LHOOK) CALL DR_HOOK('INI_RAIN_ICE',0,ZHOOK_HANDLE) ! IF(.NOT.ASSOCIATED(XCEXVT)) CALL RAIN_ICE_DESCR_ASSOCIATE() IF(.NOT.ASSOCIATED(XFSEDC)) CALL RAIN_ICE_PARAM_ASSOCIATE() - ! ! !* 0. FUNCTION STATEMENTS @@ -578,8 +577,7 @@ IF (GFLAG) THEN WRITE(UNIT=KLUOUT,FMT='(" Crit. ice cont. XCRIAUTI=",E13.6)') XCRIAUTI WRITE(UNIT=KLUOUT,FMT='(" A Coef. for cirrus law XACRIAUTI=",E13.6)')XACRIAUTI WRITE(UNIT=KLUOUT,FMT='(" B Coef. for cirrus law XBCRIAUTI=",E13.6)')XBCRIAUTI - WRITE(UNIT=KLUOUT, & - & FMT='(" Temp degC at which cirrus law starts to be used=",E13.6)') XT0CRIAUTI + WRITE(UNIT=KLUOUT,FMT='(" Temp degC at which cirrus law starts to be used=",E13.6)') XT0CRIAUTI END IF ! ! diff --git a/src/testprogs/ice_adjust/getdata_mod.F90 b/src/testprogs/ice_adjust/getdata_ice_adjust_mod.F90 similarity index 99% rename from src/testprogs/ice_adjust/getdata_mod.F90 rename to src/testprogs/ice_adjust/getdata_ice_adjust_mod.F90 index fa2a6ebcf..faf5d03f6 100644 --- a/src/testprogs/ice_adjust/getdata_mod.F90 +++ b/src/testprogs/ice_adjust/getdata_ice_adjust_mod.F90 @@ -1,4 +1,4 @@ -MODULE GETDATA_MOD +MODULE GETDATA_ICE_ADJUST_MOD USE OMP_LIB @@ -25,7 +25,7 @@ END INTERFACE CONTAINS -SUBROUTINE GETDATA (NPROMA, NGPBLKS, NFLEVG, PRHODJ_B, PEXNREF_B, PRHODREF_B, PPABSM_B, PTHT_B, ZICE_CLD_WGT_B, & +SUBROUTINE GETDATA_ICE_ADJUST (NPROMA, NGPBLKS, NFLEVG, PRHODJ_B, PEXNREF_B, PRHODREF_B, PPABSM_B, PTHT_B, ZICE_CLD_WGT_B, & & ZSIGQSAT_B, PSIGS_B, PMFCONV_B, PRC_MF_B, PRI_MF_B, PCF_MF_B, PTHS_B, PRS_B, PSRCS_B, PCLDFR_B, PHLC_HRC_B, PHLC_HCF_B, & & PHLI_HRI_B, PHLI_HCF_B, ZRS_B, ZZZ_B, PRS_OUT_B, PSRCS_OUT_B, PCLDFR_OUT_B, PHLC_HRC_OUT_B, PHLC_HCF_OUT_B, & & PHLI_HRI_OUT_B, PHLI_HCF_OUT_B, LDVERBOSE) diff --git a/src/testprogs/ice_adjust/main_ice_adjust.F90 b/src/testprogs/ice_adjust/main_ice_adjust.F90 index 27dd585df..1a074e1f8 100644 --- a/src/testprogs/ice_adjust/main_ice_adjust.F90 +++ b/src/testprogs/ice_adjust/main_ice_adjust.F90 @@ -1,7 +1,7 @@ PROGRAM MAIN_ICE_ADJUST USE XRD_GETOPTIONS -USE GETDATA_MOD +USE GETDATA_ICE_ADJUST_MOD USE MODI_ICE_ADJUST USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_CST, ONLY: CST_t, CST @@ -118,7 +118,7 @@ IF (LLBIND) THEN CALL LINUX_BIND_DUMP (IRANK, ISIZE) ENDIF -CALL GETDATA (NPROMA, NGPBLKS, NFLEVG, PRHODJ, PEXNREF, PRHODREF, PPABSM, PTHT, ZICE_CLD_WGT, & +CALL GETDATA_ICE_ADJUST (NPROMA, NGPBLKS, NFLEVG, PRHODJ, PEXNREF, PRHODREF, PPABSM, PTHT, ZICE_CLD_WGT, & & ZSIGQSAT, PSIGS, PMFCONV, PRC_MF, PRI_MF, PCF_MF, PTHS, PRS, PSRCS, PCLDFR, PHLC_HRC, PHLC_HCF, & & PHLI_HRI, PHLI_HCF, ZRS, ZZZ, PRS_OUT, PSRCS_OUT, PCLDFR_OUT, PHLC_HRC_OUT, PHLC_HCF_OUT, & & PHLI_HRI_OUT, PHLI_HCF_OUT, LLVERBOSE) diff --git a/src/testprogs/rain_ice/main_rain_ice.F90 b/src/testprogs/rain_ice/main_rain_ice.F90 new file mode 100644 index 000000000..580e36e5c --- /dev/null +++ b/src/testprogs/rain_ice/main_rain_ice.F90 @@ -0,0 +1,304 @@ +PROGRAM MAIN_RAIN_ICE + +USE MODD_CONF +USE MODD_CST, ONLY: CST +USE MODD_RAIN_ICE_DESCR, ONLY: RAIN_ICE_DESCR +USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM +USE MODD_PARAM_ICE, ONLY: PARAM_ICE +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t + +USE MODD_BUDGET, ONLY: TBUDGETDATA, NBUDGET_RH, TBUCONF + +USE MODI_RAIN_ICE + +IMPLICIT NONE + +INTEGER :: KPROMA +INTEGER :: KKA +INTEGER :: KKU +INTEGER :: KKL +INTEGER :: KLON +INTEGER :: KLEV +INTEGER :: KRR +INTEGER :: KDUM + +CHARACTER (LEN=4) :: CSUBG_AUCV_RC +CHARACTER (LEN=80) :: CSUBG_AUCV_RI +LOGICAL :: OSEDIC +CHARACTER (LEN=4) :: CSEDIM +CHARACTER (LEN=4) :: CMICRO +REAL :: PTSTEP + + +REAL, ALLOCATABLE, DIMENSION(:,:,:) :: PRS, PRS_1 +REAL, ALLOCATABLE, DIMENSION(:,:,:) :: PFPR, PFPR_1 +REAL, ALLOCATABLE, DIMENSION(:,:,:) :: PRT +REAL, ALLOCATABLE, DIMENSION(:,:) :: PDZZ +REAL, ALLOCATABLE, DIMENSION(:,:) :: PRHODJ +REAL, ALLOCATABLE, DIMENSION(:,:) :: PRHODREF +REAL, ALLOCATABLE, DIMENSION(:,:) :: PEXNREF +REAL, ALLOCATABLE, DIMENSION(:,:) :: PPABSM +REAL, ALLOCATABLE, DIMENSION(:,:) :: PHLC_HRC +REAL, ALLOCATABLE, DIMENSION(:,:) :: PHLC_HCF +REAL, ALLOCATABLE, DIMENSION(:,:) :: PHLI_HRI +REAL, ALLOCATABLE, DIMENSION(:,:) :: PHLI_HCF +REAL, ALLOCATABLE, DIMENSION(:,:) :: PTHT +REAL, ALLOCATABLE, DIMENSION(:,:) :: PSIGS +REAL, ALLOCATABLE, DIMENSION(:,:) :: PCLDFR +REAL, ALLOCATABLE, DIMENSION(:,:) :: PTHS +REAL, ALLOCATABLE, DIMENSION(:,:) :: PEVAP, PEVAP_1 +REAL, ALLOCATABLE, DIMENSION(:,:) :: PCIT, PCIT_1 +REAL, ALLOCATABLE, DIMENSION(:) :: PSEA +REAL, ALLOCATABLE, DIMENSION(:) :: PTOWN +REAL, ALLOCATABLE, DIMENSION(:) :: PINPRR, PINPRR_1 +REAL, ALLOCATABLE, DIMENSION(:) :: PINPRS, PINPRS_1 +REAL, ALLOCATABLE, DIMENSION(:) :: PINPRG, PINPRG_1 +REAL, ALLOCATABLE, DIMENSION(:) :: ZINDEP, ZINDEP_1 +REAL, ALLOCATABLE, DIMENSION(:,:) :: ZRAINFR, ZRAINFR_1 +REAL, ALLOCATABLE, DIMENSION(:) :: ZINPRC, ZINPRC_1 +LOGICAL, ALLOCATABLE, DIMENSION(:,:) :: LLMICRO + +LOGICAL :: OWARM +LOGICAL :: OCND2 + +INTEGER :: IFILE + +LOGICAL :: LCRIAUTI +REAL :: ZCRIAUTI, ZT0CRIAUTI, ZCRIAUTC + +TYPE(TBUDGETDATA), DIMENSION(NBUDGET_RH) :: YLBUDGET +TYPE(DIMPHYEX_t) :: D + +INTEGER :: IPROMA, ISIZE +INTEGER :: JLON, JLEV + +CHARACTER(LEN=128) :: CLFILE + + + +CMICRO='ICE3' + +CALL GETARG (1, CLFILE) + +PTSTEP = 25.0000000000000 +KRR = 6 +OSEDIC = .TRUE. +OCND2 = .FALSE. +CSEDIM = 'STAT' +CSUBG_AUCV_RC = 'PDF' +CSUBG_AUCV_RI = 'NONE' +OWARM = .TRUE. + +LCRIAUTI=.TRUE. +ZCRIAUTI=0.2E-3 +ZT0CRIAUTI=-5. +ZCRIAUTC=0.1E-2 + +CALL INIT_PHYEX (20, OWARM, CMICRO, CSEDIM, & + & LCRIAUTI, ZCRIAUTI, ZT0CRIAUTI, ZCRIAUTC) + +IFILE = 77 +OPEN (IFILE, FILE=TRIM (CLFILE), FORM='UNFORMATTED') +READ (IFILE) IPROMA, ISIZE +READ (IFILE) KLON, KDUM, KLEV, KRR + +PRINT *, KLON, KDUM, KLEV, KRR + +ALLOCATE (PRT (KLON,KLEV,KRR)) +ALLOCATE (PRS (KLON,KLEV,KRR), PRS_1 (KLON,KLEV,KRR)) +ALLOCATE (PFPR (KLON,KLEV,KRR), PFPR_1 (KLON,KLEV,KRR)) +ALLOCATE (PDZZ (KLON,KLEV)) +ALLOCATE (PRHODJ (KLON,KLEV)) +ALLOCATE (PRHODREF (KLON,KLEV)) +ALLOCATE (PEXNREF (KLON,KLEV)) +ALLOCATE (PPABSM (KLON,KLEV)) +ALLOCATE (PHLC_HRC (KLON,KLEV)) +ALLOCATE (PHLC_HCF (KLON,KLEV)) +ALLOCATE (PHLI_HRI (KLON,KLEV)) +ALLOCATE (PHLI_HCF (KLON,KLEV)) +ALLOCATE (PTHT (KLON,KLEV)) +ALLOCATE (PSIGS (KLON,KLEV)) +ALLOCATE (PCLDFR (KLON,KLEV)) +ALLOCATE (PTHS (KLON,KLEV)) +ALLOCATE (PEVAP (KLON,KLEV), PEVAP_1 (KLON,KLEV)) +ALLOCATE (PCIT (KLON,KLEV), PCIT_1 (KLON,KLEV)) +ALLOCATE (PSEA (KLON)) +ALLOCATE (PTOWN (KLON)) +ALLOCATE (PINPRR (KLON)) +ALLOCATE (PINPRS (KLON), PINPRS_1 (KLON)) +ALLOCATE (PINPRG (KLON), PINPRG_1 (KLON)) +ALLOCATE (LLMICRO (KLON,KLEV)) +ALLOCATE (ZINDEP (KLON), ZINDEP_1 (KLON)) +ALLOCATE (ZRAINFR (KLON,KLEV), ZRAINFR_1 (KLON,KLEV)) +ALLOCATE (ZINPRC (KLON), ZINPRC_1 (KLON)) + +READ (IFILE) LLMICRO +READ (IFILE) PEXNREF +READ (IFILE) PDZZ +READ (IFILE) PRHODJ +READ (IFILE) PRHODREF +READ (IFILE) PEXNREF +READ (IFILE) PPABSM +READ (IFILE) PCIT +READ (IFILE) PCLDFR +READ (IFILE) PHLC_HRC +READ (IFILE) PHLC_HCF +READ (IFILE) PHLI_HRI +READ (IFILE) PHLI_HCF +READ (IFILE) PTHT +READ (IFILE) PRT +READ (IFILE) PTHS +READ (IFILE) PRS +READ (IFILE) PSIGS +READ (IFILE) PSEA +READ (IFILE) PTOWN + +READ (IFILE) PCIT_1 +READ (IFILE) PRS_1 +READ (IFILE) ZINPRC_1 +READ (IFILE) PINPRR_1 +READ (IFILE) PEVAP_1 +READ (IFILE) PINPRS_1 +READ (IFILE) PINPRG_1 +READ (IFILE) ZINDEP_1 +READ (IFILE) ZRAINFR_1 +READ (IFILE) PFPR_1 +CLOSE (IFILE) + +D%NIT = KLON +D%NIB = 1 +D%NIE = KLON +D%NJT = 1 +D%NJB = 1 +D%NJE = 1 +D%NKL = -1 +D%NKT = KLEV +D%NKA = KLEV +D%NKU = 1 +D%NKB = KLEV +D%NKE = 1 +D%NKTB = 1 +D%NKTE = KLEV + +CALL RAIN_ICE (D, CST, PARAM_ICE, RAIN_ICE_PARAM, & + & RAIN_ICE_DESCR, TBUCONF, & + & IPROMA, ISIZE, & + & OSEDIC=OSEDIC, OCND2=OCND2, HSEDIM=CSEDIM, & + & HSUBG_AUCV_RC=CSUBG_AUCV_RC, HSUBG_AUCV_RI=CSUBG_AUCV_RI,& + & OWARM=OWARM, & + & PTSTEP=2*PTSTEP, & + & KRR=KRR, ODMICRO=LLMICRO, PEXN=PEXNREF, & + & PDZZ=PDZZ, PRHODJ=PRHODJ, PRHODREF=PRHODREF,PEXNREF=PEXNREF,& + & PPABST=PPABSM, PCIT=PCIT, PCLDFR=PCLDFR, & + & PHLC_HRC=PHLC_HRC, PHLC_HCF=PHLC_HCF, & + & PHLI_HRI=PHLI_HRI, PHLI_HCF=PHLI_HCF, & + & PTHT=PTHT,PRVT=PRT(1,1,1),PRCT=PRT(1,1,2), & + & PRRT=PRT(1,1,3), & + & PRIT=PRT(1,1,4), PRST=PRT(1,1,5), & + & PRGT=PRT(1,1,6), & + & PTHS=PTHS, PRVS=PRS(1,1,1),PRCS=PRS(1,1,2),& + & PRRS=PRS(1,1,3),& + & PRIS=PRS(1,1,4),PRSS= PRS(1,1,5),PRGS= PRS(1,1,6),& + & PINPRC=ZINPRC,PINPRR=PINPRR,PEVAP3D=PEVAP,& + & PINPRS=PINPRS, PINPRG=PINPRG, PINDEP=ZINDEP, PRAINFR=ZRAINFR, & + & PSIGS=PSIGS, & + & TBUDGETS=YLBUDGET, KBUDGETS=SIZE(YLBUDGET), & + & PSEA=PSEA, PTOWN=PTOWN, PFPR=PFPR) + +DO JLEV = 1, KLEV + WRITE (*, '(I4," | ")', ADVANCE='NO') JLEV + DO JLON = 1, KLON + WRITE (*, '(E12.5)', ADVANCE='NO') ZRAINFR_1 (JLON, JLEV) + ENDDO + WRITE (*, *) +ENDDO + + +CONTAINS + +SUBROUTINE INIT_PHYEX(KULOUT,LDWARM,CMICRO,CCSEDIM,LDCRIAUTI,& + PCRIAUTI,PT0CRIAUTI,PCRIAUTC) + +USE MODD_RAIN_ICE_DESCR +USE MODD_RAIN_ICE_PARAM +USE MODD_PARAM_ICE +USE MODD_TURB_N, ONLY: TURB_GOTO_MODEL, CSUBG_MF_PDF + +USE MODD_REF +USE MODI_INI_RAIN_ICE + +IMPLICIT NONE +! ----------------------------------------------------------------------- +! DUMMY INTEGER SCALARS +INTEGER, INTENT (IN) :: KULOUT +LOGICAL, INTENT (IN) :: LDWARM +CHARACTER(4), INTENT (IN) :: CMICRO +CHARACTER(4), INTENT (IN) :: CCSEDIM +LOGICAL, INTENT (IN) :: LDCRIAUTI +REAL, INTENT (IN) :: PCRIAUTI +REAL, INTENT (IN) :: PT0CRIAUTI +REAL, INTENT (IN) :: PCRIAUTC +!----------------------------------------------------------------------- +! LOCAL VARIABLES +REAL :: ZCRI0, ZTCRI0 +! ----------------------------------------------------------------------- + +CALL INI_CST +CALL TURB_GOTO_MODEL(1,1) +CALL PARAM_ICE_ASSOCIATE + +! 1. Set implicit default values for MODD_PARAM_ICE +LWARM=LDWARM +CPRISTINE_ICE='PLAT' +CSEDIM=CCSEDIM +CSUBG_AUCV_RC='PDF' +CSUBG_AUCV_RI='NONE' +CSUBG_RC_RR_ACCR='NONE' +CSUBG_RR_EVAP='NONE' +CSUBG_PR_PDF='SIGM' +CSUBG_MF_PDF='TRIANGLE' +! Snow riming +CSNOWRIMING='M90 ' +XFRACM90=0.1 ! Fraction used for the Murakami 1990 formulation +! +LFEEDBACKT=.TRUE. ! When .TRUE. feed back on temperature is taken into account +LEVLIMIT=.TRUE. ! When .TRUE. water vapour pressure is limited by saturation +LNULLWETG=.TRUE. ! When .TRUE. graupel wet growth is activated with null rate (to allow water shedding) +LWETGPOST=.TRUE. ! When .TRUE. graupel wet growth is activated with positive temperature (to allow water shedding) +LNULLWETH=.TRUE. ! Same as LNULLWETG but for hail +LWETHPOST=.TRUE. ! Same as LWETGPOST but for hail +LCONVHG=.TRUE. ! TRUE to allow the conversion from hail to graupel +LCRFLIMIT=.TRUE. !True to limit rain contact freezing to possible heat exchange +CFRAC_ICE_ADJUST='S' ! Ice/liquid partition rule to use in adjustment +CFRAC_ICE_SHALLOW_MF='S' ! Ice/liquid partition rule to use in shallow_mf +LSEDIM_AFTER=.FALSE. ! Sedimentation done after microphysics +XSPLIT_MAXCFL=0.8 +LDEPOSC=.FALSE. ! water deposition on vegetation +XVDEPOSC=0.02 ! deposition speed (2 cm.s-1) +! +! 2. Set implicit default values for MODD_RAIN_ICE_DESCR +! et MODD_RAIN_ICE_PARAM +XTHVREFZ=300. +! +CALL INI_RAIN_ICE (KULOUT, CMICRO) +!update values from namparar +IF (LDCRIAUTI) THEN + + XCRIAUTI=PCRIAUTI + XCRIAUTC=PCRIAUTC + XT0CRIAUTI=PT0CRIAUTI + !second point to determine 10**(aT+b) law + ZTCRI0=-40.0 + ZCRI0=1.25E-6 + + XBCRIAUTI=-( LOG10(XCRIAUTI) - LOG10(ZCRI0)*PT0CRIAUTI/ZTCRI0 )& + *ZTCRI0/(XT0CRIAUTI-ZTCRI0) + XACRIAUTI=(LOG10(ZCRI0)-XBCRIAUTI)/ZTCRI0 + +ENDIF +! ----------------------------------------------------------------------- + +END SUBROUTINE INIT_PHYEX + +END PROGRAM + diff --git a/src/testprogs/ice_adjust/xrd_getoptions.F90 b/src/testprogs/support/xrd_getoptions.F90 similarity index 100% rename from src/testprogs/ice_adjust/xrd_getoptions.F90 rename to src/testprogs/support/xrd_getoptions.F90 diff --git a/src/testprogs/ice_adjust/xrd_unix_env.F90 b/src/testprogs/support/xrd_unix_env.F90 similarity index 100% rename from src/testprogs/ice_adjust/xrd_unix_env.F90 rename to src/testprogs/support/xrd_unix_env.F90 -- GitLab