diff --git a/src/common/turb/mode_compute_function_thermo_mf.F90 b/src/common/turb/mode_compute_function_thermo_mf.F90 index 64cc93462a8539820657547cf78cff60ce859fb9..265a8c5cd77fd8425d3b17ce6dd0ac3b3b077120 100644 --- a/src/common/turb/mode_compute_function_thermo_mf.F90 +++ b/src/common/turb/mode_compute_function_thermo_mf.F90 @@ -8,7 +8,7 @@ ! IMPLICIT NONE CONTAINS - SUBROUTINE COMPUTE_FUNCTION_THERMO_MF( KRR,KRRL,KRRI, & + SUBROUTINE COMPUTE_FUNCTION_THERMO_MF(D, CST, KRR,KRRL,KRRI, & PTH, PR, PEXN, PFRAC_ICE, PPABS, & PT,PAMOIST,PATHETA ) ! ################################################################# @@ -50,7 +50,8 @@ CONTAINS !* 0. DECLARATIONS ! ------------ ! -USE MODD_CST +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t +USE MODD_CST, ONLY: CST_t USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! @@ -59,25 +60,27 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! +TYPE(DIMPHYEX_t), INTENT(IN) :: D +TYPE(CST_t), INTENT(IN) :: CST INTEGER, INTENT(IN) :: KRR ! number of moist var. INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. INTEGER, INTENT(IN) :: KRRI ! number of ice water var. -REAL, DIMENSION(:,:), INTENT(IN) :: PTH ! theta -REAL, DIMENSION(:,:,:), INTENT(IN) :: PR ! water species -REAL, DIMENSION(:,:) , INTENT(IN) :: PPABS,PEXN ! pressure, Exner funct. -REAL, DIMENSION(:,:) , INTENT(IN) :: PFRAC_ICE ! ice fraction +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTH ! theta +REAL, DIMENSION(D%NIT,D%NKT,KRR), INTENT(IN) :: PR ! water species +REAL, DIMENSION(D%NIT,D%NKT) , INTENT(IN) :: PPABS,PEXN ! pressure, Exner funct. +REAL, DIMENSION(D%NIT,D%NKT) , INTENT(IN) :: PFRAC_ICE ! ice fraction -REAL, DIMENSION(:,:), INTENT(OUT) :: PT ! temperature +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PT ! temperature -REAL, DIMENSION(:,:), INTENT(OUT) :: PAMOIST,PATHETA +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PAMOIST,PATHETA ! !------------------------------------------------------------------------------- ! !* 0.2 Declarations of local variables ! REAL :: ZEPS ! XMV / XMD -REAL, DIMENSION(SIZE(PTH,1),SIZE(PTH,2)) :: & +REAL, DIMENSION(D%NIT,D%NKT) :: & ZCP, & ! Cp ZE, & ! Saturation mixing ratio ZDEDT, & ! Saturation mixing ratio derivative @@ -94,21 +97,21 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE ! IF (LHOOK) CALL DR_HOOK('COMPUTE_FUNCTION_THERMO_MF',0,ZHOOK_HANDLE) ! - ZEPS = XMV / XMD + ZEPS = CST%XMV / CST%XMD ! !* Cph ! -ZCP=XCPD +ZCP=CST%XCPD -IF (KRR > 0) ZCP(:,:) = ZCP(:,:) + XCPV * PR(:,:,1) +IF (KRR > 0) ZCP(:,:) = ZCP(:,:) + CST%XCPV * PR(:,:,1) DO JRR = 2,1+KRRL ! loop on the liquid components - ZCP(:,:) = ZCP(:,:) + XCL * PR(:,:,JRR) + ZCP(:,:) = ZCP(:,:) + CST%XCL * PR(:,:,JRR) END DO DO JRR = 2+KRRL,1+KRRL+KRRI ! loop on the solid components - ZCP(:,:) = ZCP(:,:) + XCI * PR(:,:,JRR) + ZCP(:,:) = ZCP(:,:) + CST%XCI * PR(:,:,JRR) END DO !* Temperature @@ -122,11 +125,11 @@ IF ( KRRL >= 1 ) THEN ! !* Lv/Cph ! - ZLVOCP(:,:) = (XLVTT + (XCPV-XCL) * (PT(:,:)-XTT) ) / ZCP(:,:) + ZLVOCP(:,:) = (CST%XLVTT + (CST%XCPV-CST%XCL) * (PT(:,:)-CST%XTT) ) / ZCP(:,:) ! !* Saturation vapor pressure with respect to water ! - ZE(:,:) = EXP( XALPW - XBETAW/PT(:,:) - XGAMW*ALOG( PT(:,:) ) ) + ZE(:,:) = EXP( CST%XALPW - CST%XBETAW/PT(:,:) - CST%XGAMW*ALOG( PT(:,:) ) ) ! !* Saturation mixing ratio with respect to water ! @@ -134,7 +137,7 @@ IF ( KRRL >= 1 ) THEN ! !* Compute the saturation mixing ratio derivative (rvs') ! - ZDEDT(:,:) = ( XBETAW / PT(:,:) - XGAMW ) / PT(:,:) & + ZDEDT(:,:) = ( CST%XBETAW / PT(:,:) - CST%XGAMW ) / PT(:,:) & * ZE(:,:) * ( 1. + ZE(:,:) / ZEPS ) ! !* Compute Amoist @@ -148,9 +151,9 @@ IF ( KRRL >= 1 ) THEN ( 1. + ZDEDT(:,:) * ZLVOCP(:,:) ) * & ( & ZE(:,:) * (1. + ZE(:,:)/ZEPS) & - * ( -2.*XBETAW/PT(:,:) + XGAMW ) / PT(:,:)**2 & + * ( -2.*CST%XBETAW/PT(:,:) + CST%XGAMW ) / PT(:,:)**2 & +ZDEDT(:,:) * (1. + 2. * ZE(:,:)/ZEPS) & - * ( XBETAW/PT(:,:) - XGAMW ) / PT(:,:) & + * ( CST%XBETAW/PT(:,:) - CST%XGAMW ) / PT(:,:) & ) & - ZDEDT(:,:) & ) @@ -163,11 +166,11 @@ IF ( KRRL >= 1 ) THEN ! !* Ls/Cph ! - ZLSOCP(:,:) = (XLSTT + (XCPV-XCI) * (PT(:,:)-XTT) ) / ZCP(:,:) + ZLSOCP(:,:) = (CST%XLSTT + (CST%XCPV-CST%XCI) * (PT(:,:)-CST%XTT) ) / ZCP(:,:) ! !* Saturation vapor pressure with respect to ice ! - ZE(:,:) = EXP( XALPI - XBETAI/PT(:,:) - XGAMI*ALOG( PT(:,:) ) ) + ZE(:,:) = EXP( CST%XALPI - CST%XBETAI/PT(:,:) - CST%XGAMI*ALOG( PT(:,:) ) ) ! !* Saturation mixing ratio with respect to ice ! @@ -175,7 +178,7 @@ IF ( KRRL >= 1 ) THEN ! !* Compute the saturation mixing ratio derivative (rvs') ! - ZDEDT(:,:) = ( XBETAI / PT(:,:) - XGAMI ) / PT(:,:) & + ZDEDT(:,:) = ( CST%XBETAI / PT(:,:) - CST%XGAMI ) / PT(:,:) & * ZE(:,:) * ( 1. + ZE(:,:) / ZEPS ) ! !* Compute Amoist @@ -189,9 +192,9 @@ IF ( KRRL >= 1 ) THEN ( 1. + ZDEDT(:,:) * ZLSOCP(:,:) ) * & ( & ZE(:,:) * (1. + ZE(:,:)/ZEPS) & - * ( -2.*XBETAI/PT(:,:) + XGAMI ) / PT(:,:)**2 & + * ( -2.*CST%XBETAI/PT(:,:) + CST%XGAMI ) / PT(:,:)**2 & +ZDEDT(:,:) * (1. + 2. * ZE(:,:)/ZEPS) & - * ( XBETAI/PT(:,:) - XGAMI ) / PT(:,:) & + * ( CST%XBETAI/PT(:,:) - CST%XGAMI ) / PT(:,:) & ) & - ZDEDT(:,:) & ) diff --git a/src/common/turb/mode_compute_mf_cloud.F90 b/src/common/turb/mode_compute_mf_cloud.F90 index 7792adb25787829f9d597b25f55bd389ae29d32e..5ed752cb5bec17b56f9e98c53f5b2e785e346c50 100644 --- a/src/common/turb/mode_compute_mf_cloud.F90 +++ b/src/common/turb/mode_compute_mf_cloud.F90 @@ -11,7 +11,7 @@ IMPLICIT NONE CONTAINS ! ! ######spl - SUBROUTINE COMPUTE_MF_CLOUD(KKA,KKB,KKE,KKU,KKL,KRR,KRRL,KRRI,HMF_CLOUD,& + SUBROUTINE COMPUTE_MF_CLOUD(D, CST, PARAMMF, KRR, KRRL, KRRI, HMF_CLOUD,& PFRAC_ICE, & PRC_UP,PRI_UP,PEMF, & PTHL_UP, PRT_UP, PFRAC_UP, & @@ -60,6 +60,10 @@ CONTAINS !* 0. DECLARATIONS ! ------------ ! +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t +USE MODD_CST, ONLY: CST_t +USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALL_t +! USE MODE_MSG ! USE MODE_COMPUTE_MF_CLOUD_DIRECT, ONLY: COMPUTE_MF_CLOUD_DIRECT @@ -75,33 +79,31 @@ IMPLICIT NONE ! ! ! -INTEGER, INTENT(IN) :: KKA ! near ground array index -INTEGER, INTENT(IN) :: KKB ! near ground physical index -INTEGER, INTENT(IN) :: KKE ! uppest atmosphere physical index -INTEGER, INTENT(IN) :: KKU ! uppest atmosphere array index -INTEGER, INTENT(IN) :: KKL ! +1 if grid goes from ground to atmosphere top, -1 otherwise +TYPE(DIMPHYEX_t), INTENT(IN) :: D +TYPE(CST_t), INTENT(IN) :: CST +TYPE(PARAM_MFSHALL_t), INTENT(IN) :: PARAMMF INTEGER, INTENT(IN) :: KRR ! number of moist var. INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. INTEGER, INTENT(IN) :: KRRI ! number of ice water var. CHARACTER (LEN=4), INTENT(IN) :: HMF_CLOUD ! Type of statistical cloud scheme -REAL, DIMENSION(:,:), INTENT(IN) :: PFRAC_ICE ! liquid/ice fraction -REAL, DIMENSION(:,:), INTENT(IN) :: PRC_UP,PRI_UP,PEMF! updraft characteritics -REAL, DIMENSION(:,:), INTENT(IN) :: PTHL_UP, PRT_UP ! rc,w,Mass Flux,Thetal,rt -REAL, DIMENSION(:,:), INTENT(IN) :: PFRAC_UP ! Updraft Fraction -REAL, DIMENSION(:,:), INTENT(IN) :: PTHV_UP ! updraft thetaV -REAL, DIMENSION(:,:), INTENT(IN) :: PFRAC_ICE_UP ! liquid/solid fraction in updraft -REAL, DIMENSION(:,:), INTENT(IN) :: PRSAT_UP ! Rsat in updraft -REAL, DIMENSION(:,:), INTENT(IN) :: PEXNM ! exner function -REAL, DIMENSION(:,:), INTENT(IN) :: PTHLM, PRTM ! cons. var. at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PTHM, PTHVM ! theta and thetaV -REAL, DIMENSION(:,:,:), INTENT(IN) :: PRM ! water var. at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PDZZ, PZZ -INTEGER, DIMENSION(:), INTENT(IN) :: KKLCL ! index of updraft condensation level -REAL, DIMENSION(:,:), INTENT(IN) :: PPABSM, PRHODREF ! environement -REAL, DIMENSION(:,:), INTENT(OUT) :: PRC_MF, PRI_MF ! cloud content (INPUT=environment, OUTPUT=conv. cloud) -REAL, DIMENSION(:,:), INTENT(OUT) :: PCF_MF ! and cloud fraction for MF scheme -REAL, DIMENSION(:,:), INTENT(OUT) :: PSIGMF ! SQRT(variance) for statistical cloud scheme -REAL, DIMENSION(:), INTENT(IN) :: PDEPTH ! Deepness of cloud +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PFRAC_ICE ! liquid/ice fraction +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRC_UP,PRI_UP,PEMF! updraft characteritics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHL_UP, PRT_UP ! rc,w,Mass Flux,Thetal,rt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PFRAC_UP ! Updraft Fraction +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHV_UP ! updraft thetaV +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PFRAC_ICE_UP ! liquid/solid fraction in updraft +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRSAT_UP ! Rsat in updraft +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PEXNM ! exner function +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHLM, PRTM ! cons. var. at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHM, PTHVM ! theta and thetaV +REAL, DIMENSION(D%NIT,D%NKT,KRR), INTENT(IN) :: PRM ! water var. at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDZZ, PZZ +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KKLCL ! index of updraft condensation level +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PPABSM, PRHODREF ! environement +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PRC_MF, PRI_MF ! cloud content (INPUT=environment, OUTPUT=conv. cloud) +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PCF_MF ! and cloud fraction for MF scheme +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PSIGMF ! SQRT(variance) for statistical cloud scheme +REAL, DIMENSION(D%NIT), INTENT(IN) :: PDEPTH ! Deepness of cloud ! ! 1.2 Declaration of local variables @@ -122,14 +124,14 @@ PSIGMF = 0. IF (HMF_CLOUD == 'DIRE') THEN !Direct cloud scheme - CALL COMPUTE_MF_CLOUD_DIRECT(KKB, KKE, KKL, & + CALL COMPUTE_MF_CLOUD_DIRECT(D, PARAMMF, & &KKLCL(:), PFRAC_UP(:,:), PRC_UP(:,:), PRI_UP(:,:),& &PRC_MF(:,:), PRI_MF(:,:), PCF_MF(:,:)) ! ELSEIF (HMF_CLOUD == 'STAT') THEN !Statistical scheme using the PDF proposed by Bougeault (81, 82) and !Bechtold et al (95). - CALL COMPUTE_MF_CLOUD_STAT(KKA, KKB, KKE, KKU, KKL, KRR, KRRL, KRRI,& + CALL COMPUTE_MF_CLOUD_STAT(D, CST, PARAMMF, KRR, KRRL, KRRI,& &PFRAC_ICE,& &PTHLM, PRTM, PPABSM, PRM,& &PDZZ, PTHM, PEXNM,& @@ -137,7 +139,7 @@ ELSEIF (HMF_CLOUD == 'STAT') THEN &PSIGMF) ELSEIF (HMF_CLOUD == 'BIGA') THEN !Statistical scheme using the bi-gaussian PDF proposed by E. Perraud. - CALL COMPUTE_MF_CLOUD_BIGAUS(KKA, KKB, KKE, KKU, KKL,& + CALL COMPUTE_MF_CLOUD_BIGAUS(D, CST, PARAMMF,& &PEMF, PDEPTH,& &PRT_UP, PTHV_UP, PFRAC_ICE_UP, PRSAT_UP,& &PRTM, PTHM, PTHVM,& diff --git a/src/common/turb/mode_compute_mf_cloud_bigaus.F90 b/src/common/turb/mode_compute_mf_cloud_bigaus.F90 index 86d33090bb8e41b731f5e583d1ef19746f3a7d96..cc6818be72f6901dc1a9937bad5fb170d37c9959 100644 --- a/src/common/turb/mode_compute_mf_cloud_bigaus.F90 +++ b/src/common/turb/mode_compute_mf_cloud_bigaus.F90 @@ -9,7 +9,7 @@ ! IMPLICIT NONE CONTAINS - SUBROUTINE COMPUTE_MF_CLOUD_BIGAUS(KKA, KKB, KKE, KKU, KKL,& + SUBROUTINE COMPUTE_MF_CLOUD_BIGAUS(D, CST, PARAMMF,& PEMF, PDEPTH,& PRT_UP, PTHV_UP, PFRAC_ICE_UP, PRSAT_UP,& PRTM, PTHM, PTHVM,& @@ -57,8 +57,9 @@ CONTAINS ! !* 0. DECLARATIONS ! ------------ -USE MODD_PARAM_MFSHALL_n, ONLY : XALPHA_MF, XSIGMA_MF -USE MODD_CST, ONLY : XPI, XG +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t +USE MODD_CST, ONLY: CST_t +USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALL_t ! USE MODI_SHUMAN_MF, ONLY: MZF_MF, GZ_M_W_MF USE MODI_GAMMA_INC @@ -72,35 +73,33 @@ IMPLICIT NONE ! !* 0.1 Declaration of Arguments ! -INTEGER, INTENT(IN) :: KKA ! near ground array index -INTEGER, INTENT(IN) :: KKB ! near ground physical index -INTEGER, INTENT(IN) :: KKE ! uppest atmosphere physical index -INTEGER, INTENT(IN) :: KKU ! uppest atmosphere array index -INTEGER, INTENT(IN) :: KKL ! +1 if grid goes from ground to atmosphere top, -1 otherwise -REAL, DIMENSION(:,:), INTENT(IN) :: PEMF ! updraft characteritics -REAL, DIMENSION(:), INTENT(IN) :: PDEPTH ! Deepness of cloud -REAL, DIMENSION(:,:), INTENT(IN) :: PTHV_UP, PRSAT_UP, PRT_UP ! updraft characteritics -REAL, DIMENSION(:,:), INTENT(IN) :: PFRAC_ICE_UP ! liquid/ice fraction in updraft -REAL, DIMENSION(:,:), INTENT(IN) :: PTHM, PRTM, PTHVM ! env. var. at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PDZZ, PZZ -REAL, DIMENSION(:,:), INTENT(IN) :: PRHODREF -REAL, DIMENSION(:,:), INTENT(OUT) :: PRC_MF, PRI_MF ! cloud content -REAL, DIMENSION(:,:), INTENT(OUT) :: PCF_MF ! and cloud fraction for MF scheme +TYPE(DIMPHYEX_t), INTENT(IN) :: D +TYPE(CST_t), INTENT(IN) :: CST +TYPE(PARAM_MFSHALL_t), INTENT(IN) :: PARAMMF +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PEMF ! updraft characteritics +REAL, DIMENSION(D%NIT), INTENT(IN) :: PDEPTH ! Deepness of cloud +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHV_UP, PRSAT_UP, PRT_UP ! updraft characteritics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PFRAC_ICE_UP ! liquid/ice fraction in updraft +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHM, PRTM, PTHVM ! env. var. at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDZZ, PZZ +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRHODREF +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PRC_MF, PRI_MF ! cloud content +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PCF_MF ! and cloud fraction for MF scheme ! !* 0.1 Declaration of local variables ! ! -REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZGRAD_Z_RT, & ! +REAL, DIMENSION(D%NIT,D%NKT) :: ZGRAD_Z_RT, & ! & ZALPHA_UP_M, & ! Variables used to compute variance & ZSIGMF ! and sqrt(variance) -REAL, DIMENSION(SIZE(PTHM,1)) :: ZOMEGA_UP_M ! -REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZW1 ! working array +REAL, DIMENSION(D%NIT) :: ZOMEGA_UP_M ! +REAL, DIMENSION(D%NIT,D%NKT) :: ZW1 ! working array INTEGER :: JK ! vertical loop control -REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZEMF_M, ZTHV_UP_M, & ! +REAL, DIMENSION(D%NIT,D%NKT) :: ZEMF_M, ZTHV_UP_M, & ! & ZRSAT_UP_M, ZRT_UP_M,& ! Interpolation on mass points & ZFRAC_ICE_UP_M ! -REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZCOND ! condensate -REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZA, ZGAM ! used for integration +REAL, DIMENSION(D%NIT,D%NKT) :: ZCOND ! condensate +REAL, DIMENSION(D%NIT,D%NKT) :: ZA, ZGAM ! used for integration REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('COMPUTE_MF_CLOUD_BIGAUS',0,ZHOOK_HANDLE) @@ -113,19 +112,19 @@ IF (LHOOK) CALL DR_HOOK('COMPUTE_MF_CLOUD_BIGAUS',0,ZHOOK_HANDLE) ! ! !Vertical gradient of RT, result on mass points -ZW1(:,:)=GZ_M_W_MF(PRTM(:,:), PDZZ(:,:), KKA, KKU, KKL) -ZGRAD_Z_RT(:,:)=MZF_MF(ZW1(:,:), KKA, KKU, KKL) +ZW1(:,:)=GZ_M_W_MF(PRTM(:,:), PDZZ(:,:), D%NKA, D%NKU, D%NKL) +ZGRAD_Z_RT(:,:)=MZF_MF(ZW1(:,:), D%NKA, D%NKU, D%NKL) !Interpolation on mass points -ZTHV_UP_M(:,:) = MZF_MF(PTHV_UP(:,:), KKA, KKU, KKL) -ZRSAT_UP_M(:,:)= MZF_MF(PRSAT_UP(:,:), KKA, KKU, KKL) -ZRT_UP_M(:,:) = MZF_MF(PRT_UP(:,:), KKA, KKU, KKL) -ZEMF_M(:,:) = MZF_MF(PEMF(:,:), KKA, KKU, KKL) -ZFRAC_ICE_UP_M(:,:) = MZF_MF(PFRAC_ICE_UP(:,:), KKA, KKU, KKL) +ZTHV_UP_M(:,:) = MZF_MF(PTHV_UP(:,:), D%NKA, D%NKU, D%NKL) +ZRSAT_UP_M(:,:)= MZF_MF(PRSAT_UP(:,:), D%NKA, D%NKU, D%NKL) +ZRT_UP_M(:,:) = MZF_MF(PRT_UP(:,:), D%NKA, D%NKU, D%NKL) +ZEMF_M(:,:) = MZF_MF(PEMF(:,:), D%NKA, D%NKU, D%NKL) +ZFRAC_ICE_UP_M(:,:) = MZF_MF(PFRAC_ICE_UP(:,:), D%NKA, D%NKU, D%NKL) !computation of omega star up ZOMEGA_UP_M(:)=0. -DO JK=KKB,KKE,KKL +DO JK=D%NKB,D%NKE,D%NKL !Vertical integration over the entire column but only buoyant points are used !ZOMEGA_UP_M(:)=ZOMEGA_UP_M(:) + & ! ZEMF_M(:,JK) * & @@ -137,24 +136,24 @@ DO JK=KKB,KKE,KKL ZOMEGA_UP_M(:)=ZOMEGA_UP_M(:) + & ZEMF_M(:,JK) * & (ZTHV_UP_M(:,JK)-PTHVM(:,JK)) * & - (PZZ(:,JK+KKL)-PZZ(:,JK)) / & + (PZZ(:,JK+D%NKL)-PZZ(:,JK)) / & (PTHM(:,JK) * PRHODREF(:,JK)) ENDDO ZOMEGA_UP_M(:)=MAX(ZOMEGA_UP_M(:), 1.E-20) -ZOMEGA_UP_M(:)=(XG*ZOMEGA_UP_M(:))**(1./3.) +ZOMEGA_UP_M(:)=(CST%XG*ZOMEGA_UP_M(:))**(1./3.) !computation of alpha up -DO JK=KKA,KKU,KKL - ZALPHA_UP_M(:,JK)=ZEMF_M(:,JK)/(XALPHA_MF*PRHODREF(:,JK)*ZOMEGA_UP_M(:)) +DO JK=D%NKA,D%NKU,D%NKL + ZALPHA_UP_M(:,JK)=ZEMF_M(:,JK)/(PARAMMF%XALPHA_MF*PRHODREF(:,JK)*ZOMEGA_UP_M(:)) ENDDO ZALPHA_UP_M(:,:)=MAX(0., MIN(ZALPHA_UP_M(:,:), 1.)) !computation of sigma of the distribution -DO JK=KKA,KKU,KKL +DO JK=D%NKA,D%NKU,D%NKL ZSIGMF(:,JK)=ZEMF_M(:,JK) * & (ZRT_UP_M(:,JK) - PRTM(:,JK)) * & PDEPTH(:) * ZGRAD_Z_RT(:,JK) / & - (XSIGMA_MF * ZOMEGA_UP_M(:) * PRHODREF(:,JK)) + (PARAMMF%XSIGMA_MF * ZOMEGA_UP_M(:) * PRHODREF(:,JK)) ENDDO ZSIGMF(:,:)=SQRT(MAX(ABS(ZSIGMF(:,:)), 1.E-40)) ! @@ -166,13 +165,13 @@ ZSIGMF(:,:)=SQRT(MAX(ABS(ZSIGMF(:,:)), 1.E-40)) ZA(:,:)=(ZRSAT_UP_M(:,:)-ZRT_UP_M(:,:))/(sqrt(2.)*ZSIGMF(:,:)) !Approximation of erf function -ZGAM(:,:)=1-SIGN(1., ZA(:,:))*SQRT(1-EXP(-4*ZA(:,:)**2/XPI)) +ZGAM(:,:)=1-SIGN(1., ZA(:,:))*SQRT(1-EXP(-4*ZA(:,:)**2/CST%XPI)) !computation of cloud fraction PCF_MF(:,:)=MAX( 0., MIN(1.,0.5*ZGAM(:,:) * ZALPHA_UP_M(:,:))) !computation of condensate, then PRC and PRI -ZCOND(:,:)=(EXP(-ZA(:,:)**2)-ZA(:,:)*SQRT(XPI)*ZGAM(:,:))*ZSIGMF(:,:)/SQRT(2.*XPI) * ZALPHA_UP_M(:,:) +ZCOND(:,:)=(EXP(-ZA(:,:)**2)-ZA(:,:)*SQRT(CST%XPI)*ZGAM(:,:))*ZSIGMF(:,:)/SQRT(2.*CST%XPI) * ZALPHA_UP_M(:,:) ZCOND(:,:)=MAX(ZCOND(:,:), 0.) !due to approximation of ZGAM value, ZCOND could be slightly negative PRC_MF(:,:)=(1.-ZFRAC_ICE_UP_M(:,:)) * ZCOND(:,:) PRI_MF(:,:)=( ZFRAC_ICE_UP_M(:,:)) * ZCOND(:,:) diff --git a/src/common/turb/mode_compute_mf_cloud_direct.F90 b/src/common/turb/mode_compute_mf_cloud_direct.F90 index 8db27676d2e1d61c5d6dfd5b859699106e6756c2..748ef6eceebd94734ce7fa7804581815f47369eb 100644 --- a/src/common/turb/mode_compute_mf_cloud_direct.F90 +++ b/src/common/turb/mode_compute_mf_cloud_direct.F90 @@ -8,7 +8,7 @@ ! IMPLICIT NONE CONTAINS - SUBROUTINE COMPUTE_MF_CLOUD_DIRECT(KKB, KKE, KKL, & + SUBROUTINE COMPUTE_MF_CLOUD_DIRECT(D, PARAMMF, & &KKLCL, PFRAC_UP, PRC_UP, PRI_UP,& &PRC_MF, PRI_MF, PCF_MF) ! ################################################################# @@ -53,7 +53,8 @@ CONTAINS ! !* 0. DECLARATIONS ! ------------ -USE MODD_PARAM_MFSHALL_n, ONLY : XKCF_MF +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t +USE MODD_PARAM_MFSHALL_n, ONLY : PARAM_MFSHALL_t USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! @@ -61,14 +62,13 @@ IMPLICIT NONE ! !* 0.1 Declaration of Arguments ! -INTEGER, INTENT(IN) :: KKB ! near ground physical index -INTEGER, INTENT(IN) :: KKE ! uppest atmosphere physical index -INTEGER, INTENT(IN) :: KKL ! +1 if grid goes from ground to atmosphere top, -1 otherwise -INTEGER, DIMENSION(:), INTENT(IN) :: KKLCL ! index of updraft condensation level -REAL, DIMENSION(:,:), INTENT(IN) :: PFRAC_UP ! Updraft Fraction -REAL, DIMENSION(:,:), INTENT(IN) :: PRC_UP,PRI_UP ! updraft characteritics -REAL, DIMENSION(:,:), INTENT(OUT) :: PRC_MF, PRI_MF ! cloud content -REAL, DIMENSION(:,:), INTENT(OUT) :: PCF_MF ! and cloud fraction for MF scheme +TYPE(DIMPHYEX_t), INTENT(IN) :: D +TYPE(PARAM_MFSHALL_t), INTENT(IN) :: PARAMMF +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KKLCL ! index of updraft condensation level +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PFRAC_UP ! Updraft Fraction +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRC_UP,PRI_UP ! updraft characteritics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PRC_MF, PRI_MF ! cloud content +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PCF_MF ! and cloud fraction for MF scheme ! !* 0.1 Declaration of local variables ! @@ -89,21 +89,21 @@ PRC_MF(:,:)=0. PRI_MF(:,:)=0. PCF_MF(:,:)=0. -DO JI=1,SIZE(PCF_MF,1) +DO JI=1,D%NIT #ifdef REPRO48 - JK0=KKLCL(JI)-KKL ! first mass level with cloud - JK0=MAX(JK0, MIN(KKB,KKE)) !protection if KKL=1 - JK0=MIN(JK0, MAX(KKB,KKE)) !protection if KKL=-1 - DO JK=JK0,KKE-KKL,KKL + JK0=KKLCL(JI)-D%NKL ! first mass level with cloud + JK0=MAX(JK0, MIN(D%NKB,D%NKE)) !protection if KKL=1 + JK0=MIN(JK0, MAX(D%NKB,D%NKE)) !protection if KKL=-1 + DO JK=JK0,D%NKE-D%NKL,D%NKL #else - DO JK=KKLCL(JI),KKE-KKL,KKL + DO JK=KKLCL(JI),D%NKE-D%NKL,D%NKL #endif - PCF_MF(JI,JK ) = MAX( 0., MIN(1.,XKCF_MF *0.5* ( & - & PFRAC_UP(JI,JK) + PFRAC_UP(JI,JK+KKL) ) )) - PRC_MF(JI,JK) = 0.5* XKCF_MF * ( PFRAC_UP(JI,JK)*PRC_UP(JI,JK) & - + PFRAC_UP(JI,JK+KKL)*PRC_UP(JI,JK+KKL) ) - PRI_MF(JI,JK) = 0.5* XKCF_MF * ( PFRAC_UP(JI,JK)*PRI_UP(JI,JK) & - + PFRAC_UP(JI,JK+KKL)*PRI_UP(JI,JK+KKL) ) + PCF_MF(JI,JK ) = MAX( 0., MIN(1.,PARAMMF%XKCF_MF *0.5* ( & + & PFRAC_UP(JI,JK) + PFRAC_UP(JI,JK+D%NKL) ) )) + PRC_MF(JI,JK) = 0.5* PARAMMF%XKCF_MF * ( PFRAC_UP(JI,JK)*PRC_UP(JI,JK) & + + PFRAC_UP(JI,JK+D%NKL)*PRC_UP(JI,JK+D%NKL) ) + PRI_MF(JI,JK) = 0.5* PARAMMF%XKCF_MF * ( PFRAC_UP(JI,JK)*PRI_UP(JI,JK) & + + PFRAC_UP(JI,JK+D%NKL)*PRI_UP(JI,JK+D%NKL) ) END DO END DO diff --git a/src/common/turb/mode_compute_mf_cloud_stat.F90 b/src/common/turb/mode_compute_mf_cloud_stat.F90 index 12fcce462fef6b0eb2c4b73fec8b6058a78ada08..5a75cbd639ffd34120ead739c224419b5ff0a319 100644 --- a/src/common/turb/mode_compute_mf_cloud_stat.F90 +++ b/src/common/turb/mode_compute_mf_cloud_stat.F90 @@ -9,7 +9,7 @@ IMPLICIT NONE CONTAINS ! ######spl - SUBROUTINE COMPUTE_MF_CLOUD_STAT(KKA, KKB, KKE, KKU, KKL, KRR, KRRL, KRRI,& + SUBROUTINE COMPUTE_MF_CLOUD_STAT(D, CST, PARAMMF, KRR, KRRL, KRRI,& &PFRAC_ICE,& &PTHLM, PRTM, PPABSM, PRM,& &PDZZ, PTHM, PEXNM, & @@ -52,8 +52,9 @@ CONTAINS ! !* 0. DECLARATIONS ! ------------ -USE MODD_PARAM_MFSHALL_n, ONLY : XTAUSIGMF -USE MODD_PARAMETERS, ONLY : JPHEXT, JPVEXT +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t +USE MODD_CST, ONLY: CST_t +USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALL_t ! USE MODI_SHUMAN_MF, ONLY: MZF_MF, MZM_MF, GZ_M_W_MF USE MODE_COMPUTE_FUNCTION_THERMO_MF, ONLY: COMPUTE_FUNCTION_THERMO_MF @@ -65,31 +66,29 @@ IMPLICIT NONE ! !* 0.1 Declaration of Arguments ! -INTEGER, INTENT(IN) :: KKA ! near ground array index -INTEGER, INTENT(IN) :: KKB ! near ground physical index -INTEGER, INTENT(IN) :: KKE ! uppest atmosphere physical index -INTEGER, INTENT(IN) :: KKU ! uppest atmosphere array index -INTEGER, INTENT(IN) :: KKL ! +1 if grid goes from ground to atmosphere top, -1 otherwise +TYPE(DIMPHYEX_t), INTENT(IN) :: D +TYPE(CST_t), INTENT(IN) :: CST +TYPE(PARAM_MFSHALL_t), INTENT(IN) :: PARAMMF INTEGER, INTENT(IN) :: KRR ! number of moist var. INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. INTEGER, INTENT(IN) :: KRRI ! number of ice water var. -REAL, DIMENSION(:,:), INTENT(IN) :: PFRAC_ICE ! liquid/ice fraction -REAL, DIMENSION(:,:), INTENT(IN) :: PTHLM, PRTM ! cons. var. at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PPABSM ! Pressure at time t-1 -REAL, DIMENSION(:,:,:), INTENT(IN) :: PRM ! water var. at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PDZZ -REAL, DIMENSION(:,:), INTENT(IN) :: PTHM ! environement -REAL, DIMENSION(:,:), INTENT(IN) :: PEXNM -REAL, DIMENSION(:,:), INTENT(IN) :: PEMF ! updraft characteritics -REAL, DIMENSION(:,:), INTENT(IN) :: PTHL_UP, PRT_UP ! rc,w,Mass Flux,Thetal,rt -REAL, DIMENSION(:,:), INTENT(OUT) :: PSIGMF ! SQRT(variance) for statistical cloud scheme +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PFRAC_ICE ! liquid/ice fraction +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHLM, PRTM ! cons. var. at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PPABSM ! Pressure at time t-1 +REAL, DIMENSION(D%NIT,D%NKT,KRR), INTENT(IN) :: PRM ! water var. at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDZZ +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHM ! environement +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PEXNM +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PEMF ! updraft characteritics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHL_UP, PRT_UP ! rc,w,Mass Flux,Thetal,rt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PSIGMF ! SQRT(variance) for statistical cloud scheme ! !* 0.1 Declaration of local variables ! ! -REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2)) :: ZFLXZ -REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2)) :: ZT -REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2)) :: ZAMOIST, ZATHETA +REAL, DIMENSION(D%NIT,D%NKT) :: ZFLXZ +REAL, DIMENSION(D%NIT,D%NKT) :: ZT +REAL, DIMENSION(D%NIT,D%NKT) :: ZAMOIST, ZATHETA REAL(KIND=JPRB) :: ZHOOK_HANDLE ! !* 0.2 initialisation @@ -103,7 +102,7 @@ IF (LHOOK) CALL DR_HOOK('COMPUTE_MF_CLOUD_STAT',0,ZHOOK_HANDLE) ! ------------------------------------------------ ! ! Thermodynamics functions -CALL COMPUTE_FUNCTION_THERMO_MF( KRR,KRRL,KRRI, & +CALL COMPUTE_FUNCTION_THERMO_MF( D, CST, KRR,KRRL,KRRI, & PTHM,PRM,PEXNM,PFRAC_ICE,PPABSM, & ZT,ZAMOIST,ZATHETA ) ! @@ -113,14 +112,14 @@ IF (KRRL > 0) THEN ! ! - ZFLXZ(:,:) = -2 * XTAUSIGMF * PEMF(:,:)*(PTHL_UP(:,:)-MZM_MF(PTHLM(:,:), KKA, KKU, KKL)) * & - GZ_M_W_MF(PTHLM(:,:),PDZZ(:,:), KKA, KKU, KKL) + ZFLXZ(:,:) = -2 * PARAMMF%XTAUSIGMF * PEMF(:,:)*(PTHL_UP(:,:)-MZM_MF(PTHLM(:,:), D%NKA, D%NKU, D%NKL)) * & + GZ_M_W_MF(PTHLM(:,:),PDZZ(:,:), D%NKA, D%NKU, D%NKL) ! ! Avoid negative values ZFLXZ(:,:) = MAX(0.,ZFLXZ(:,:)) - PSIGMF(:,:) = MZF_MF(ZFLXZ(:,:), KKA, KKU, KKL) * ZATHETA(:,:)**2 + PSIGMF(:,:) = MZF_MF(ZFLXZ(:,:), D%NKA, D%NKU, D%NKL) * ZATHETA(:,:)**2 ! ! @@ -129,14 +128,14 @@ IF (KRRL > 0) THEN ! ! ! - ZFLXZ(:,:) = -2 * XTAUSIGMF * PEMF(:,:)*(PRT_UP(:,:)-MZM_MF(PRTM(:,:), KKA, KKU, KKL)) * & - GZ_M_W_MF(PRTM(:,:),PDZZ(:,:), KKA, KKU, KKL) + ZFLXZ(:,:) = -2 * PARAMMF%XTAUSIGMF * PEMF(:,:)*(PRT_UP(:,:)-MZM_MF(PRTM(:,:), D%NKA, D%NKU, D%NKL)) * & + GZ_M_W_MF(PRTM(:,:),PDZZ(:,:), D%NKA, D%NKU, D%NKL) ! ! Avoid negative values ZFLXZ(:,:) = MAX(0.,ZFLXZ(:,:)) ! - PSIGMF(:,:) = PSIGMF(:,:) + ZAMOIST(:,:) **2 * MZF_MF(ZFLXZ(:,:), KKA, KKU, KKL) + PSIGMF(:,:) = PSIGMF(:,:) + ZAMOIST(:,:) **2 * MZF_MF(ZFLXZ(:,:), D%NKA, D%NKU, D%NKL) ! ! 1.3 Vertical part of Sigma_s ! diff --git a/src/common/turb/mode_compute_updraft_raha.F90 b/src/common/turb/mode_compute_updraft_raha.F90 index bcfa159883e238067f854e637ce167ad3b6858d2..3cbacbc0cb32040508743aa089a2fab325bd3378 100644 --- a/src/common/turb/mode_compute_updraft_raha.F90 +++ b/src/common/turb/mode_compute_updraft_raha.F90 @@ -86,65 +86,65 @@ LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum LOGICAL, INTENT(IN) :: ONOMIXLG ! False if mixing of lagrangian tracer INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PZZ ! Height at the flux point -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PDZZ ! Metrics coefficient +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PZZ ! Height at the flux point +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDZZ ! Metrics coefficient REAL, DIMENSION(D%NIT), INTENT(IN) :: PSFTH,PSFRV ! normal surface fluxes of theta,rv,(u,v) parallel to the orography ! -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PPABSM ! Pressure at t-dt -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PRHODREF ! dry density of the +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PPABSM ! Pressure at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRHODREF ! dry density of the ! reference state -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PUM ! u mean wind -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PVM ! v mean wind -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PTKEM ! TKE at t-dt - -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PEXNM ! Exner function at t-dt -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PTHM ! liquid pot. temp. at t-dt -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PRVM ! vapor mixing ratio at t-dt -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PTHLM,PRTM ! cons. var. at t-dt - -REAL, DIMENSION(D%NIT,D%NJT,KSV), INTENT(IN) :: PSVM ! scalar var. at t-dt - -REAL, DIMENSION(D%NIT,D%NJT), INTENT(OUT) :: PTHL_UP,PRT_UP ! updraft properties -REAL, DIMENSION(D%NIT,D%NJT), INTENT(OUT) :: PU_UP, PV_UP ! updraft wind components -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PRV_UP,PRC_UP ! updraft rv, rc -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PRI_UP,PTHV_UP ! updraft ri, THv -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PW_UP,PFRAC_UP ! updraft w, fraction -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PFRAC_ICE_UP ! liquid/solid fraction in updraft -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PRSAT_UP ! Rsat - -REAL, DIMENSION(D%NIT,D%NJT,KSV), INTENT(OUT) :: PSV_UP ! updraft scalar var. +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PUM ! u mean wind +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PVM ! v mean wind +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTKEM ! TKE at t-dt + +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PEXNM ! Exner function at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHM ! liquid pot. temp. at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRVM ! vapor mixing ratio at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHLM,PRTM ! cons. var. at t-dt + +REAL, DIMENSION(D%NIT,D%NKT,KSV), INTENT(IN) :: PSVM ! scalar var. at t-dt + +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PTHL_UP,PRT_UP ! updraft properties +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PU_UP, PV_UP ! updraft wind components +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PRV_UP,PRC_UP ! updraft rv, rc +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PRI_UP,PTHV_UP ! updraft ri, THv +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PW_UP,PFRAC_UP ! updraft w, fraction +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PFRAC_ICE_UP ! liquid/solid fraction in updraft +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PRSAT_UP ! Rsat + +REAL, DIMENSION(D%NIT,D%NKT,KSV), INTENT(OUT) :: PSV_UP ! updraft scalar var. -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PEMF,PDETR,PENTR ! Mass_flux, +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PEMF,PDETR,PENTR ! Mass_flux, ! detrainment,entrainment -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT) :: PBUO_INTEG ! Integrated Buoyancy +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PBUO_INTEG ! Integrated Buoyancy INTEGER, DIMENSION(D%NIT), INTENT(INOUT):: KKLCL,KKETL,KKCTL! LCL, ETL, CTL REAL, DIMENSION(:), INTENT(OUT) :: PDEPTH ! Deepness of cloud ! 1.2 Declaration of local variables ! ! ! Mean environment variables at t-dt at flux point -REAL, DIMENSION(D%NIT,D%NJT) :: ZTHM_F,ZRVM_F,ZRCM_F ! Theta,rv of +REAL, DIMENSION(D%NIT,D%NKT) :: ZTHM_F,ZRVM_F,ZRCM_F ! Theta,rv of ! updraft environnement -REAL, DIMENSION(D%NIT,D%NJT) :: ZRTM_F, ZTHLM_F, ZTKEM_F ! rt, thetal,TKE,pressure, -REAL, DIMENSION(D%NIT,D%NJT) :: ZUM_F,ZVM_F,ZRHO_F ! density,momentum -REAL, DIMENSION(D%NIT,D%NJT) :: ZPRES_F,ZTHVM_F,ZTHVM ! interpolated at the flux point -REAL, DIMENSION(D%NIT,D%NJT) :: ZG_O_THVREF ! g*ThetaV ref -REAL, DIMENSION(D%NIT,D%NJT) :: ZW_UP2 ! w**2 of the updraft +REAL, DIMENSION(D%NIT,D%NKT) :: ZRTM_F, ZTHLM_F, ZTKEM_F ! rt, thetal,TKE,pressure, +REAL, DIMENSION(D%NIT,D%NKT) :: ZUM_F,ZVM_F,ZRHO_F ! density,momentum +REAL, DIMENSION(D%NIT,D%NKT) :: ZPRES_F,ZTHVM_F,ZTHVM ! interpolated at the flux point +REAL, DIMENSION(D%NIT,D%NKT) :: ZG_O_THVREF ! g*ThetaV ref +REAL, DIMENSION(D%NIT,D%NKT) :: ZW_UP2 ! w**2 of the updraft -REAL, DIMENSION(D%NIT,D%NJT,KSV) :: ZSVM_F ! scalar variables +REAL, DIMENSION(D%NIT,D%NKT,KSV) :: ZSVM_F ! scalar variables -REAL, DIMENSION(D%NIT,D%NJT) :: ZTH_UP ! updraft THETA +REAL, DIMENSION(D%NIT,D%NKT) :: ZTH_UP ! updraft THETA REAL, DIMENSION(D%NIT) :: ZT_UP ! updraft T REAL, DIMENSION(D%NIT) :: ZLVOCPEXN ! updraft L REAL, DIMENSION(D%NIT) :: ZCP ! updraft cp -REAL, DIMENSION(D%NIT,D%NJT) :: ZBUO ! Buoyancy -REAL, DIMENSION(D%NIT,D%NJT) :: ZTHS_UP,ZTHSM +REAL, DIMENSION(D%NIT,D%NKT) :: ZBUO ! Buoyancy +REAL, DIMENSION(D%NIT,D%NKT) :: ZTHS_UP,ZTHSM -REAL, DIMENSION(D%NIT,D%NJT) :: ZCOEF ! diminution coefficient for too high clouds +REAL, DIMENSION(D%NIT,D%NKT) :: ZCOEF ! diminution coefficient for too high clouds REAL, DIMENSION(D%NIT) :: ZWTHVSURF ! Surface w'thetav' @@ -165,7 +165,7 @@ LOGICAL, DIMENSION(D%NIT) :: GTEST,GTESTLCL,GTESTETL LOGICAL :: GLMIX ! To choose upward or downward mixing length LOGICAL, DIMENSION(D%NIT) :: GWORK1 -LOGICAL, DIMENSION(D%NIT,D%NJT) :: GWORK2 +LOGICAL, DIMENSION(D%NIT,D%NKT) :: GWORK2 INTEGER :: ITEST @@ -174,7 +174,7 @@ REAL, DIMENSION(D%NIT) :: ZRC_UP, ZRI_UP, ZRV_UP, ZWP2, ZRSATW, ZRSATI LOGICAL, DIMENSION(D%NIT) :: GTEST_FER REAL, DIMENSION(D%NIT) :: ZPHI,ZALIM_STAR_TOT -REAL, DIMENSION(D%NIT,D%NJT) :: ZDTHETASDZ,ZALIM_STAR,ZZDZ,ZZZ +REAL, DIMENSION(D%NIT,D%NKT) :: ZDTHETASDZ,ZALIM_STAR,ZZDZ,ZZZ INTEGER, DIMENSION(D%NIT) :: IALIM REAL, DIMENSION(D%NIT) :: ZTEST,ZDZ,ZWUP_MEAN ! diff --git a/src/common/turb/mode_compute_updraft_rhcj10.F90 b/src/common/turb/mode_compute_updraft_rhcj10.F90 index f0524b89a4d9c3e7a94fb58dc4a7c474dc591400..6de2c738f2acc7f98770534d194db36554fe7eee 100644 --- a/src/common/turb/mode_compute_updraft_rhcj10.F90 +++ b/src/common/turb/mode_compute_updraft_rhcj10.F90 @@ -94,65 +94,65 @@ LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum LOGICAL, INTENT(IN) :: ONOMIXLG ! False if mixing of lagrangian tracer INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PZZ ! Height at the flux point -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PDZZ ! Metrics coefficient +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PZZ ! Height at the flux point +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDZZ ! Metrics coefficient REAL, DIMENSION(D%NIT), INTENT(IN) :: PSFTH,PSFRV ! normal surface fluxes of theta,rv,(u,v) parallel to the orography -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PPABSM ! Pressure at t-dt -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PRHODREF ! dry density of the +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PPABSM ! Pressure at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRHODREF ! dry density of the ! reference state -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PUM ! u mean wind -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PVM ! v mean wind -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PTKEM ! TKE at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PUM ! u mean wind +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PVM ! v mean wind +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTKEM ! TKE at t-dt ! !REAL, DIMENSION(:,:), INTENT(IN) :: PEXNM ! Exner function at t-dt -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PTHM ! pot. temp. at t-dt -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PRVM ! vapor mixing ratio at t-dt -REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PTHLM,PRTM ! cons. var. at t-dt - -REAL, DIMENSION(D%NIT,D%NJT,KSV), INTENT(IN) :: PSVM ! scalar var. at t-dt - -REAL, DIMENSION(D%NIT,D%NJT), INTENT(OUT) :: PTHL_UP,PRT_UP ! updraft properties -REAL, DIMENSION(D%NIT,D%NJT), INTENT(OUT) :: PU_UP, PV_UP ! updraft wind components -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PRV_UP,PRC_UP ! updraft rv, rc -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PRI_UP ! updraft ri -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PTHV_UP ! updraft THv -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PW_UP,PFRAC_UP ! updraft w, fraction -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PFRAC_ICE_UP ! liquid/solid fraction in updraft -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PRSAT_UP ! Rsat - -REAL, DIMENSION(D%NIT,D%NJT,KSV), INTENT(OUT) :: PSV_UP ! updraft scalar var. +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHM ! pot. temp. at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRVM ! vapor mixing ratio at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHLM,PRTM ! cons. var. at t-dt + +REAL, DIMENSION(D%NIT,D%NKT,KSV), INTENT(IN) :: PSVM ! scalar var. at t-dt + +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PTHL_UP,PRT_UP ! updraft properties +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PU_UP, PV_UP ! updraft wind components +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PRV_UP,PRC_UP ! updraft rv, rc +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PRI_UP ! updraft ri +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PTHV_UP ! updraft THv +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PW_UP,PFRAC_UP ! updraft w, fraction +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PFRAC_ICE_UP ! liquid/solid fraction in updraft +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PRSAT_UP ! Rsat + +REAL, DIMENSION(D%NIT,D%NKT,KSV), INTENT(OUT) :: PSV_UP ! updraft scalar var. -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT):: PEMF,PDETR,PENTR ! Mass_flux, +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PEMF,PDETR,PENTR ! Mass_flux, ! detrainment,entrainment -REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT) :: PBUO_INTEG ! Integrated Buoyancy +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PBUO_INTEG ! Integrated Buoyancy INTEGER, DIMENSION(D%NIT), INTENT(INOUT):: KKLCL,KKETL,KKCTL! LCL, ETL, CTL REAL, DIMENSION(D%NIT), INTENT(OUT) :: PDEPTH ! Deepness of cloud ! 1.2 Declaration of local variables ! ! Mean environment variables at t-dt at flux point -REAL, DIMENSION(D%NIT,D%NJT) :: ZTHM_F,ZRVM_F ! Theta,rv of +REAL, DIMENSION(D%NIT,D%NKT) :: ZTHM_F,ZRVM_F ! Theta,rv of ! updraft environnement -REAL, DIMENSION(D%NIT,D%NJT) :: ZRTM_F, ZTHLM_F, ZTKEM_F ! rt, thetal,TKE,pressure, -REAL, DIMENSION(D%NIT,D%NJT) :: ZUM_F,ZVM_F,ZRHO_F ! density,momentum -REAL, DIMENSION(D%NIT,D%NJT) :: ZPRES_F,ZTHVM_F ! interpolated at the flux point -REAL, DIMENSION(D%NIT,D%NJT) :: ZG_O_THVREF ! g*ThetaV ref -REAL, DIMENSION(D%NIT,D%NJT) :: ZW_UP2 ! w**2 of the updraft +REAL, DIMENSION(D%NIT,D%NKT) :: ZRTM_F, ZTHLM_F, ZTKEM_F ! rt, thetal,TKE,pressure, +REAL, DIMENSION(D%NIT,D%NKT) :: ZUM_F,ZVM_F,ZRHO_F ! density,momentum +REAL, DIMENSION(D%NIT,D%NKT) :: ZPRES_F,ZTHVM_F ! interpolated at the flux point +REAL, DIMENSION(D%NIT,D%NKT) :: ZG_O_THVREF ! g*ThetaV ref +REAL, DIMENSION(D%NIT,D%NKT) :: ZW_UP2 ! w**2 of the updraft -REAL, DIMENSION(D%NIT,D%NJT,KSV) :: ZSVM_F ! scalar variables +REAL, DIMENSION(D%NIT,D%NKT,KSV) :: ZSVM_F ! scalar variables -REAL, DIMENSION(D%NIT,D%NJT) :: ZTH_UP ! updraft THETA +REAL, DIMENSION(D%NIT,D%NKT) :: ZTH_UP ! updraft THETA !REAL, DIMENSION(SIZE(PTHM,1)) :: ZT_UP ! updraft T !REAL, DIMENSION(SIZE(PTHM,1)) :: ZLVOCPEXN ! updraft L !REAL, DIMENSION(SIZE(PTHM,1)) :: ZCP ! updraft cp -REAL, DIMENSION(D%NIT,D%NJT) :: ZBUO ! Buoyancy +REAL, DIMENSION(D%NIT,D%NKT) :: ZBUO ! Buoyancy !REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZTHS_UP,ZTHSM -REAL, DIMENSION(D%NIT,D%NJT) :: ZCOEF ! diminution coefficient for too high clouds +REAL, DIMENSION(D%NIT,D%NKT) :: ZCOEF ! diminution coefficient for too high clouds REAL :: ZWTHVSURF ! Surface w'thetav' @@ -170,13 +170,13 @@ LOGICAL, DIMENSION(D%NIT) :: GTEST,GTESTLCL LOGICAL :: GLMIX ! To choose upward or downward mixing length LOGICAL, DIMENSION(D%NIT) :: GWORK1 -LOGICAL, DIMENSION(D%NIT,D%NJT) :: GWORK2 +LOGICAL, DIMENSION(D%NIT,D%NKT) :: GWORK2 INTEGER :: ITEST REAL, DIMENSION(D%NIT) :: ZRC_UP, ZRI_UP, ZRV_UP, ZRSATW, ZRSATI -REAL, DIMENSION(D%NIT,D%NJT) :: ZZDZ +REAL, DIMENSION(D%NIT,D%NKT) :: ZZDZ REAL, DIMENSION(D%NIT) :: ZTEST,ZDZ,ZWUP_MEAN ! REAL, DIMENSION(D%NIT) :: ZCOE,ZWCOE,ZBUCOE @@ -189,7 +189,7 @@ REAL :: ZDEPTH_MAX1, ZDEPTH_MAX2 ! control auto-extinction process REAL :: ZTMAX,ZRMAX, ZEPS ! control value -REAL, DIMENSION(D%NIT,D%NJT) :: ZSHEAR,ZDUDZ,ZDVDZ ! vertical wind shear +REAL, DIMENSION(D%NIT,D%NKT) :: ZSHEAR,ZDUDZ,ZDVDZ ! vertical wind shear REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('COMPUTE_UPDRAFT_RHCJ10',0,ZHOOK_HANDLE) diff --git a/src/common/turb/modi_shallow_mf.F90 b/src/common/turb/modi_shallow_mf.F90 index e0fa4465041d2032768d3c683f6d2c25f6993b96..7271a8b0864437564fa5b5704a89603d5921dec9 100644 --- a/src/common/turb/modi_shallow_mf.F90 +++ b/src/common/turb/modi_shallow_mf.F90 @@ -56,48 +56,48 @@ INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer REAL, INTENT(IN) :: PIMPL_MF ! degre of implicitness REAL, INTENT(IN) :: PTSTEP ! Dynamical timestep -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(IN) :: PZZ ! Height of flux point -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(IN) :: PDZZ ! Metric coefficients -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(IN) :: PRHODJ ! dry density * Grid size -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(IN) :: PRHODREF ! dry density of the +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PZZ ! Height of flux point +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDZZ ! Metric coefficients +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRHODJ ! dry density * Grid size +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRHODREF ! dry density of the ! reference state -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(IN) :: PPABSM ! Pressure at time t-1 -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(IN) :: PEXNM ! Exner function at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PPABSM ! Pressure at time t-1 +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PEXNM ! Exner function at t-dt -REAL, DIMENSION(D%NIT*D%NJT), INTENT(IN) :: PSFTH,PSFRV ! normal surface fluxes of theta and Rv -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(IN) :: PTHM ! Theta at t-dt -REAL, DIMENSION(D%NIT*D%NJT,KRR), INTENT(IN) :: PRM ! water var. at t-dt -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(IN) :: PUM,PVM ! wind components at t-dt -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(IN) :: PTKEM ! tke at t-dt +REAL, DIMENSION(D%NIT), INTENT(IN) :: PSFTH,PSFRV ! normal surface fluxes of theta and Rv +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHM ! Theta at t-dt +REAL, DIMENSION(D%NIT,KRR), INTENT(IN) :: PRM ! water var. at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PUM,PVM ! wind components at t-dt +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTKEM ! tke at t-dt -REAL, DIMENSION(D%NIT*D%NJT,D%NKT,KSV), INTENT(IN) :: PSVM ! scalar variable a t-dt +REAL, DIMENSION(D%NIT,D%NKT,KSV), INTENT(IN) :: PSVM ! scalar variable a t-dt -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT):: PDUDT_MF ! tendency of U by massflux scheme -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT):: PDVDT_MF ! tendency of V by massflux scheme -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT):: PDTHLDT_MF ! tendency of thl by massflux scheme -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT):: PDRTDT_MF ! tendency of rt by massflux scheme -REAL, DIMENSION(D%NIT*D%NJT,D%NKT,KSV), INTENT(OUT):: PDSVDT_MF ! tendency of Sv by massflux scheme +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT):: PDUDT_MF ! tendency of U by massflux scheme +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT):: PDVDT_MF ! tendency of V by massflux scheme +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT):: PDTHLDT_MF ! tendency of thl by massflux scheme +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT):: PDRTDT_MF ! tendency of rt by massflux scheme +REAL, DIMENSION(D%NIT,D%NKT,KSV), INTENT(OUT):: PDSVDT_MF ! tendency of Sv by massflux scheme -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) :: PSIGMF,PRC_MF,PRI_MF,PCF_MF ! cloud info for the cloud scheme -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) :: PFLXZTHVMF ! Thermal production for TKE scheme -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) :: PFLXZTHMF -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) :: PFLXZRMF -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) :: PFLXZUMF -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) :: PFLXZVMF -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) :: PTHL_UP ! Thl updraft characteristics -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) :: PRT_UP ! Rt updraft characteristics -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) :: PRV_UP ! Vapor updraft characteristics -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) :: PU_UP ! U wind updraft characteristics -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) :: PV_UP ! V wind updraft characteristics -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) :: PRC_UP ! cloud content updraft characteristics -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) :: PRI_UP ! ice content updraft characteristics -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) :: PTHV_UP ! Thv updraft characteristics -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) :: PW_UP ! vertical speed updraft characteristics -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) :: PFRAC_UP ! updraft fraction -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) :: PEMF ! updraft mass flux -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) :: PDETR ! updraft detrainment -REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) :: PENTR ! updraft entrainment -INTEGER,DIMENSION(D%NIT*D%NJT), INTENT(OUT) :: KKLCL,KKETL,KKCTL ! level of LCL,ETL and CTL +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PSIGMF,PRC_MF,PRI_MF,PCF_MF ! cloud info for the cloud scheme +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PFLXZTHVMF ! Thermal production for TKE scheme +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PFLXZTHMF +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PFLXZRMF +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PFLXZUMF +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PFLXZVMF +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PTHL_UP ! Thl updraft characteristics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRT_UP ! Rt updraft characteristics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PRV_UP ! Vapor updraft characteristics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PU_UP ! U wind updraft characteristics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PV_UP ! V wind updraft characteristics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRC_UP ! cloud content updraft characteristics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRI_UP ! ice content updraft characteristics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PTHV_UP ! Thv updraft characteristics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PW_UP ! vertical speed updraft characteristics +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PFRAC_UP ! updraft fraction +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PEMF ! updraft mass flux +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PDETR ! updraft detrainment +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PENTR ! updraft entrainment +INTEGER,DIMENSION(D%NIT), INTENT(OUT) :: KKLCL,KKETL,KKCTL ! level of LCL,ETL and CTL REAL, INTENT(IN) :: PDX, PDY diff --git a/src/common/turb/shallow_mf.F90 b/src/common/turb/shallow_mf.F90 index b95f3e9d4f1392ac9ead0c2587b607dc388e12a6..d210176b1a60619586daf01ac489462ee113f17f 100644 --- a/src/common/turb/shallow_mf.F90 +++ b/src/common/turb/shallow_mf.F90 @@ -268,7 +268,7 @@ ENDIF !!! 5. Compute diagnostic convective cloud fraction and content !!! -------------------------------------------------------- ! -CALL COMPUTE_MF_CLOUD(D%NKA,D%NKB,D%NKE,D%NKU,D%NKL,KRR,KRRL,KRRI,& +CALL COMPUTE_MF_CLOUD(D, CST, PARAMMF, KRR, KRRL, KRRI, & HMF_CLOUD,ZFRAC_ICE, & PRC_UP,PRI_UP,PEMF, & PTHL_UP,PRT_UP,PFRAC_UP, &