diff --git a/src/mesonh/aux/modd_budget.f90 b/src/mesonh/aux/modd_budget.f90 index 7442dfd3e0184598cd4ee7687456a5e31b900e5b..e0a4ce73acd7d831c2a819897b263a6dd2ce5945 100644 --- a/src/mesonh/aux/modd_budget.f90 +++ b/src/mesonh/aux/modd_budget.f90 @@ -163,13 +163,31 @@ type tbudgetdata type(tburhodata), pointer :: trhodj => null() ! Budget array for rhodj end type tbudgetdata - +TYPE TBUDGETCONF_t + LOGICAL :: LBU_ENABLE + LOGICAL :: LBUDGET_U ! flag to compute budget of RhoJu and/or LES budgets with u + LOGICAL :: LBUDGET_V ! flag to compute budget of RhoJv and/or LES budgets with u + LOGICAL :: LBUDGET_W ! flag to compute budget of RhoJw and/or LES budgets with u + LOGICAL :: LBUDGET_TH ! flag to compute budget of RhoJTh and/or LES budgets with th + LOGICAL :: LBUDGET_TKE! flag to compute budget of RhoJTke and/or LES budgets with Tke + LOGICAL :: LBUDGET_RV ! flag to compute budget of RhoJrv and/or LES budgets with rv + LOGICAL :: LBUDGET_RC ! flag to compute budget of RhoJrc and/or LES budgets with rc + LOGICAL :: LBUDGET_RR ! flag to compute budget of RhoJrr and/or LES budgets with rr + LOGICAL :: LBUDGET_RI ! flag to compute budget of RhoJri and/or LES budgets with ri + LOGICAL :: LBUDGET_RS ! flag to compute budget of RhoJrs and/or LES budgets with rs + LOGICAL :: LBUDGET_RG ! flag to compute budget of RhoJrg and/or LES budgets with rg + LOGICAL :: LBUDGET_RH ! flag to compute budget of RhoJrh and/or LES budgets with rh + LOGICAL :: LBUDGET_SV ! flag to compute budget of RhoJsv and/or LES budgets with sv +END TYPE TBUDGETCONF_t +! +TYPE(TBUDGETCONF_t), TARGET :: TBUCONF +! type(tbudgetdata), dimension(:), allocatable, save :: tbudgets type(tburhodata), pointer, save :: tburhodj => null() ! Budget array for rhodj used inside some tbudgets ! General variables -LOGICAL, SAVE :: LBU_ENABLE +LOGICAL, POINTER :: LBU_ENABLE=>TBUCONF%LBU_ENABLE ! CHARACTER (LEN=4), SAVE :: CBUTYPE ! type of desired budget 'CART' ! (cartesian box) or 'MASK' (budget @@ -351,18 +369,18 @@ CHARACTER(LEN=NBULISTMAXLEN), DIMENSION(:), ALLOCATABLE :: CBULIST_RSV REAL :: XTIME_BU ! budget time in this time-step REAL :: XTIME_BU_PROCESS ! budget time per process for this time-step ! -LOGICAL :: LBUDGET_U ! flag to compute budget of RhoJu and/or LES budgets with u -LOGICAL :: LBUDGET_V ! flag to compute budget of RhoJv and/or LES budgets with u -LOGICAL :: LBUDGET_W ! flag to compute budget of RhoJw and/or LES budgets with u -LOGICAL :: LBUDGET_TH ! flag to compute budget of RhoJTh and/or LES budgets with th -LOGICAL :: LBUDGET_TKE! flag to compute budget of RhoJTke and/or LES budgets with Tke -LOGICAL :: LBUDGET_RV ! flag to compute budget of RhoJrv and/or LES budgets with rv -LOGICAL :: LBUDGET_RC ! flag to compute budget of RhoJrc and/or LES budgets with rc -LOGICAL :: LBUDGET_RR ! flag to compute budget of RhoJrr and/or LES budgets with rr -LOGICAL :: LBUDGET_RI ! flag to compute budget of RhoJri and/or LES budgets with ri -LOGICAL :: LBUDGET_RS ! flag to compute budget of RhoJrs and/or LES budgets with rs -LOGICAL :: LBUDGET_RG ! flag to compute budget of RhoJrg and/or LES budgets with rg -LOGICAL :: LBUDGET_RH ! flag to compute budget of RhoJrh and/or LES budgets with rh -LOGICAL :: LBUDGET_SV ! flag to compute budget of RhoJsv and/or LES budgets with sv +LOGICAL, POINTER :: LBUDGET_U=>TBUCONF%LBUDGET_U ! flag to compute budget of RhoJu and/or LES budgets with u +LOGICAL, POINTER :: LBUDGET_V=>TBUCONF%LBUDGET_V ! flag to compute budget of RhoJv and/or LES budgets with u +LOGICAL, POINTER :: LBUDGET_W=>TBUCONF%LBUDGET_W ! flag to compute budget of RhoJw and/or LES budgets with u +LOGICAL, POINTER :: LBUDGET_TH=>TBUCONF%LBUDGET_TH ! flag to compute budget of RhoJTh and/or LES budgets with th +LOGICAL, POINTER :: LBUDGET_TKE=>TBUCONF%LBUDGET_TKE ! flag to compute budget of RhoJTke and/or LES budgets with Tke +LOGICAL, POINTER :: LBUDGET_RV=>TBUCONF%LBUDGET_RV ! flag to compute budget of RhoJrv and/or LES budgets with rv +LOGICAL, POINTER :: LBUDGET_RC=>TBUCONF%LBUDGET_RC ! flag to compute budget of RhoJrc and/or LES budgets with rc +LOGICAL, POINTER :: LBUDGET_RR=>TBUCONF%LBUDGET_RR ! flag to compute budget of RhoJrr and/or LES budgets with rr +LOGICAL, POINTER :: LBUDGET_RI=>TBUCONF%LBUDGET_RI ! flag to compute budget of RhoJri and/or LES budgets with ri +LOGICAL, POINTER :: LBUDGET_RS=>TBUCONF%LBUDGET_RS ! flag to compute budget of RhoJrs and/or LES budgets with rs +LOGICAL, POINTER :: LBUDGET_RG=>TBUCONF%LBUDGET_RG ! flag to compute budget of RhoJrg and/or LES budgets with rg +LOGICAL, POINTER :: LBUDGET_RH=>TBUCONF%LBUDGET_RH ! flag to compute budget of RhoJrh and/or LES budgets with rh +LOGICAL, POINTER :: LBUDGET_SV=>TBUCONF%LBUDGET_SV ! flag to compute budget of RhoJsv and/or LES budgets with sv ! END MODULE MODD_BUDGET diff --git a/src/mesonh/aux/mode_fill_dimphyexn.F90 b/src/mesonh/aux/mode_fill_dimphyexn.F90 index 69bdb37f361bf1ea74dc194a1a9641ff9b59da5a..af7b191d0363c882276e9b49344e4c80365c579b 100644 --- a/src/mesonh/aux/mode_fill_dimphyexn.F90 +++ b/src/mesonh/aux/mode_fill_dimphyexn.F90 @@ -38,6 +38,7 @@ USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_PARAMETERS, ONLY: JPVEXT USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE MODE_ll ! IMPLICIT NONE ! diff --git a/src/mesonh/ext/resolved_cloud.f90 b/src/mesonh/ext/resolved_cloud.f90 index fe77e35d3e53e33e750edcf23eaa01e24e32ea5d..0654746fc7444f76b1dce87e8cb61e1f0c9b4938 100644 --- a/src/mesonh/ext/resolved_cloud.f90 +++ b/src/mesonh/ext/resolved_cloud.f90 @@ -205,9 +205,9 @@ END MODULE MODI_RESOLVED_CLOUD !! JPHEXT : Horizontal external points number !! JPVEXT : Vertical external points number !! Module MODD_CST -!! XP00 ! Reference pressure -!! XRD ! Gaz constant for dry air -!! XCPD ! Cpd (dry air) +!! CST%XP00 ! Reference pressure +!! CST%XRD ! Gaz constant for dry air +!! CST%XCPD ! Cpd (dry air) !! !! REFERENCE !! --------- @@ -285,12 +285,14 @@ END MODULE MODI_RESOLVED_CLOUD ! !* 0. DECLARATIONS ! ------------ -USE MODD_BUDGET, ONLY: TBUDGETS +USE MODD_BUDGET, ONLY: TBUDGETS, TBUCONF USE MODD_CH_AEROSOL, ONLY: LORILAM USE MODD_DUST, ONLY: LDUST -use modd_cst, only: xcpd, xrd, xp00, xrholw +USE MODD_CST, ONLY: CST +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_DUST , ONLY: LDUST USE MODD_IO, ONLY: TFILEDATA +USE MODD_NEB, ONLY: NEB USE MODD_NSV, ONLY: NSV_C1R3END, NSV_C2R2BEG, NSV_C2R2END, & NSV_LIMA_BEG, NSV_LIMA_END, NSV_LIMA_CCN_FREE, NSV_LIMA_IFN_FREE, & NSV_LIMA_NC, NSV_LIMA_NI, NSV_LIMA_NR @@ -299,10 +301,12 @@ USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT USE MODD_PARAM_ICE, ONLY: CSEDIM, LADJ_BEFORE, LADJ_AFTER, CFRAC_ICE_ADJUST, LRED USE MODD_PARAM_LIMA, ONLY: LADJ, LCOLD, LPTSPLIT, LSPRO, NMOD_CCN, NMOD_IFN, NMOD_IMM USE MODD_RAIN_ICE_DESCR, ONLY: XRTMIN +USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM USE MODD_SALT, ONLY: LSALT USE MODD_TURB_n, ONLY: CSUBG_AUCV_RI, CCONDENS, CLAMBDA3, CSUBG_MF_PDF ! USE MODE_ll +USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX use mode_sources_neg_correct, only: Sources_neg_correct ! USE MODI_C2R2_ADJUST @@ -472,12 +476,15 @@ REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3), KRR) :: ZFPR ! INTEGER :: JMOD, JMOD_IFN LOGICAL :: GWEST,GEAST,GNORTH,GSOUTH +LOGICAL :: LMFCONV ! =SIZE(PMFCONV)!=0 ! BVIE work array waiting for PINPRI REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2)):: ZINPRI REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZICEFR REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZPRCFR REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZTM REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2)) :: ZSIGQSAT2D +TYPE(DIMPHYEX_t) :: YLDIMPHYEX +! ZSIGQSAT2D(:,:) = PSIGQSAT ! !------------------------------------------------------------------------------ @@ -490,11 +497,15 @@ IKB=1+JPVEXT IKE=SIZE(PZZ,3) - JPVEXT IKU=SIZE(PZZ,3) ! +CALL FILL_DIMPHYEX(YLDIMPHYEX, SIZE(PZZ,1), SIZE(PZZ,2), SIZE(PZZ,3)) +! GWEST = LWEST_ll() GEAST = LEAST_ll() GSOUTH = LSOUTH_ll() GNORTH = LNORTH_ll() ! +LMFCONV=(SIZE(PMFCONV)/=0) +! IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO') THEN ISVBEG = NSV_C2R2BEG ISVEND = NSV_C2R2END @@ -732,7 +743,7 @@ SELECT CASE ( HCLOUD ) ! ----------------------------------------------------- ! allocate( zexn( size( pzz, 1 ), size( pzz, 2 ), size( pzz, 3 ) ) ) - ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD) + ZEXN(:,:,:)= (PPABST(:,:,:)/CST%XP00)**(CST%XRD/CST%XCPD) ! !* 9.1 Compute the explicit microphysical sources ! @@ -742,10 +753,11 @@ SELECT CASE ( HCLOUD ) ENDDO ZZZ = MZF( PZZ ) IF(LRED .AND. LADJ_BEFORE) THEN - CALL ICE_ADJUST (1, IKU, 1, KRR, CFRAC_ICE_ADJUST, CCONDENS, CLAMBDA3, & + CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAM,NEB, TBUCONF, KRR, & + CFRAC_ICE_ADJUST, CCONDENS, CLAMBDA3, & 'ADJU', OSUBG_COND, OSIGMAS, .FALSE., CSUBG_MF_PDF, & PTSTEP, ZSIGQSAT2D, & - PRHODJ, PEXNREF, PRHODREF, PSIGS, PMFCONV, PPABST, ZZZ, & + PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV,PMFCONV, PPABST, ZZZ, & ZEXN, PCF_MF, PRC_MF, PRI_MF, & PRV=PRS(:,:,:,1)*PTSTEP, PRC=PRS(:,:,:,2)*PTSTEP, & PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2), & @@ -809,10 +821,11 @@ SELECT CASE ( HCLOUD ) ! ! IF (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) THEN - CALL ICE_ADJUST (1, IKU, 1, KRR, CFRAC_ICE_ADJUST, CCONDENS, CLAMBDA3, & + CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAM,NEB, TBUCONF, KRR, & + CFRAC_ICE_ADJUST, CCONDENS, CLAMBDA3, & 'DEPI', OSUBG_COND, OSIGMAS, .FALSE.,CSUBG_MF_PDF, & PTSTEP, ZSIGQSAT2D, & - PRHODJ, PEXNREF, PRHODREF, PSIGS, PMFCONV, PPABST, ZZZ, & + PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,PPABST, ZZZ, & ZEXN, PCF_MF, PRC_MF, PRI_MF, & PRV=PRS(:,:,:,1)*PTSTEP, PRC=PRS(:,:,:,2)*PTSTEP, & PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2), & @@ -834,7 +847,7 @@ SELECT CASE ( HCLOUD ) ! ----------------------------------------------------- ! allocate( zexn( size( pzz, 1 ), size( pzz, 2 ), size( pzz, 3 ) ) ) - ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD) + ZEXN(:,:,:)= (PPABST(:,:,:)/CST%XP00)**(CST%XRD/CST%XCPD) ! !* 10.1 Compute the explicit microphysical sources ! @@ -844,10 +857,11 @@ SELECT CASE ( HCLOUD ) ENDDO ZZZ = MZF( PZZ ) IF(LRED .AND. LADJ_BEFORE) THEN - CALL ICE_ADJUST (1, IKU, 1, KRR, CFRAC_ICE_ADJUST, CCONDENS, CLAMBDA3, & + CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAM,NEB, TBUCONF,KRR, & + CFRAC_ICE_ADJUST, CCONDENS, CLAMBDA3, & 'ADJU', OSUBG_COND, OSIGMAS, .FALSE., CSUBG_MF_PDF, & PTSTEP, ZSIGQSAT2D, & - PRHODJ, PEXNREF, PRHODREF, PSIGS, PMFCONV, PPABST, ZZZ, & + PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV,PMFCONV, PPABST, ZZZ, & ZEXN, PCF_MF, PRC_MF, PRI_MF, & PRV=PRS(:,:,:,1)*PTSTEP, PRC=PRS(:,:,:,2)*PTSTEP, & PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2), & @@ -916,10 +930,11 @@ SELECT CASE ( HCLOUD ) !* 10.2 Perform the saturation adjustment over cloud ice and cloud water ! IF (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) THEN - CALL ICE_ADJUST (1, IKU, 1, KRR, CFRAC_ICE_ADJUST, CCONDENS, CLAMBDA3, & + CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAM,NEB, TBUCONF, KRR, & + CFRAC_ICE_ADJUST, CCONDENS, CLAMBDA3, & 'DEPI', OSUBG_COND, OSIGMAS, .FALSE., CSUBG_MF_PDF, & PTSTEP, ZSIGQSAT2D, & - PRHODJ, PEXNREF, PRHODREF, PSIGS, PMFCONV, PPABST, ZZZ, & + PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,PPABST, ZZZ, & ZEXN, PCF_MF, PRC_MF, PRI_MF, & PRV=PRS(:,:,:,1)*PTSTEP, PRC=PRS(:,:,:,2)*PTSTEP, & PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2), & @@ -1014,11 +1029,11 @@ SELECT CASE ( HCLOUD ) END SELECT ! IF(HCLOUD=='ICE3' .OR. HCLOUD=='ICE4' ) THEN - PINPRC3D=ZFPR(:,:,:,2) / XRHOLW - PINPRR3D=ZFPR(:,:,:,3) / XRHOLW - PINPRS3D=ZFPR(:,:,:,5) / XRHOLW - PINPRG3D=ZFPR(:,:,:,6) / XRHOLW - IF(KRR==7) PINPRH3D=ZFPR(:,:,:,7) / XRHOLW + PINPRC3D=ZFPR(:,:,:,2) / CST%XRHOLW + PINPRR3D=ZFPR(:,:,:,3) / CST%XRHOLW + PINPRS3D=ZFPR(:,:,:,5) / CST%XRHOLW + PINPRG3D=ZFPR(:,:,:,6) / CST%XRHOLW + IF(KRR==7) PINPRH3D=ZFPR(:,:,:,7) / CST%XRHOLW WHERE (PRT(:,:,:,2) > 1.E-04 ) PSPEEDC=ZFPR(:,:,:,2) / (PRT(:,:,:,2) * PRHODREF(:,:,:)) ENDWHERE diff --git a/src/mesonh/micro/ice_adjust_elec.f90 b/src/mesonh/micro/ice_adjust_elec.f90 index a52ffd2b375acda4dd911a74577409144202de0c..8ba58112476d16784d48987b34b81e63510b7d88 100644 --- a/src/mesonh/micro/ice_adjust_elec.f90 +++ b/src/mesonh/micro/ice_adjust_elec.f90 @@ -377,11 +377,11 @@ DO JITER = 1, ITERMAX ZSIGQSAT2D(:,:)=PSIGQSAT ZW4 = 1. ! PRODREF is not used if HL variables are not present ! - CALL CONDENSATION( IIU, IJU, IKU, IIB, IIE, IJB, IJE, IKB, IKE,1, 'T', 'CB02', 'CB', & - PPABST, PZZ, ZW4, ZT, ZW3_IN, ZW3, ZW1_IN, ZW1, ZW2_IN, ZW2, & - PRSS*PTSTEP, PRGS*PTSTEP, & - PSIGS, PMFCONV, PCLDFR, PSRCS, .TRUE., & - OSIGMAS, .FALSE., ZSIGQSAT2D, PLV=ZLV, PLS=ZLS, PCPH=ZCPH ) +! CALL CONDENSATION( IIU, IJU, IKU, IIB, IIE, IJB, IJE, IKB, IKE,1, 'T', 'CB02', 'CB', & +! PPABST, PZZ, ZW4, ZT, ZW3_IN, ZW3, ZW1_IN, ZW1, ZW2_IN, ZW2, & +! PRSS*PTSTEP, PRGS*PTSTEP, & +! PSIGS, PMFCONV, PCLDFR, PSRCS, .TRUE., & +! OSIGMAS, .FALSE., ZSIGQSAT2D, PLV=ZLV, PLS=ZLS, PCPH=ZCPH ) ! !* 3.2 compute the variation of mixing ratio ! diff --git a/src/mesonh/micro/ini_rain_ice_elec.f90 b/src/mesonh/micro/ini_rain_ice_elec.f90 index 85fbe6feaa20817f71223cf7af268cc2cc6a5286..c1cc3e0118aa113a2e54bcc259ae997e55e6978f 100644 --- a/src/mesonh/micro/ini_rain_ice_elec.f90 +++ b/src/mesonh/micro/ini_rain_ice_elec.f90 @@ -623,9 +623,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_RIM3) ) ALLOCATE( XGAMINC_RIM3(NGAMINC) ) +IF( .NOT.ASSOCIATED(XGAMINC_RIM1) ) CALL RAIN_ICE_ALLOCATE('XGAMINC_RIM1',NGAMINC) +IF( .NOT.ASSOCIATED(XGAMINC_RIM2) ) CALL RAIN_ICE_ALLOCATE('XGAMINC_RIM2',NGAMINC) +IF( .NOT.ALLOCATED(XGAMINC_RIM3) ) ALLOCATE(XGAMINC_RIM3(NGAMINC)) ! DO J1 = 1, NGAMINC ZBOUND = XGAMINC_BOUND_MIN * ZRATE**(J1-1) @@ -677,9 +677,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_ALLOCATE('XKER_RACCSS',NACCLBDAS,NACCLBDAR) +IF( .NOT.ASSOCIATED(XKER_RACCS ) ) CALL RAIN_ICE_ALLOCATE('XKER_RACCS',NACCLBDAS,NACCLBDAR) +IF( .NOT.ASSOCIATED(XKER_SACCRG) ) CALL RAIN_ICE_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 +890,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_ALLOCATE('XKER_SDRYG',NDRYLBDAG,NDRYLBDAS) ! CALL READ_XKER_SDRYG (KDRYLBDAG,KDRYLBDAS,KND, & PALPHAG,PNUG,PALPHAS,PNUS,PEGS,PBS,PCG,PDG,PCS,PDS, & @@ -956,7 +956,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_ALLOCATE('XKER_RDRYG',NDRYLBDAG,NDRYLBDAR) ! CALL READ_XKER_RDRYG (KDRYLBDAG,KDRYLBDAR,KND, & PALPHAG,PNUG,PALPHAR,PNUR,PEGR,PBR,PCG,PDG,PCR,PDR, & @@ -1074,7 +1074,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_ALLOCATE('XKER_SWETH',NWETLBDAH,NWETLBDAS) ! CALL READ_XKER_SWETH (KWETLBDAH,KWETLBDAS,KND, & PALPHAH,PNUH,PALPHAS,PNUS,PEHS,PBS,PCH,PDH,PCS,PDS, & @@ -1140,7 +1140,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_ALLOCATE('XKER_GWETH',NWETLBDAH,NWETLBDAG) ! CALL READ_XKER_GWETH (KWETLBDAH,KWETLBDAG,KND, & PALPHAH,PNUH,PALPHAG,PNUG,PEHG,PBG,PCH,PDH,PCG,PDG, & diff --git a/src/mesonh/micro/lima_adjust_split.f90 b/src/mesonh/micro/lima_adjust_split.f90 index ab87f141f0ee8d1dc4cb3bae80bf3d81b4259f8c..a763ab27eb984057050d2ac119d11e60af03f5d6 100644 --- a/src/mesonh/micro/lima_adjust_split.f90 +++ b/src/mesonh/micro/lima_adjust_split.f90 @@ -509,12 +509,12 @@ DO JITER =1,ITERMAX ZRI=0. ZSIGS=PSIGS ZSIGQSAT2D(:,:)=PSIGQSAT - CALL CONDENSATION(IIU, IJU, IKU, IIB, IIE, IJB, IJE, IKB, IKE, 1, 'S', & - HCONDENS, HLAMBDA3, & - PPABST, PZZ, PRHODREF, ZT, ZRV_IN, ZRV, ZRC_IN, ZRC, ZRI_IN, ZRI,& - PRSS*PTSTEP, PRGS*PTSTEP, & - ZSIGS, PMFCONV, PCLDFR, PSRCS, .FALSE., OSIGMAS, .FALSE., & - ZSIGQSAT2D, PLV=ZLV, PLS=ZLS, PCPH=ZCPH ) + !CALL CONDENSATION(IIU, IJU, IKU, IIB, IIE, IJB, IJE, IKB, IKE, 1, 'S', & + ! HCONDENS, HLAMBDA3, & + ! PPABST, PZZ, PRHODREF, ZT, ZRV_IN, ZRV, ZRC_IN, ZRC, ZRI_IN, ZRI,& + ! PRSS*PTSTEP, PRGS*PTSTEP, & + ! ZSIGS, PMFCONV, PCLDFR, PSRCS, .FALSE., OSIGMAS, .FALSE., & + ! ZSIGQSAT2D, PLV=ZLV, PLS=ZLS, PCPH=ZCPH ) PCLDFR(:,:,:) = MIN(PCLDFR(:,:,:) + PCF_MF(:,:,:) , 1.) ZRV(:,:,:) = ZRV(:,:,:) - MAX(MIN(PRC_MF(:,:,:), ZRV(:,:,:)),0.) ZRC(:,:,:) = ZRC(:,:,:) + MAX(MIN(PRC_MF(:,:,:), ZRV(:,:,:)),0.) diff --git a/src/mesonh/micro/radtr_satel.f90 b/src/mesonh/micro/radtr_satel.f90 index ccad5e716ca659cfd4a058ce37ea5b38b06ad531..988164974926d66b9ca7a4dbdd8762b0f05fabef 100644 --- a/src/mesonh/micro/radtr_satel.f90 +++ b/src/mesonh/micro/radtr_satel.f90 @@ -484,9 +484,9 @@ IF( SIZE(PRT(:,:,:,:),4) >= 2 ) THEN ALLOCATE(ZRHO(IIU,IJU,IKU)) ZRHO=1. !unused ZSIGQSAT2D(:,:)=PSIGQSAT - CALL CONDENSATION( IIU, IJU, IKU, IIB, IIE, IJB, IJE, IKB, IKE, 1, 'T', 'CB02', 'CB',& - PPABST, PZZ, ZRHO, ZTEMP, ZRV_IN, ZRV_OUT, ZRC_IN, ZRC_OUT, ZRI_IN, ZRI_OUT, PRT(:,:,:,5), PRT(:,:,:,6), PSIGS,& - PMFCONV, ZNCLD, ZSIGRC, OUSERI, OSIGMAS, .FALSE., PSIGQSAT=ZSIGQSAT2D ) + !CALL CONDENSATION( IIU, IJU, IKU, IIB, IIE, IJB, IJE, IKB, IKE, 1, 'T', 'CB02', 'CB',& + ! PPABST, PZZ, ZRHO, ZTEMP, ZRV_IN, ZRV_OUT, ZRC_IN, ZRC_OUT, ZRI_IN, ZRI_OUT, PRT(:,:,:,5), PRT(:,:,:,6), PSIGS,& + ! PMFCONV, ZNCLD, ZSIGRC, OUSERI, OSIGMAS, .FALSE., PSIGQSAT=ZSIGQSAT2D ) DEALLOCATE(ZTEMP,ZSIGRC) DEALLOCATE(ZRV_OUT) ELSE