From 8927b719b59838e42fdb2feb20776cf321fe1695 Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Fri, 22 Jul 2022 16:03:01 +0200 Subject: [PATCH] Quentin 22/07/2022: convert FUNCTION to SUBROUTINE in turb --- src/common/turb/mode_bl_depth_diag.F90 | 22 +- src/common/turb/mode_emoist.F90 | 6 +- src/common/turb/mode_etheta.F90 | 6 +- src/common/turb/mode_prandtl.F90 | 696 +++++++++--------- src/common/turb/mode_sbl.F90 | 209 +++--- src/common/turb/mode_sbl_depth.F90 | 8 +- src/common/turb/mode_turb_hor_sv_corr.F90 | 4 +- src/common/turb/mode_turb_hor_thermo_corr.F90 | 4 +- src/common/turb/mode_turb_ver.F90 | 8 +- src/common/turb/mode_turb_ver_sv_corr.F90 | 4 +- src/common/turb/mode_turb_ver_thermo_corr.F90 | 148 ++-- src/common/turb/mode_turb_ver_thermo_flux.F90 | 68 +- src/common/turb/turb.F90 | 10 +- src/mesonh/ext/lesn.f90 | 6 +- 14 files changed, 604 insertions(+), 595 deletions(-) diff --git a/src/common/turb/mode_bl_depth_diag.F90 b/src/common/turb/mode_bl_depth_diag.F90 index 3cf56530a..8b6980a81 100644 --- a/src/common/turb/mode_bl_depth_diag.F90 +++ b/src/common/turb/mode_bl_depth_diag.F90 @@ -11,7 +11,7 @@ END INTERFACE ! CONTAINS ! -FUNCTION BL_DEPTH_DIAG_3D(KKB,KKE,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF) +SUBROUTINE BL_DEPTH_DIAG_3D(KKB,KKE,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF,BL_DEPTH_DIAG3D) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! @@ -60,7 +60,7 @@ REAL, DIMENSION(:,:), INTENT(IN) :: PZS ! orography REAL, DIMENSION(:,:,:), INTENT(IN) :: PFLUX ! flux REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! altitude of flux points REAL, INTENT(IN) :: PFTOP_O_FSURF! Flux at BL top / Surface flux -REAL, DIMENSION(SIZE(PSURF,1),SIZE(PSURF,2)) :: BL_DEPTH_DIAG_3D +REAL, DIMENSION(SIZE(PSURF,1),SIZE(PSURF,2)), INTENT(OUT) :: BL_DEPTH_DIAG3D ! ! ! 0.2 declaration of local variables @@ -79,7 +79,7 @@ ELSE IKL=-1 ENDIF -BL_DEPTH_DIAG_3D(:,:) = 0. +BL_DEPTH_DIAG3D(:,:) = 0. ! DO JJ=1,SIZE(PSURF,2) @@ -89,7 +89,7 @@ DO JJ=1,SIZE(PSURF,2) IF (PZZ(JI,JJ,JK-IKL)<=PZS(JI,JJ)) CYCLE ZFLX = PSURF(JI,JJ) * PFTOP_O_FSURF IF ( (PFLUX(JI,JJ,JK)-ZFLX)*(PFLUX(JI,JJ,JK-IKL)-ZFLX) <= 0. ) THEN - BL_DEPTH_DIAG_3D(JI,JJ) = (PZZ (JI,JJ,JK-IKL) - PZS(JI,JJ)) & + BL_DEPTH_DIAG3D(JI,JJ) = (PZZ (JI,JJ,JK-IKL) - PZS(JI,JJ)) & + (PZZ (JI,JJ,JK) - PZZ (JI,JJ,JK-IKL)) & * (ZFLX - PFLUX(JI,JJ,JK-IKL) ) & / (PFLUX(JI,JJ,JK) - PFLUX(JI,JJ,JK-IKL) ) @@ -99,12 +99,12 @@ DO JJ=1,SIZE(PSURF,2) END DO END DO ! -BL_DEPTH_DIAG_3D(:,:) = BL_DEPTH_DIAG_3D(:,:) / (1. - PFTOP_O_FSURF) +BL_DEPTH_DIAG3D(:,:) = BL_DEPTH_DIAG3D(:,:) / (1. - PFTOP_O_FSURF) ! IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_3D',1,ZHOOK_HANDLE) -END FUNCTION BL_DEPTH_DIAG_3D +END SUBROUTINE BL_DEPTH_DIAG_3D ! -FUNCTION BL_DEPTH_DIAG_1D(KKB,KKE,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF) +SUBROUTINE BL_DEPTH_DIAG_1D(KKB,KKE,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF,BL_DEPTH_DIAG1D) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! @@ -117,7 +117,7 @@ REAL, INTENT(IN) :: PZS ! orography REAL, DIMENSION(:), INTENT(IN) :: PFLUX ! flux REAL, DIMENSION(:), INTENT(IN) :: PZZ ! altitude of flux points REAL, INTENT(IN) :: PFTOP_O_FSURF! Flux at BL top / Surface flux -REAL :: BL_DEPTH_DIAG_1D +REAL, INTENT(OUT) :: BL_DEPTH_DIAG1D ! REAL, DIMENSION(1,1) :: ZSURF REAL, DIMENSION(1,1) :: ZZS @@ -132,12 +132,12 @@ ZZS = PZS ZFLUX(1,1,:) = PFLUX(:) ZZZ (1,1,:) = PZZ (:) ! -ZBL_DEPTH_DIAG = BL_DEPTH_DIAG_3D(KKB,KKE,ZSURF,ZZS,ZFLUX,ZZZ,PFTOP_O_FSURF) +CALL BL_DEPTH_DIAG_3D(KKB,KKE,ZSURF,ZZS,ZFLUX,ZZZ,PFTOP_O_FSURF,ZBL_DEPTH_DIAG) ! -BL_DEPTH_DIAG_1D = ZBL_DEPTH_DIAG(1,1) +BL_DEPTH_DIAG1D = ZBL_DEPTH_DIAG(1,1) ! !------------------------------------------------------------------------------- ! IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_1D',1,ZHOOK_HANDLE) -END FUNCTION BL_DEPTH_DIAG_1D +END SUBROUTINE BL_DEPTH_DIAG_1D END MODULE MODE_BL_DEPTH_DIAG diff --git a/src/common/turb/mode_emoist.F90 b/src/common/turb/mode_emoist.F90 index e57be179e..99196199b 100644 --- a/src/common/turb/mode_emoist.F90 +++ b/src/common/turb/mode_emoist.F90 @@ -5,7 +5,7 @@ MODULE MODE_EMOIST IMPLICIT NONE CONTAINS -FUNCTION EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN) RESULT(PEMOIST) +SUBROUTINE EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN,PEMOIST) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! ############################################################################ @@ -80,7 +80,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PAMOIST ! Amoist REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSRCM ! Normalized 2dn_order ! moment s'r'c/2Sigma_s2 ! -REAL,DIMENSION(D%NIT,D%NJT,D%NKT) :: PEMOIST ! result +REAL,DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PEMOIST ! result ! !* 0.2 declarations of local variables ! @@ -190,5 +190,5 @@ END IF !--------------------------------------------------------------------------- ! IF (LHOOK) CALL DR_HOOK('EMOIST',1,ZHOOK_HANDLE) -END FUNCTION EMOIST +END SUBROUTINE EMOIST END MODULE MODE_EMOIST diff --git a/src/common/turb/mode_etheta.F90 b/src/common/turb/mode_etheta.F90 index 34c2b6349..4d8c8b29d 100644 --- a/src/common/turb/mode_etheta.F90 +++ b/src/common/turb/mode_etheta.F90 @@ -5,7 +5,7 @@ MODULE MODE_ETHETA IMPLICIT NONE CONTAINS -FUNCTION ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC) RESULT(PETHETA) +SUBROUTINE ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC,PETHETA) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! ############################################################################ @@ -82,7 +82,7 @@ REAL, DIMENSION(MERGE(D%NIT,0,OCOMPUTE_SRC),& MERGE(D%NKT,0,OCOMPUTE_SRC)), INTENT(IN) :: PSRCM ! Normalized 2dn_order ! moment s'r'c/2Sigma_s2 ! -REAL,DIMENSION(D%NIT,D%NJT,D%NKT) :: PETHETA ! result +REAL,DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PETHETA ! result ! ! ! @@ -186,5 +186,5 @@ END IF !--------------------------------------------------------------------------- ! IF (LHOOK) CALL DR_HOOK('ETHETA',1,ZHOOK_HANDLE) -END FUNCTION ETHETA +END SUBROUTINE ETHETA END MODULE MODE_ETHETA diff --git a/src/common/turb/mode_prandtl.F90 b/src/common/turb/mode_prandtl.F90 index 3ff30addf..4a2ee968f 100644 --- a/src/common/turb/mode_prandtl.F90 +++ b/src/common/turb/mode_prandtl.F90 @@ -257,8 +257,8 @@ IIB=D%NIBC IJE=D%NJEC IJB=D%NJBC ! -ZWORK1 = ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC) -ZWORK2 = EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN) +CALL ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC,ZWORK1) +CALL EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN,ZWORK2) CALL MZM_PHY(D,ZWORK1,PETHETA) CALL MZM_PHY(D,ZWORK2,PEMOIST) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE) @@ -664,7 +664,7 @@ PF(IIB:IIE,IJB:IJE,1:D%NKT) = ZCOEF(IIB:IIE,IJB:IJE,1:D%NKT) * PF(IIB:IIE, ! END SUBROUTINE SMOOTH_TURB_FUNCT !---------------------------------------------------------------------------- -FUNCTION PHI3(D,CSTURB,PREDTH1,PREDR1,PRED2TH3,PRED2R3,PRED2THR3,HTURBDIM,OUSERV) +SUBROUTINE PHI3(D,CSTURB,PREDTH1,PREDR1,PRED2TH3,PRED2R3,PRED2THR3,HTURBDIM,OUSERV,PPHI3) TYPE(CSTURB_t), INTENT(IN) :: CSTURB TYPE(DIMPHYEX_t), INTENT(IN) :: D REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -674,7 +674,7 @@ FUNCTION PHI3(D,CSTURB,PREDTH1,PREDR1,PRED2TH3,PRED2R3,PRED2THR3,HTURBDIM,OUSERV REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: PHI3 + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PPHI3 ! REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZW1, ZW2 INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE @@ -699,7 +699,7 @@ IF (HTURBDIM=='3DIM') THEN ZW2(IIB:IIE,IJB:IJE,1:D%NKT) = 0.5 * (PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT)-PRED2R3(IIB:IIE,IJB:IJE,1:D%NKT)) - PHI3(IIB:IIE,IJB:IJE,1:D%NKT)= 1. - & + PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)= 1. - & ( ( (1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) * & (PRED2THR3(IIB:IIE,IJB:IJE,1:D%NKT) + PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT)) / PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) & ) + ZW2(IIB:IIE,IJB:IJE,1:D%NKT) & @@ -710,35 +710,35 @@ IF (HTURBDIM=='3DIM') THEN ZW2(IIB:IIE,IJB:IJE,1:D%NKT) = 0.5* PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT) - PHI3(IIB:IIE,IJB:IJE,1:D%NKT)= 1. - & + PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)= 1. - & (PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT) / PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) + ZW2(IIB:IIE,IJB:IJE,1:D%NKT)) & / ZW1(IIB:IIE,IJB:IJE,1:D%NKT) END IF !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - WHERE( PHI3(IIB:IIE,IJB:IJE,1:D%NKT) <= 0. .OR. PHI3(IIB:IIE,IJB:IJE,1:D%NKT) > CSTURB%XPHI_LIM ) - PHI3(IIB:IIE,IJB:IJE,1:D%NKT) = CSTURB%XPHI_LIM + WHERE( PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) <= 0. .OR. PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) > CSTURB%XPHI_LIM ) + PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) = CSTURB%XPHI_LIM END WHERE !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ELSE !* 1DIM case !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) IF (OUSERV) THEN - PHI3(IIB:IIE,IJB:IJE,1:D%NKT)= 1./(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) + PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)= 1./(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) ELSE - PHI3(IIB:IIE,IJB:IJE,1:D%NKT)= 1./(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)) + PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)= 1./(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)) END IF !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) END IF ! -PHI3(IIB:IIE,IJB:IJE,IKB-1)=PHI3(IIB:IIE,IJB:IJE,IKB) -PHI3(IIB:IIE,IJB:IJE,IKE+1)=PHI3(IIB:IIE,IJB:IJE,IKE) +PPHI3(IIB:IIE,IJB:IJE,IKB-1)=PPHI3(IIB:IIE,IJB:IJE,IKB) +PPHI3(IIB:IIE,IJB:IJE,IKE+1)=PPHI3(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PHI3',1,ZHOOK_HANDLE) -END FUNCTION PHI3 +END SUBROUTINE PHI3 !---------------------------------------------------------------------------- -FUNCTION PSI_SV(D,CSTURB,KSV,PREDTH1,PREDR1,PREDS1,PRED2THS,PRED2RS,PPHI3,PPSI3) +SUBROUTINE PSI_SV(D,CSTURB,KSV,PREDTH1,PREDR1,PREDS1,PRED2THS,PRED2RS,PPHI3,PPSI3,PPSI_SV) TYPE(CSTURB_t), INTENT(IN) :: CSTURB TYPE(DIMPHYEX_t), INTENT(IN) :: D INTEGER, INTENT(IN) :: KSV @@ -749,7 +749,7 @@ FUNCTION PSI_SV(D,CSTURB,KSV,PREDTH1,PREDR1,PREDS1,PRED2THS,PRED2RS,PPHI3,PPSI3) REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV), INTENT(IN) :: PRED2RS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPHI3 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPSI3 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV) :: PSI_SV + REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV),INTENT(OUT) :: PPSI_SV ! INTEGER :: IKB, IKE, IIB,IIE,IJB,IJE INTEGER :: JSV,JI,JJ,JK @@ -765,7 +765,7 @@ IJB=D%NJBC ! DO JSV=1,KSV !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = ( 1. & + PPSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = ( 1. & - (CSTURB%XCPR3+CSTURB%XCPR5) * & (PRED2THS(IIB:IIE,IJB:IJE,1:D%NKT,JSV)/PREDS1(IIB:IIE,IJB:IJE,1:D%NKT,JSV)-PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)) & - (CSTURB%XCPR4+CSTURB%XCPR5) * & @@ -778,23 +778,23 @@ DO JSV=1,KSV !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! control of the PSI_SV positivity !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - WHERE ( (PSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV) <=0.).AND. (PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))<=0.) - PSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV)=CSTURB%XPHI_LIM + WHERE ( (PPSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV) <=0.).AND. (PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))<=0.) + PPSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV)=CSTURB%XPHI_LIM END WHERE !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = MAX( 1.E-4, MIN(CSTURB%XPHI_LIM,PSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV)) ) + PPSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = MAX( 1.E-4, MIN(CSTURB%XPHI_LIM,PPSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV)) ) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! - PSI_SV(IIB:IIE,IJB:IJE,IKB-1,JSV)=PSI_SV(IIB:IIE,IJB:IJE,IKB,JSV) - PSI_SV(IIB:IIE,IJB:IJE,IKE+1,JSV)=PSI_SV(IIB:IIE,IJB:IJE,IKE,JSV) + PPSI_SV(IIB:IIE,IJB:IJE,IKB-1,JSV)=PPSI_SV(IIB:IIE,IJB:IJE,IKB,JSV) + PPSI_SV(IIB:IIE,IJB:IJE,IKE+1,JSV)=PPSI_SV(IIB:IIE,IJB:IJE,IKE,JSV) END DO ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PSI_SV',1,ZHOOK_HANDLE) -END FUNCTION PSI_SV +END SUBROUTINE PSI_SV !---------------------------------------------------------------------------- -FUNCTION D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV) +SUBROUTINE D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV,PD_PHI3DTDZ_O_DDTDZ) TYPE(CSTURB_t), INTENT(IN) :: CSTURB TYPE(DIMPHYEX_t), INTENT(IN) :: D REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPHI3 @@ -804,7 +804,7 @@ FUNCTION D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTU REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_PHI3DTDZ_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_PHI3DTDZ_O_DDTDZ INTEGER :: IKB, IKE,JK,JJ,JI, IIB,IIE,IJB,IJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE @@ -825,7 +825,7 @@ IF (HTURBDIM=='3DIM') THEN #else WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)<=CSTURB%XPHI_LIM) #endif - D_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & + PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & * (1. - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) * (3./2.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) & /((1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) & *(1.+1./2.*(PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))))) & @@ -837,7 +837,7 @@ IF (HTURBDIM=='3DIM') THEN / ((1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))& *(1.+1./2.*(PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)))) ELSEWHERE - D_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) + PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) ENDWHERE !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) @@ -849,7 +849,7 @@ IF (HTURBDIM=='3DIM') THEN #else WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)<=CSTURB%XPHI_LIM) #endif - D_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & + PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & * (1. - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) * (3./2.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)) & /((1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))*(1.+1./2.*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)))) & + PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT) & @@ -857,7 +857,7 @@ IF (HTURBDIM=='3DIM') THEN - 1./2.*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) & / ((1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))*(1.+1./2.*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))) ELSEWHERE - D_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) + PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) ENDWHERE !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! @@ -868,10 +868,10 @@ DO JK=1,D%NKT DO JJ=IJB,IJE DO JI=IIB,IIE IF ( ABS(PPHI3(JI,JJ,JK)-CSTURB%XPHI_LIM) < 1.E-12 ) THEN - D_PHI3DTDZ_O_DDTDZ(JI,JJ,JK)=PPHI3(JI,JJ,JK)*& + PD_PHI3DTDZ_O_DDTDZ(JI,JJ,JK)=PPHI3(JI,JJ,JK)*& & (1. - PREDTH1(JI,JJ,JK)*PPHI3(JI,JJ,JK)) ELSE - D_PHI3DTDZ_O_DDTDZ(JI,JJ,JK)=PPHI3(JI,JJ,JK) + PD_PHI3DTDZ_O_DDTDZ(JI,JJ,JK)=PPHI3(JI,JJ,JK) ENDIF ENDDO ENDDO @@ -881,16 +881,16 @@ END IF #ifdef REPRO48 #else !* smoothing -CALL SMOOTH_TURB_FUNCT(D,CSTURB,PPHI3,PPHI3,D_PHI3DTDZ_O_DDTDZ) +CALL SMOOTH_TURB_FUNCT(D,CSTURB,PPHI3,PPHI3,PD_PHI3DTDZ_O_DDTDZ) #endif ! -D_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_PHI3DTDZ_O_DDTDZ +END SUBROUTINE D_PHI3DTDZ_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION D_PHI3DRDZ_O_DDRDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV) +SUBROUTINE D_PHI3DRDZ_O_DDRDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV,PD_PHI3DRDZ_O_DDRDZ) TYPE(CSTURB_t), INTENT(IN) :: CSTURB TYPE(DIMPHYEX_t), INTENT(IN) :: D REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPHI3 @@ -900,7 +900,7 @@ FUNCTION D_PHI3DRDZ_O_DDRDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTU REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_PHI3DRDZ_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_PHI3DRDZ_O_DDRDZ INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE @@ -922,7 +922,7 @@ IF (HTURBDIM=='3DIM') THEN #else WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)<=CSTURB%XPHI_LIM) #endif - D_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & + PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & * (1.-PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)*(3./2.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) & / ((1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) & *(1.+1./2.*(PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))))) & @@ -934,11 +934,11 @@ IF (HTURBDIM=='3DIM') THEN / ((1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))& *(1.+1./2.*(PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)))) ELSEWHERE - D_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) + PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) END WHERE !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ELSE - D_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) + PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) END IF ELSE !* 1DIM case @@ -948,10 +948,10 @@ ELSE #else WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)<=CSTURB%XPHI_LIM) #endif - D_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & + PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & * (1. - PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)*PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)) ELSEWHERE - D_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) + PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) END WHERE !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) END IF @@ -959,16 +959,16 @@ END IF #ifdef REPRO48 #else !* smoothing -CALL SMOOTH_TURB_FUNCT(D,CSTURB,PPHI3,PPHI3,D_PHI3DRDZ_O_DDRDZ) +CALL SMOOTH_TURB_FUNCT(D,CSTURB,PPHI3,PPHI3,PD_PHI3DRDZ_O_DDRDZ) #endif ! -D_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,IKB-1)=D_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,IKB) -D_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,IKE+1)=D_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,IKE) +PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,IKB) +PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DRDZ_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_PHI3DRDZ_O_DDRDZ +END SUBROUTINE D_PHI3DRDZ_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION D_PHI3DTDZ2_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,PDTDZ,HTURBDIM,OUSERV) +SUBROUTINE D_PHI3DTDZ2_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,PDTDZ,HTURBDIM,OUSERV,PD_PHI3DTDZ2_O_DDTDZ) TYPE(CSTURB_t), INTENT(IN) :: CSTURB TYPE(DIMPHYEX_t), INTENT(IN) :: D REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPHI3 @@ -979,7 +979,7 @@ FUNCTION D_PHI3DTDZ2_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_PHI3DTDZ2_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_PHI3DTDZ2_O_DDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE ! @@ -995,9 +995,9 @@ IJB=D%NJBC ! IF (HTURBDIM=='3DIM') THEN ! by derivation of (phi3 dtdz) * dtdz according to dtdz we obtain: - ZWORK1 = D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV) + CALL D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV,ZWORK1) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - D_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) & + PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) & * (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) + ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT)) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ELSE @@ -1008,10 +1008,10 @@ ELSE #else WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)<=CSTURB%XPHI_LIM) #endif - D_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)*PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) & + PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)*PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) & * (2. - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)*PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)) ELSEWHERE - D_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) * 2. * PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) + PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) * 2. * PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) END WHERE !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) END IF @@ -1019,17 +1019,17 @@ END IF #ifdef REPRO48 #else !* smoothing -CALL SMOOTH_TURB_FUNCT(D,CSTURB,PPHI3,PPHI3*2.*PDTDZ,D_PHI3DTDZ2_O_DDTDZ) +CALL SMOOTH_TURB_FUNCT(D,CSTURB,PPHI3,PPHI3*2.*PDTDZ,PD_PHI3DTDZ2_O_DDTDZ) #endif ! ! -D_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ2_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_PHI3DTDZ2_O_DDTDZ +END SUBROUTINE D_PHI3DTDZ2_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_WTH_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA) +SUBROUTINE M3_WTH_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,PM3_WTH_WTH2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1037,7 +1037,7 @@ FUNCTION M3_WTH_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_WTH_WTH2 + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WTH_WTH2 INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE @@ -1050,17 +1050,17 @@ IJE=D%NJEC IJB=D%NJBC !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_WTH_WTH2(IIB:IIE,IJB:IJE,1:D%NKT) = CSTURB%XCSHF*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)& +PM3_WTH_WTH2(IIB:IIE,IJB:IJE,1:D%NKT) = CSTURB%XCSHF*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)& * PETHETA(IIB:IIE,IJB:IJE,1:D%NKT)*0.5/CSTURB%XCTD & * (1.+0.5*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) / PD(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_WTH_WTH2(IIB:IIE,IJB:IJE,IKB-1)=M3_WTH_WTH2(IIB:IIE,IJB:IJE,IKB) -M3_WTH_WTH2(IIB:IIE,IJB:IJE,IKE+1)=M3_WTH_WTH2(IIB:IIE,IJB:IJE,IKE) +PM3_WTH_WTH2(IIB:IIE,IJB:IJE,IKB-1)=PM3_WTH_WTH2(IIB:IIE,IJB:IJE,IKB) +PM3_WTH_WTH2(IIB:IIE,IJB:IJE,IKE+1)=PM3_WTH_WTH2(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WTH2',1,ZHOOK_HANDLE) -END FUNCTION M3_WTH_WTH2 +END SUBROUTINE M3_WTH_WTH2 !---------------------------------------------------------------------------- -FUNCTION D_M3_WTH_WTH2_O_DDTDZ(D,CSTURB,PM3_WTH_WTH2,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA) +SUBROUTINE D_M3_WTH_WTH2_O_DDTDZ(D,CSTURB,PM3_WTH_WTH2,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,PD_M3_WTH_WTH2_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PM3_WTH_WTH2 @@ -1069,7 +1069,7 @@ FUNCTION D_M3_WTH_WTH2_O_DDTDZ(D,CSTURB,PM3_WTH_WTH2,PREDTH1,PREDR1,PD,PBLL_O_E, REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_WTH_WTH2_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_WTH2_O_DDTDZ INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE @@ -1082,20 +1082,20 @@ IJE=D%NJEC IJB=D%NJBC !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & +PD_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & (0.5*CSTURB%XCSHF*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PETHETA(IIB:IIE,IJB:IJE,1:D%NKT)*0.5/CSTURB%XCTD/PD(IIB:IIE,IJB:IJE,1:D%NKT) & - PM3_WTH_WTH2(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT)& *(1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) )& * PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) * PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) * CSTURB%XCTV !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WTH2_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_WTH_WTH2_O_DDTDZ +END SUBROUTINE D_M3_WTH_WTH2_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_WTH_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE) +SUBROUTINE M3_WTH_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE,PM3_WTH_W2TH) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1103,7 +1103,7 @@ FUNCTION M3_WTH_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PKEFF REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_WTH_W2TH + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WTH_W2TH REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE ! @@ -1117,18 +1117,18 @@ IJE=D%NJEC IJB=D%NJBC CALL MZM_PHY(D,PTKE,ZWORK1) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_WTH_W2TH(IIB:IIE,IJB:IJE,1:D%NKT) = CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)*1.5/ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) & +PM3_WTH_W2TH(IIB:IIE,IJB:IJE,1:D%NKT) = CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)*1.5/ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) & * (1. - 0.5*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)*(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT) ) & / (1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -M3_WTH_W2TH(IIB:IIE,IJB:IJE,IKB-1)=M3_WTH_W2TH(IIB:IIE,IJB:IJE,IKB) -M3_WTH_W2TH(IIB:IIE,IJB:IJE,IKE+1)=M3_WTH_W2TH(IIB:IIE,IJB:IJE,IKE) +PM3_WTH_W2TH(IIB:IIE,IJB:IJE,IKB-1)=PM3_WTH_W2TH(IIB:IIE,IJB:IJE,IKB) +PM3_WTH_W2TH(IIB:IIE,IJB:IJE,IKE+1)=PM3_WTH_W2TH(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_W2TH',1,ZHOOK_HANDLE) -END FUNCTION M3_WTH_W2TH +END SUBROUTINE M3_WTH_W2TH !---------------------------------------------------------------------------- -FUNCTION D_M3_WTH_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,PKEFF,PTKE) +SUBROUTINE D_M3_WTH_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,PKEFF,PTKE,PD_M3_WTH_W2TH_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1138,7 +1138,7 @@ FUNCTION D_M3_WTH_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,PKEFF REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PKEFF REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_WTH_W2TH_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_W2TH_O_DDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE ! @@ -1153,7 +1153,7 @@ IJB=D%NJBC CALL MZM_PHY(D,PTKE,ZWORK1) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & +PD_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & - CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)*1.5/ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT)/(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))**2 & * CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) & * (1. - 0.5*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)*(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT)* & @@ -1161,13 +1161,13 @@ D_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & /PD(IIB:IIE,IJB:IJE,1:D%NKT)) ) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2TH_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_WTH_W2TH_O_DDTDZ +END SUBROUTINE D_M3_WTH_W2TH_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_WTH_W2R(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST,PDTDZ) +SUBROUTINE M3_WTH_W2R(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_WTH_W2R) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1176,7 +1176,7 @@ FUNCTION M3_WTH_W2R(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST,PDTDZ) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_WTH_W2R + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WTH_W2R REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1191,18 +1191,18 @@ IJB=D%NJBC CALL MZM_PHY(D,PTKE,ZWORK1) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_WTH_W2R(IIB:IIE,IJB:IJE,1:D%NKT) = & +PM3_WTH_W2R(IIB:IIE,IJB:IJE,1:D%NKT) = & - CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)*0.75*CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) & /ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)*PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -M3_WTH_W2R(IIB:IIE,IJB:IJE,IKB-1)=M3_WTH_W2R(IIB:IIE,IJB:IJE,IKB) -M3_WTH_W2R(IIB:IIE,IJB:IJE,IKE+1)=M3_WTH_W2R(IIB:IIE,IJB:IJE,IKE) +PM3_WTH_W2R(IIB:IIE,IJB:IJE,IKB-1)=PM3_WTH_W2R(IIB:IIE,IJB:IJE,IKB) +PM3_WTH_W2R(IIB:IIE,IJB:IJE,IKE+1)=PM3_WTH_W2R(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_W2R',1,ZHOOK_HANDLE) -END FUNCTION M3_WTH_W2R +END SUBROUTINE M3_WTH_W2R !---------------------------------------------------------------------------- -FUNCTION D_M3_WTH_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST) +SUBROUTINE D_M3_WTH_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST,PD_M3_WTH_W2R_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1212,7 +1212,7 @@ FUNCTION D_M3_WTH_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE,PBLL_O_E,PEM REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_WTH_W2R_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_W2R_O_DDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1227,20 +1227,20 @@ IJB=D%NJBC CALL MZM_PHY(D,PTKE,ZWORK1) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & +PD_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & - CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)*0.75*CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) & /ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT) & * (1. - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)*(1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)& +PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT)) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2R_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_WTH_W2R_O_DDTDZ +END SUBROUTINE D_M3_WTH_W2R_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_WTH_WR2(D,CSTURB,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTDZ) +SUBROUTINE M3_WTH_WR2(D,CSTURB,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTDZ,PM3_WTH_WR2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1252,7 +1252,7 @@ FUNCTION M3_WTH_WR2(D,CSTURB,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_WTH_WR2 + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WTH_WR2 REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1270,18 +1270,18 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBETA(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,I !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_WTH_WR2(IIB:IIE,IJB:IJE,1:D%NKT) = - CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)& +PM3_WTH_WR2(IIB:IIE,IJB:IJE,1:D%NKT) = - CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)& *0.25*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)**2 & *ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD*PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -M3_WTH_WR2(IIB:IIE,IJB:IJE,IKB-1)=M3_WTH_WR2(IIB:IIE,IJB:IJE,IKB) -M3_WTH_WR2(IIB:IIE,IJB:IJE,IKE+1)=M3_WTH_WR2(IIB:IIE,IJB:IJE,IKE) +PM3_WTH_WR2(IIB:IIE,IJB:IJE,IKB-1)=PM3_WTH_WR2(IIB:IIE,IJB:IJE,IKB) +PM3_WTH_WR2(IIB:IIE,IJB:IJE,IKE+1)=PM3_WTH_WR2(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WR2',1,ZHOOK_HANDLE) -END FUNCTION M3_WTH_WR2 +END SUBROUTINE M3_WTH_WR2 !---------------------------------------------------------------------------- -FUNCTION D_M3_WTH_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST) +SUBROUTINE D_M3_WTH_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PD_M3_WTH_WR2_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1294,7 +1294,7 @@ FUNCTION D_M3_WTH_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE,PSQRT_TKE,PB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_WTH_WR2_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_WR2_O_DDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1312,20 +1312,20 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBETA(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,I !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)& +PD_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)& *0.25*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)**2 & *ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD/PD(IIB:IIE,IJB:IJE,1:D%NKT) & * (1. - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)* & (1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT)) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WR2_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_WTH_WR2_O_DDTDZ +END SUBROUTINE D_M3_WTH_WR2_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_WTH_WTHR(D,CSTURB,PREDR1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PEMOIST) +SUBROUTINE M3_WTH_WTHR(D,CSTURB,PREDR1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PEMOIST,PM3_WTH_WTHR) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -1336,7 +1336,7 @@ FUNCTION M3_WTH_WTHR(D,CSTURB,PREDR1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_WTH_WTHR + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WTH_WTHR REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1355,18 +1355,18 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBETA(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,I !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_WTH_WTHR(IIB:IIE,IJB:IJE,1:D%NKT) = & +PM3_WTH_WTHR(IIB:IIE,IJB:IJE,1:D%NKT) = & CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)*ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) & *0.5*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD*(1+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -M3_WTH_WTHR(IIB:IIE,IJB:IJE,IKB-1)=M3_WTH_WTHR(IIB:IIE,IJB:IJE,IKB) -M3_WTH_WTHR(IIB:IIE,IJB:IJE,IKE+1)=M3_WTH_WTHR(IIB:IIE,IJB:IJE,IKE) +PM3_WTH_WTHR(IIB:IIE,IJB:IJE,IKB-1)=PM3_WTH_WTHR(IIB:IIE,IJB:IJE,IKB) +PM3_WTH_WTHR(IIB:IIE,IJB:IJE,IKE+1)=PM3_WTH_WTHR(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WTHR',1,ZHOOK_HANDLE) -END FUNCTION M3_WTH_WTHR +END SUBROUTINE M3_WTH_WTHR !---------------------------------------------------------------------------- -FUNCTION D_M3_WTH_WTHR_O_DDTDZ(D,CSTURB,PM3_WTH_WTHR,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA) +SUBROUTINE D_M3_WTH_WTHR_O_DDTDZ(D,CSTURB,PM3_WTH_WTHR,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,PD_M3_WTH_WTHR_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PM3_WTH_WTHR @@ -1375,7 +1375,7 @@ FUNCTION D_M3_WTH_WTHR_O_DDTDZ(D,CSTURB,PM3_WTH_WTHR,PREDTH1,PREDR1,PD,PBLL_O_E, REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_WTH_WTHR_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_WTHR_O_DDTDZ INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE @@ -1388,18 +1388,18 @@ IJE=D%NJEC IJB=D%NJBC !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & +PD_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & - PM3_WTH_WTHR(IIB:IIE,IJB:IJE,1:D%NKT) * (1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))& /PD(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WTHR_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_WTH_WTHR_O_DDTDZ +END SUBROUTINE D_M3_WTH_WTHR_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_TH2_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PDTDZ,PLM,PLEPS,PTKE) +SUBROUTINE M3_TH2_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PDTDZ,PLM,PLEPS,PTKE,PM3_TH2_W2TH) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1409,7 +1409,7 @@ FUNCTION M3_TH2_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PDTDZ,PLM,PLEPS,PTKE) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_TH2_W2TH + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_TH2_W2TH REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1427,17 +1427,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (1.-0.5*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)*(1.+PR !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_TH2_W2TH(IIB:IIE,IJB:IJE,1:D%NKT) = - ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) & +PM3_TH2_W2TH(IIB:IIE,IJB:IJE,1:D%NKT) = - ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) & * 1.5*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PTKE(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -M3_TH2_W2TH(IIB:IIE,IJB:IJE,IKB-1)=M3_TH2_W2TH(IIB:IIE,IJB:IJE,IKB) -M3_TH2_W2TH(IIB:IIE,IJB:IJE,IKE+1)=M3_TH2_W2TH(IIB:IIE,IJB:IJE,IKE) +PM3_TH2_W2TH(IIB:IIE,IJB:IJE,IKB-1)=PM3_TH2_W2TH(IIB:IIE,IJB:IJE,IKB) +PM3_TH2_W2TH(IIB:IIE,IJB:IJE,IKE+1)=PM3_TH2_W2TH(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_W2TH',1,ZHOOK_HANDLE) -END FUNCTION M3_TH2_W2TH +END SUBROUTINE M3_TH2_W2TH !---------------------------------------------------------------------------- -FUNCTION D_M3_TH2_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,OUSERV) +SUBROUTINE D_M3_TH2_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,OUSERV,PD_M3_TH2_W2TH_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1447,7 +1447,7 @@ FUNCTION D_M3_TH2_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,OUSERV) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE LOGICAL, INTENT(IN) :: OUSERV - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_TH2_W2TH_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_W2TH_O_DDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1472,7 +1472,7 @@ IF (OUSERV) THEN !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - D_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 1.5*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & + PD_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 1.5*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & /PTKE(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ELSE @@ -1481,18 +1481,18 @@ ELSE !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - D_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 1.5*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & + PD_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 1.5*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & /PTKE(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) END IF ! -D_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_W2TH_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_TH2_W2TH_O_DDTDZ +END SUBROUTINE D_M3_TH2_W2TH_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_TH2_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE) +SUBROUTINE M3_TH2_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PM3_TH2_WTH2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1500,7 +1500,7 @@ FUNCTION M3_TH2_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_TH2_WTH2 + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_TH2_WTH2 REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1518,17 +1518,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (1.+0.5*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) & !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_TH2_WTH2(IIB:IIE,IJB:IJE,1:D%NKT) = PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)*0.5/CSTURB%XCTD/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT) & +PM3_TH2_WTH2(IIB:IIE,IJB:IJE,1:D%NKT) = PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)*0.5/CSTURB%XCTD/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT) & * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -M3_TH2_WTH2(IIB:IIE,IJB:IJE,IKB-1)=M3_TH2_WTH2(IIB:IIE,IJB:IJE,IKB) -M3_TH2_WTH2(IIB:IIE,IJB:IJE,IKE+1)=M3_TH2_WTH2(IIB:IIE,IJB:IJE,IKE) +PM3_TH2_WTH2(IIB:IIE,IJB:IJE,IKB-1)=PM3_TH2_WTH2(IIB:IIE,IJB:IJE,IKB) +PM3_TH2_WTH2(IIB:IIE,IJB:IJE,IKE+1)=PM3_TH2_WTH2(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WTH2',1,ZHOOK_HANDLE) -END FUNCTION M3_TH2_WTH2 +END SUBROUTINE M3_TH2_WTH2 !---------------------------------------------------------------------------- -FUNCTION D_M3_TH2_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA) +SUBROUTINE D_M3_TH2_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PD_M3_TH2_WTH2_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1538,7 +1538,7 @@ FUNCTION D_M3_TH2_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_TH2_WTH2_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_WTH2_O_DDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1558,17 +1558,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PETHETA(IIB: !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & +PD_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & *0.5/CSTURB%XCTD/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WTH2_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_TH2_WTH2_O_DDTDZ +END SUBROUTINE D_M3_TH2_WTH2_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_TH2_W2R(D,CSTURB,PD,PLM,PLEPS,PTKE,PBLL_O_E,PEMOIST,PDTDZ) +SUBROUTINE M3_TH2_W2R(D,CSTURB,PD,PLM,PLEPS,PTKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_TH2_W2R) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1578,7 +1578,7 @@ FUNCTION M3_TH2_W2R(D,CSTURB,PD,PLM,PLEPS,PTKE,PBLL_O_E,PEMOIST,PDTDZ) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_TH2_W2R + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_TH2_W2R REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1596,17 +1596,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB: !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_TH2_W2R(IIB:IIE,IJB:IJE,1:D%NKT) = 0.75*CSTURB%XCTV**2*ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) & +PM3_TH2_W2R(IIB:IIE,IJB:IJE,1:D%NKT) = 0.75*CSTURB%XCTV**2*ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) & *PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PTKE(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -M3_TH2_W2R(IIB:IIE,IJB:IJE,IKB-1)=M3_TH2_W2R(IIB:IIE,IJB:IJE,IKB) -M3_TH2_W2R(IIB:IIE,IJB:IJE,IKE+1)=M3_TH2_W2R(IIB:IIE,IJB:IJE,IKE) +PM3_TH2_W2R(IIB:IIE,IJB:IJE,IKB-1)=PM3_TH2_W2R(IIB:IIE,IJB:IJE,IKB) +PM3_TH2_W2R(IIB:IIE,IJB:IJE,IKE+1)=PM3_TH2_W2R(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_W2R',1,ZHOOK_HANDLE) -END FUNCTION M3_TH2_W2R +END SUBROUTINE M3_TH2_W2R !---------------------------------------------------------------------------- -FUNCTION D_M3_TH2_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PEMOIST,PDTDZ) +SUBROUTINE D_M3_TH2_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PEMOIST,PDTDZ,PD_M3_TH2_W2R_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1618,7 +1618,7 @@ FUNCTION D_M3_TH2_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_TH2_W2R_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_W2R_O_DDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1637,17 +1637,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = 0.75*CSTURB%XCTV**2*PLM(IIB:IIE,IJB:IJE,1:D%NKT) *PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & +PD_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = 0.75*CSTURB%XCTV**2*PLM(IIB:IIE,IJB:IJE,1:D%NKT) *PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & /PTKE(IIB:IIE,IJB:IJE,1:D%NKT) * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_W2R_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_TH2_W2R_O_DDTDZ +END SUBROUTINE D_M3_TH2_W2R_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_TH2_WR2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) +SUBROUTINE M3_TH2_WR2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_TH2_WR2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1656,7 +1656,7 @@ FUNCTION M3_TH2_WR2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_TH2_WR2 + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_TH2_WR2 REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1674,17 +1674,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_TH2_WR2(IIB:IIE,IJB:IJE,1:D%NKT) = 0.25*CSTURB%XCTV**2*ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT)& +PM3_TH2_WR2(IIB:IIE,IJB:IJE,1:D%NKT) = 0.25*CSTURB%XCTV**2*ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT)& *PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -M3_TH2_WR2(IIB:IIE,IJB:IJE,IKB-1)=M3_TH2_WR2(IIB:IIE,IJB:IJE,IKB) -M3_TH2_WR2(IIB:IIE,IJB:IJE,IKE+1)=M3_TH2_WR2(IIB:IIE,IJB:IJE,IKE) +PM3_TH2_WR2(IIB:IIE,IJB:IJE,IKB-1)=PM3_TH2_WR2(IIB:IIE,IJB:IJE,IKB) +PM3_TH2_WR2(IIB:IIE,IJB:IJE,IKE+1)=PM3_TH2_WR2(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WR2',1,ZHOOK_HANDLE) -END FUNCTION M3_TH2_WR2 +END SUBROUTINE M3_TH2_WR2 !---------------------------------------------------------------------------- -FUNCTION D_M3_TH2_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) +SUBROUTINE D_M3_TH2_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PD_M3_TH2_WR2_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1695,7 +1695,7 @@ FUNCTION D_M3_TH2_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_TH2_WR2_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_WR2_O_DDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1714,17 +1714,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = 0.25*CSTURB%XCTV**2*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & +PD_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = 0.25*CSTURB%XCTV**2*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & / PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WR2_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_TH2_WR2_O_DDTDZ +END SUBROUTINE D_M3_TH2_WR2_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_TH2_WTHR(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) +SUBROUTINE M3_TH2_WTHR(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_TH2_WTHR) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -1734,7 +1734,7 @@ FUNCTION M3_TH2_WTHR(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_TH2_WTHR + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_TH2_WTHR REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1752,17 +1752,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB: !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_TH2_WTHR(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.5*CSTURB%XCTV*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & +PM3_TH2_WTHR(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.5*CSTURB%XCTV*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & / PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -M3_TH2_WTHR(IIB:IIE,IJB:IJE,IKB-1)=M3_TH2_WTHR(IIB:IIE,IJB:IJE,IKB) -M3_TH2_WTHR(IIB:IIE,IJB:IJE,IKE+1)=M3_TH2_WTHR(IIB:IIE,IJB:IJE,IKE) +PM3_TH2_WTHR(IIB:IIE,IJB:IJE,IKB-1)=PM3_TH2_WTHR(IIB:IIE,IJB:IJE,IKB) +PM3_TH2_WTHR(IIB:IIE,IJB:IJE,IKE+1)=PM3_TH2_WTHR(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WTHR',1,ZHOOK_HANDLE) -END FUNCTION M3_TH2_WTHR +END SUBROUTINE M3_TH2_WTHR !---------------------------------------------------------------------------- -FUNCTION D_M3_TH2_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) +SUBROUTINE D_M3_TH2_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PD_M3_TH2_WTHR_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1773,7 +1773,7 @@ FUNCTION D_M3_TH2_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_TH2_WTHR_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_WTHR_O_DDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1792,17 +1792,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB: !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.5*CSTURB%XCTV*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & +PD_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.5*CSTURB%XCTV*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & / PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WTHR_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_TH2_WTHR_O_DDTDZ +END SUBROUTINE D_M3_TH2_WTHR_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_THR_WTHR(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE) +SUBROUTINE M3_THR_WTHR(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PM3_THR_WTHR) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1810,7 +1810,7 @@ FUNCTION M3_THR_WTHR(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_THR_WTHR + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_THR_WTHR REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1828,17 +1828,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))* & !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_THR_WTHR(IIB:IIE,IJB:IJE,1:D%NKT) = 0.5*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD & +PM3_THR_WTHR(IIB:IIE,IJB:IJE,1:D%NKT) = 0.5*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD & * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -M3_THR_WTHR(IIB:IIE,IJB:IJE,IKB-1)=M3_THR_WTHR(IIB:IIE,IJB:IJE,IKB) -M3_THR_WTHR(IIB:IIE,IJB:IJE,IKE+1)=M3_THR_WTHR(IIB:IIE,IJB:IJE,IKE) +PM3_THR_WTHR(IIB:IIE,IJB:IJE,IKB-1)=PM3_THR_WTHR(IIB:IIE,IJB:IJE,IKB) +PM3_THR_WTHR(IIB:IIE,IJB:IJE,IKE+1)=PM3_THR_WTHR(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WTHR',1,ZHOOK_HANDLE) -END FUNCTION M3_THR_WTHR +END SUBROUTINE M3_THR_WTHR !---------------------------------------------------------------------------- -FUNCTION D_M3_THR_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA) +SUBROUTINE D_M3_THR_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PD_M3_THR_WTHR_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1848,7 +1848,7 @@ FUNCTION D_M3_THR_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_THR_WTHR_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTHR_O_DDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1867,17 +1867,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PETHETA(IIB:IIE,IJB:IJE,1:D%NKT)*PBLL_O_E(IIB: !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = 0.5*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT) & +PD_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = 0.5*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT) & / CSTURB%XCTD * CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_THR_WTHR_O_DDTDZ +END SUBROUTINE D_M3_THR_WTHR_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_THR_WTH2(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) +SUBROUTINE M3_THR_WTH2(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PM3_THR_WTH2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -1887,7 +1887,7 @@ FUNCTION M3_THR_WTH2(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_THR_WTH2 + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_THR_WTH2 REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1905,17 +1905,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*PBLL_O_E( !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_THR_WTH2(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.25*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & +PM3_THR_WTH2(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.25*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & / PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD*CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -M3_THR_WTH2(IIB:IIE,IJB:IJE,IKB-1)=M3_THR_WTH2(IIB:IIE,IJB:IJE,IKB) -M3_THR_WTH2(IIB:IIE,IJB:IJE,IKE+1)=M3_THR_WTH2(IIB:IIE,IJB:IJE,IKE) +PM3_THR_WTH2(IIB:IIE,IJB:IJE,IKB-1)=PM3_THR_WTH2(IIB:IIE,IJB:IJE,IKB) +PM3_THR_WTH2(IIB:IIE,IJB:IJE,IKE+1)=PM3_THR_WTH2(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WTH2',1,ZHOOK_HANDLE) -END FUNCTION M3_THR_WTH2 +END SUBROUTINE M3_THR_WTH2 !---------------------------------------------------------------------------- -FUNCTION D_M3_THR_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) +SUBROUTINE D_M3_THR_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_THR_WTH2_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1926,7 +1926,7 @@ FUNCTION D_M3_THR_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_THR_WTH2_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTH2_O_DDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1946,17 +1946,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = -(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*(PBLL_O_ !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.25*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & +PD_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.25*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & /PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD*CSTURB%XCTV**2 * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTH2_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_THR_WTH2_O_DDTDZ +END SUBROUTINE D_M3_THR_WTH2_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION D_M3_THR_WTH2_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA) +SUBROUTINE D_M3_THR_WTH2_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PD_M3_THR_WTH2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1966,7 +1966,7 @@ FUNCTION D_M3_THR_WTH2_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_THR_WTH2_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTH2_O_DDRDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -1985,17 +1985,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PETHETA(IIB: !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.25*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)& +PD_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.25*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)& / CSTURB%XCTD*CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTH2_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_THR_WTH2_O_DDRDZ +END SUBROUTINE D_M3_THR_WTH2_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION M3_THR_W2TH(D,CSTURB,PREDR1,PD,PLM,PLEPS,PTKE,PDRDZ) +SUBROUTINE M3_THR_W2TH(D,CSTURB,PREDR1,PD,PLM,PLEPS,PTKE,PDRDZ,PM3_THR_W2TH) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2004,7 +2004,7 @@ FUNCTION M3_THR_W2TH(D,CSTURB,PREDR1,PD,PLM,PLEPS,PTKE,PDRDZ) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_THR_W2TH + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_THR_W2TH REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -2021,17 +2021,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*PDRDZ(IIB !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -M3_THR_W2TH(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.75*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)& +PM3_THR_W2TH(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.75*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)& / PTKE(IIB:IIE,IJB:IJE,1:D%NKT) * CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -M3_THR_W2TH(IIB:IIE,IJB:IJE,IKB-1)=M3_THR_W2TH(IIB:IIE,IJB:IJE,IKB) -M3_THR_W2TH(IIB:IIE,IJB:IJE,IKE+1)=M3_THR_W2TH(IIB:IIE,IJB:IJE,IKE) +PM3_THR_W2TH(IIB:IIE,IJB:IJE,IKB-1)=PM3_THR_W2TH(IIB:IIE,IJB:IJE,IKB) +PM3_THR_W2TH(IIB:IIE,IJB:IJE,IKE+1)=PM3_THR_W2TH(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2TH',1,ZHOOK_HANDLE) -END FUNCTION M3_THR_W2TH +END SUBROUTINE M3_THR_W2TH !---------------------------------------------------------------------------- -FUNCTION D_M3_THR_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDRDZ,PETHETA) +SUBROUTINE D_M3_THR_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDRDZ,PETHETA,PD_M3_THR_W2TH_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -2043,7 +2043,7 @@ FUNCTION D_M3_THR_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,PBLL_O_ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_THR_W2TH_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2TH_O_DDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -2062,17 +2062,17 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = -PETHETA(IIB:IIE,IJB:IJE,1:D%NKT)*PBLL_O_E(II !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.75*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)& +PD_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.75*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)& / PTKE(IIB:IIE,IJB:IJE,1:D%NKT) * CSTURB%XCTV**2 * ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2TH_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_THR_W2TH_O_DDTDZ +END SUBROUTINE D_M3_THR_W2TH_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION D_M3_THR_W2TH_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE) +SUBROUTINE D_M3_THR_W2TH_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,PD_M3_THR_W2TH_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -2081,7 +2081,7 @@ FUNCTION D_M3_THR_W2TH_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_THR_W2TH_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2TH_O_DDRDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE ! @@ -2100,20 +2100,20 @@ ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = -(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*PREDR1( !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -D_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.75*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)& +PD_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.75*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)& / PTKE(IIB:IIE,IJB:IJE,1:D%NKT) * CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! -D_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,IKB-1)=D_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,IKB) -D_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,IKE+1)=D_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,IKB) +PD_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2TH_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_THR_W2TH_O_DDRDZ +END SUBROUTINE D_M3_THR_W2TH_O_DDRDZ !---------------------------------------------------------------------------- !---------------------------------------------------------------------------- !---------------------------------------------------------------------------- ! -FUNCTION PSI3(D,CSTURB,PREDR1,PREDTH1,PRED2R3,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV) +SUBROUTINE PSI3(D,CSTURB,PREDR1,PREDTH1,PRED2R3,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV,PPSI3) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -2123,16 +2123,16 @@ FUNCTION PSI3(D,CSTURB,PREDR1,PREDTH1,PRED2R3,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: PSI3 + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PPSI3 ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PSI3',0,ZHOOK_HANDLE) -PSI3 = PHI3(D,CSTURB,PREDR1,PREDTH1,PRED2R3,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV) +CALL PHI3(D,CSTURB,PREDR1,PREDTH1,PRED2R3,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV,PPSI3) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PSI3',1,ZHOOK_HANDLE) -END FUNCTION PSI3 +END SUBROUTINE PSI3 !---------------------------------------------------------------------------- -FUNCTION D_PSI3DRDZ_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV) +SUBROUTINE D_PSI3DRDZ_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV,PD_PSI3DRDZ_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPSI3 @@ -2142,18 +2142,18 @@ FUNCTION D_PSI3DRDZ_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTUR REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_PSI3DRDZ_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_PSI3DRDZ_O_DDRDZ REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DRDZ_O_DDRDZ',0,ZHOOK_HANDLE) -D_PSI3DRDZ_O_DDRDZ = D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV) +CALL D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV,PD_PSI3DRDZ_O_DDRDZ) ! !C'est ok?! ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DRDZ_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_PSI3DRDZ_O_DDRDZ +END SUBROUTINE D_PSI3DRDZ_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION D_PSI3DTDZ_O_DDTDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV) +SUBROUTINE D_PSI3DTDZ_O_DDTDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV,PD_PSI3DTDZ_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPSI3 @@ -2163,16 +2163,16 @@ FUNCTION D_PSI3DTDZ_O_DDTDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTUR REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_PSI3DTDZ_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_PSI3DTDZ_O_DDTDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DTDZ_O_DDTDZ',0,ZHOOK_HANDLE) -D_PSI3DTDZ_O_DDTDZ = D_PHI3DRDZ_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV) +CALL D_PHI3DRDZ_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV,PD_PSI3DTDZ_O_DDTDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DTDZ_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_PSI3DTDZ_O_DDTDZ +END SUBROUTINE D_PSI3DTDZ_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION D_PSI3DRDZ2_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,PDRDZ,HTURBDIM,OUSERV) +SUBROUTINE D_PSI3DRDZ2_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,PDRDZ,HTURBDIM,OUSERV,PD_PSI3DRDZ2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPSI3 @@ -2183,16 +2183,16 @@ FUNCTION D_PSI3DRDZ2_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,PDR REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_PSI3DRDZ2_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_PSI3DRDZ2_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DRDZ2_O_DDRDZ',0,ZHOOK_HANDLE) -D_PSI3DRDZ2_O_DDRDZ = D_PHI3DTDZ2_O_DDTDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,PDRDZ,HTURBDIM,OUSERV) +CALL D_PHI3DTDZ2_O_DDTDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,PDRDZ,HTURBDIM,OUSERV,PD_PSI3DRDZ2_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DRDZ2_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_PSI3DRDZ2_O_DDRDZ +END SUBROUTINE D_PSI3DRDZ2_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION M3_WR_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST) +SUBROUTINE M3_WR_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PM3_WR_WR2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2200,16 +2200,16 @@ FUNCTION M3_WR_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_WR_WR2 + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WR_WR2 ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WR2',0,ZHOOK_HANDLE) -M3_WR_WR2 = M3_WTH_WTH2(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST) +CALL M3_WTH_WTH2(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PM3_WR_WR2) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WR2',1,ZHOOK_HANDLE) -END FUNCTION M3_WR_WR2 +END SUBROUTINE M3_WR_WR2 !---------------------------------------------------------------------------- -FUNCTION D_M3_WR_WR2_O_DDRDZ(D,CSTURB,PM3_WR_WR2,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST) +SUBROUTINE D_M3_WR_WR2_O_DDRDZ(D,CSTURB,PM3_WR_WR2,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PD_M3_WR_WR2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PM3_WR_WR2 @@ -2218,16 +2218,16 @@ FUNCTION D_M3_WR_WR2_O_DDRDZ(D,CSTURB,PM3_WR_WR2,PREDR1,PREDTH1,PD,PBLL_O_E,PEMO REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_WR_WR2_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WR_WR2_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WR2_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_WR_WR2_O_DDRDZ = D_M3_WTH_WTH2_O_DDTDZ(D,CSTURB,PM3_WR_WR2,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST) +CALL D_M3_WTH_WTH2_O_DDTDZ(D,CSTURB,PM3_WR_WR2,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PD_M3_WR_WR2_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WR2_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_WR_WR2_O_DDRDZ +END SUBROUTINE D_M3_WR_WR2_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION M3_WR_W2R(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE) +SUBROUTINE M3_WR_W2R(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PM3_WR_W2R) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2235,16 +2235,16 @@ FUNCTION M3_WR_W2R(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PKEFF REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_WR_W2R + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WR_W2R ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_W2R',0,ZHOOK_HANDLE) -M3_WR_W2R = M3_WTH_W2TH(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE) +CALL M3_WTH_W2TH(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PM3_WR_W2R) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_W2R',1,ZHOOK_HANDLE) -END FUNCTION M3_WR_W2R +END SUBROUTINE M3_WR_W2R !---------------------------------------------------------------------------- -FUNCTION D_M3_WR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PKEFF,PTKE) +SUBROUTINE D_M3_WR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PKEFF,PTKE,PD_M3_WR_W2R_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2254,16 +2254,16 @@ FUNCTION D_M3_WR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PKEFF,P REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PKEFF REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_WR_W2R_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WR_W2R_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_W2R_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_WR_W2R_O_DDRDZ = D_M3_WTH_W2TH_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PKEFF,PTKE) +CALL D_M3_WTH_W2TH_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PKEFF,PTKE,PD_M3_WR_W2R_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_W2R_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_WR_W2R_O_DDRDZ +END SUBROUTINE D_M3_WR_W2R_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION M3_WR_W2TH(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ) +SUBROUTINE M3_WR_W2TH(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ,PM3_WR_W2TH) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -2272,16 +2272,16 @@ FUNCTION M3_WR_W2TH(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_WR_W2TH + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WR_W2TH ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_W2TH',0,ZHOOK_HANDLE) -M3_WR_W2TH = M3_WTH_W2R(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ) +CALL M3_WTH_W2R(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ,PM3_WR_W2TH) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_W2TH',1,ZHOOK_HANDLE) -END FUNCTION M3_WR_W2TH +END SUBROUTINE M3_WR_W2TH !---------------------------------------------------------------------------- -FUNCTION D_M3_WR_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PBLL_O_E,PETHETA) +SUBROUTINE D_M3_WR_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PD_M3_WR_W2TH_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2291,16 +2291,16 @@ FUNCTION D_M3_WR_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PBLL_O_E,PET REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_WR_W2TH_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WR_W2TH_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_W2TH_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_WR_W2TH_O_DDRDZ = D_M3_WTH_W2R_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PBLL_O_E,PETHETA) +CALL D_M3_WTH_W2R_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PD_M3_WR_W2TH_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_W2TH_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_WR_W2TH_O_DDRDZ +END SUBROUTINE D_M3_WR_W2TH_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION M3_WR_WTH2(D,CSTURB,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDRDZ) +SUBROUTINE M3_WR_WTH2(D,CSTURB,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDRDZ,PM3_WR_WTH2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -2312,16 +2312,16 @@ FUNCTION M3_WR_WTH2(D,CSTURB,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHET REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_WR_WTH2 + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WR_WTH2 ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WTH2',0,ZHOOK_HANDLE) -M3_WR_WTH2 = M3_WTH_WR2(D,CSTURB,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDRDZ) +CALL M3_WTH_WR2(D,CSTURB,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDRDZ,PM3_WR_WTH2) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WTH2',1,ZHOOK_HANDLE) -END FUNCTION M3_WR_WTH2 +END SUBROUTINE M3_WR_WTH2 !---------------------------------------------------------------------------- -FUNCTION D_M3_WR_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA) +SUBROUTINE D_M3_WR_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PD_M3_WR_WTH2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2334,16 +2334,16 @@ FUNCTION D_M3_WR_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_WR_WTH2_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WR_WTH2_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WTH2_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_WR_WTH2_O_DDRDZ=D_M3_WTH_WR2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA) +CALL D_M3_WTH_WR2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PD_M3_WR_WTH2_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WTH2_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_WR_WTH2_O_DDRDZ +END SUBROUTINE D_M3_WR_WTH2_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION M3_WR_WTHR(D,CSTURB,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PETHETA) +SUBROUTINE M3_WR_WTHR(D,CSTURB,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PETHETA,PM3_WR_WTHR) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -2354,16 +2354,16 @@ FUNCTION M3_WR_WTHR(D,CSTURB,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_WR_WTHR + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WR_WTHR ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WTHR',0,ZHOOK_HANDLE) -M3_WR_WTHR = M3_WTH_WTHR(D,CSTURB,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PETHETA) +CALL M3_WTH_WTHR(D,CSTURB,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PETHETA,PM3_WR_WTHR) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WTHR',1,ZHOOK_HANDLE) -END FUNCTION M3_WR_WTHR +END SUBROUTINE M3_WR_WTHR !---------------------------------------------------------------------------- -FUNCTION D_M3_WR_WTHR_O_DDRDZ(D,CSTURB,PM3_WR_WTHR,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST) +SUBROUTINE D_M3_WR_WTHR_O_DDRDZ(D,CSTURB,PM3_WR_WTHR,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PD_M3_WR_WTHR_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PM3_WR_WTHR @@ -2372,16 +2372,16 @@ FUNCTION D_M3_WR_WTHR_O_DDRDZ(D,CSTURB,PM3_WR_WTHR,PREDR1,PREDTH1,PD,PBLL_O_E,PE REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_WR_WTHR_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WR_WTHR_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WTHR_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_WR_WTHR_O_DDRDZ = D_M3_WTH_WTHR_O_DDTDZ(D,CSTURB,PM3_WR_WTHR,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST) +CALL D_M3_WTH_WTHR_O_DDTDZ(D,CSTURB,PM3_WR_WTHR,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PD_M3_WR_WTHR_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WTHR_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_WR_WTHR_O_DDRDZ +END SUBROUTINE D_M3_WR_WTHR_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION M3_R2_W2R(D,CSTURB,PREDR1,PREDTH1,PD,PDRDZ,PLM,PLEPS,PTKE) +SUBROUTINE M3_R2_W2R(D,CSTURB,PREDR1,PREDTH1,PD,PDRDZ,PLM,PLEPS,PTKE,PM3_R2_W2R) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2391,16 +2391,16 @@ FUNCTION M3_R2_W2R(D,CSTURB,PREDR1,PREDTH1,PD,PDRDZ,PLM,PLEPS,PTKE) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_R2_W2R + REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PM3_R2_W2R ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_W2R',0,ZHOOK_HANDLE) -M3_R2_W2R = M3_TH2_W2TH(D,CSTURB,PREDR1,PREDTH1,PD,PDRDZ,PLM,PLEPS,PTKE) +CALL M3_TH2_W2TH(D,CSTURB,PREDR1,PREDTH1,PD,PDRDZ,PLM,PLEPS,PTKE,PM3_R2_W2R) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_W2R',1,ZHOOK_HANDLE) -END FUNCTION M3_R2_W2R +END SUBROUTINE M3_R2_W2R !---------------------------------------------------------------------------- -FUNCTION D_M3_R2_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,OUSERV) +SUBROUTINE D_M3_R2_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,OUSERV,PD_M3_R2_W2R_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2410,16 +2410,16 @@ FUNCTION D_M3_R2_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,OUSERV) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE LOGICAL, INTENT(IN) :: OUSERV - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_R2_W2R_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_R2_W2R_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2R_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_R2_W2R_O_DDRDZ = D_M3_TH2_W2TH_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,OUSERV) +CALL D_M3_TH2_W2TH_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,OUSERV,PD_M3_R2_W2R_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2R_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_R2_W2R_O_DDRDZ +END SUBROUTINE D_M3_R2_W2R_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION M3_R2_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE) +SUBROUTINE M3_R2_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PM3_R2_WR2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2427,16 +2427,16 @@ FUNCTION M3_R2_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_R2_WR2 + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_R2_WR2 ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WR2',0,ZHOOK_HANDLE) -M3_R2_WR2 = M3_TH2_WTH2(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE) +CALL M3_TH2_WTH2(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PM3_R2_WR2) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WR2',1,ZHOOK_HANDLE) -END FUNCTION M3_R2_WR2 +END SUBROUTINE M3_R2_WR2 !---------------------------------------------------------------------------- -FUNCTION D_M3_R2_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) +SUBROUTINE D_M3_R2_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PD_M3_R2_WR2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2446,16 +2446,16 @@ FUNCTION D_M3_R2_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_R2_WR2_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_R2_WR2_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WR2_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_R2_WR2_O_DDRDZ = D_M3_TH2_WTH2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) +CALL D_M3_TH2_WTH2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PD_M3_R2_WR2_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WR2_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_R2_WR2_O_DDRDZ +END SUBROUTINE D_M3_R2_WR2_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION M3_R2_W2TH(D,CSTURB,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ) +SUBROUTINE M3_R2_W2TH(D,CSTURB,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ,PM3_R2_W2TH) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -2465,16 +2465,16 @@ FUNCTION M3_R2_W2TH(D,CSTURB,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_R2_W2TH + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_R2_W2TH ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_W2TH',0,ZHOOK_HANDLE) -M3_R2_W2TH = M3_TH2_W2R(D,CSTURB,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ) +CALL M3_TH2_W2R(D,CSTURB,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ,PM3_R2_W2TH) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_W2TH',1,ZHOOK_HANDLE) -END FUNCTION M3_R2_W2TH +END SUBROUTINE M3_R2_W2TH !---------------------------------------------------------------------------- -FUNCTION D_M3_R2_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ) +SUBROUTINE D_M3_R2_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_R2_W2TH_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2486,16 +2486,16 @@ FUNCTION D_M3_R2_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_R2_W2TH_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_R2_W2TH_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2TH_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_R2_W2TH_O_DDRDZ = D_M3_TH2_W2R_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ) +CALL D_M3_TH2_W2R_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_R2_W2TH_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2TH_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_R2_W2TH_O_DDRDZ +END SUBROUTINE D_M3_R2_W2TH_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION M3_R2_WTH2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) +SUBROUTINE M3_R2_WTH2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PM3_R2_WTH2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -2504,16 +2504,16 @@ FUNCTION M3_R2_WTH2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_R2_WTH2 + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_R2_WTH2 ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTH2',0,ZHOOK_HANDLE) -M3_R2_WTH2 = M3_TH2_WR2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) +CALL M3_TH2_WR2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PM3_R2_WTH2) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTH2',1,ZHOOK_HANDLE) -END FUNCTION M3_R2_WTH2 +END SUBROUTINE M3_R2_WTH2 !---------------------------------------------------------------------------- -FUNCTION D_M3_R2_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) +SUBROUTINE D_M3_R2_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_R2_WTH2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2524,16 +2524,16 @@ FUNCTION D_M3_R2_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_R2_WTH2_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_R2_WTH2_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTH2_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_R2_WTH2_O_DDRDZ = D_M3_TH2_WR2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) +CALL D_M3_TH2_WR2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_R2_WTH2_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTH2_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_R2_WTH2_O_DDRDZ +END SUBROUTINE D_M3_R2_WTH2_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION M3_R2_WTHR(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) +SUBROUTINE M3_R2_WTHR(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PM3_R2_WTHR) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -2543,16 +2543,16 @@ FUNCTION M3_R2_WTHR(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_R2_WTHR + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_R2_WTHR ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTHR',0,ZHOOK_HANDLE) -M3_R2_WTHR = M3_TH2_WTHR(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) +CALL M3_TH2_WTHR(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PM3_R2_WTHR) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTHR',1,ZHOOK_HANDLE) -END FUNCTION M3_R2_WTHR +END SUBROUTINE M3_R2_WTHR !---------------------------------------------------------------------------- -FUNCTION D_M3_R2_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) +SUBROUTINE D_M3_R2_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_R2_WTHR_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2563,16 +2563,16 @@ FUNCTION D_M3_R2_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_R2_WTHR_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_R2_WTHR_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTHR_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_R2_WTHR_O_DDRDZ = D_M3_TH2_WTHR_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) +CALL D_M3_TH2_WTHR_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_R2_WTHR_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTHR_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_R2_WTHR_O_DDRDZ +END SUBROUTINE D_M3_R2_WTHR_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION D_M3_THR_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) +SUBROUTINE D_M3_THR_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PD_M3_THR_WTHR_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2582,16 +2582,16 @@ FUNCTION D_M3_THR_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_THR_WTHR_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTHR_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_THR_WTHR_O_DDRDZ = D_M3_THR_WTHR_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) +CALL D_M3_THR_WTHR_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PD_M3_THR_WTHR_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_THR_WTHR_O_DDRDZ +END SUBROUTINE D_M3_THR_WTHR_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION M3_THR_WR2(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) +SUBROUTINE M3_THR_WR2(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_THR_WR2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -2601,16 +2601,16 @@ FUNCTION M3_THR_WR2(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_THR_WR2 + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_THR_WR2 ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WR2',0,ZHOOK_HANDLE) -M3_THR_WR2 = M3_THR_WTH2(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) +CALL M3_THR_WTH2(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_THR_WR2) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WR2',1,ZHOOK_HANDLE) -END FUNCTION M3_THR_WR2 +END SUBROUTINE M3_THR_WR2 !---------------------------------------------------------------------------- -FUNCTION D_M3_THR_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) +SUBROUTINE D_M3_THR_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PD_M3_THR_WR2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2621,16 +2621,16 @@ FUNCTION D_M3_THR_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_THR_WR2_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WR2_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_THR_WR2_O_DDRDZ = D_M3_THR_WTH2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) +CALL D_M3_THR_WTH2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PD_M3_THR_WR2_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_THR_WR2_O_DDRDZ +END SUBROUTINE D_M3_THR_WR2_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION D_M3_THR_WR2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) +SUBROUTINE D_M3_THR_WR2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PD_M3_THR_WR2_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2640,16 +2640,16 @@ FUNCTION D_M3_THR_WR2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_THR_WR2_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WR2_O_DDTDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDTDZ',0,ZHOOK_HANDLE) -D_M3_THR_WR2_O_DDTDZ = D_M3_THR_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) +CALL D_M3_THR_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PD_M3_THR_WR2_O_DDTDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_THR_WR2_O_DDTDZ +END SUBROUTINE D_M3_THR_WR2_O_DDTDZ !---------------------------------------------------------------------------- -FUNCTION M3_THR_W2R(D,CSTURB,PREDTH1,PD,PLM,PLEPS,PTKE,PDTDZ) +SUBROUTINE M3_THR_W2R(D,CSTURB,PREDTH1,PD,PLM,PLEPS,PTKE,PDTDZ,PM3_THR_W2R) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -2658,16 +2658,16 @@ FUNCTION M3_THR_W2R(D,CSTURB,PREDTH1,PD,PLM,PLEPS,PTKE,PDTDZ) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_THR_W2R + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_THR_W2R ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2R',0,ZHOOK_HANDLE) -M3_THR_W2R = M3_THR_W2TH(D,CSTURB,PREDTH1,PD,PLM,PLEPS,PTKE,PDTDZ) +CALL M3_THR_W2TH(D,CSTURB,PREDTH1,PD,PLM,PLEPS,PTKE,PDTDZ,PM3_THR_W2R) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2R',1,ZHOOK_HANDLE) -END FUNCTION M3_THR_W2R +END SUBROUTINE M3_THR_W2R !---------------------------------------------------------------------------- -FUNCTION D_M3_THR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDTDZ,PEMOIST) +SUBROUTINE D_M3_THR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDTDZ,PEMOIST,PD_M3_THR_W2R_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2679,16 +2679,16 @@ FUNCTION D_M3_THR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_THR_W2R_O_DDRDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2R_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDRDZ',0,ZHOOK_HANDLE) -D_M3_THR_W2R_O_DDRDZ = D_M3_THR_W2TH_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDTDZ,PEMOIST) +CALL D_M3_THR_W2TH_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDTDZ,PEMOIST,PD_M3_THR_W2R_O_DDRDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDRDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_THR_W2R_O_DDRDZ +END SUBROUTINE D_M3_THR_W2R_O_DDRDZ !---------------------------------------------------------------------------- -FUNCTION D_M3_THR_W2R_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE) +SUBROUTINE D_M3_THR_W2R_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PD_M3_THR_W2R_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -2697,14 +2697,14 @@ FUNCTION D_M3_THR_W2R_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_THR_W2R_O_DDTDZ + REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2R_O_DDTDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDTDZ',0,ZHOOK_HANDLE) -D_M3_THR_W2R_O_DDTDZ = D_M3_THR_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE) +CALL D_M3_THR_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PD_M3_THR_W2R_O_DDTDZ) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDTDZ',1,ZHOOK_HANDLE) -END FUNCTION D_M3_THR_W2R_O_DDTDZ +END SUBROUTINE D_M3_THR_W2R_O_DDTDZ !---------------------------------------------------------------------------- ! END MODULE MODE_PRANDTL diff --git a/src/common/turb/mode_sbl.F90 b/src/common/turb/mode_sbl.F90 index d4105044f..c219c43f4 100644 --- a/src/common/turb/mode_sbl.F90 +++ b/src/common/turb/mode_sbl.F90 @@ -80,162 +80,162 @@ END INTERFACE CONTAINS !------------------------------------------------------------------------------- ! -FUNCTION BUSINGER_PHIM_3D(PZ_O_LMO) +SUBROUTINE BUSINGER_PHIM_3D(PZ_O_LMO,BUSINGER_PHIM3D) REAL, DIMENSION(:,:,:), INTENT(IN) :: PZ_O_LMO REAL, DIMENSION(SIZE(PZ_O_LMO,1), & - SIZE(PZ_O_LMO,2),SIZE(PZ_O_LMO,3)) :: BUSINGER_PHIM_3D + SIZE(PZ_O_LMO,2),SIZE(PZ_O_LMO,3)),INTENT(OUT) :: BUSINGER_PHIM3D ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM_3D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:,:,:) < 0. ) - BUSINGER_PHIM_3D(:,:,:) = (1.-15.*PZ_O_LMO)**(-0.25) + BUSINGER_PHIM3D(:,:,:) = (1.-15.*PZ_O_LMO)**(-0.25) ELSEWHERE - BUSINGER_PHIM_3D(:,:,:) = 1. + 4.7 * PZ_O_LMO + BUSINGER_PHIM3D(:,:,:) = 1. + 4.7 * PZ_O_LMO END WHERE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM_3D',1,ZHOOK_HANDLE) -END FUNCTION BUSINGER_PHIM_3D +END SUBROUTINE BUSINGER_PHIM_3D ! !------------------------------------------------------------------------------- ! -FUNCTION BUSINGER_PHIM_2D(PZ_O_LMO) +SUBROUTINE BUSINGER_PHIM_2D(PZ_O_LMO,BUSINGER_PHIM2D) REAL, DIMENSION(:,:), INTENT(IN) :: PZ_O_LMO - REAL, DIMENSION(SIZE(PZ_O_LMO,1),SIZE(PZ_O_LMO,2)) :: BUSINGER_PHIM_2D + REAL, DIMENSION(SIZE(PZ_O_LMO,1),SIZE(PZ_O_LMO,2)),INTENT(OUT) :: BUSINGER_PHIM2D ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM_2D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:,:) < 0. ) - BUSINGER_PHIM_2D(:,:) = (1.-15.*PZ_O_LMO)**(-0.25) + BUSINGER_PHIM2D(:,:) = (1.-15.*PZ_O_LMO)**(-0.25) ELSEWHERE - BUSINGER_PHIM_2D(:,:) = 1. + 4.7 * PZ_O_LMO + BUSINGER_PHIM2D(:,:) = 1. + 4.7 * PZ_O_LMO END WHERE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM_2D',1,ZHOOK_HANDLE) -END FUNCTION BUSINGER_PHIM_2D +END SUBROUTINE BUSINGER_PHIM_2D ! !------------------------------------------------------------------------------- ! -FUNCTION BUSINGER_PHIM_1D(PZ_O_LMO) +SUBROUTINE BUSINGER_PHIM_1D(PZ_O_LMO,BUSINGER_PHIM1D) REAL, DIMENSION(:), INTENT(IN) :: PZ_O_LMO - REAL, DIMENSION(SIZE(PZ_O_LMO)) :: BUSINGER_PHIM_1D + REAL, DIMENSION(SIZE(PZ_O_LMO)),INTENT(OUT) :: BUSINGER_PHIM1D ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM_1D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:) < 0. ) - BUSINGER_PHIM_1D(:) = (1.-15.*PZ_O_LMO)**(-0.25) + BUSINGER_PHIM1D(:) = (1.-15.*PZ_O_LMO)**(-0.25) ELSEWHERE - BUSINGER_PHIM_1D(:) = 1. + 4.7 * PZ_O_LMO + BUSINGER_PHIM1D(:) = 1. + 4.7 * PZ_O_LMO END WHERE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM_1D',1,ZHOOK_HANDLE) -END FUNCTION BUSINGER_PHIM_1D +END SUBROUTINE BUSINGER_PHIM_1D ! !------------------------------------------------------------------------------- ! -FUNCTION BUSINGER_PHIM_0D(PZ_O_LMO) +SUBROUTINE BUSINGER_PHIM_0D(PZ_O_LMO,BUSINGER_PHIM0D) REAL, INTENT(IN) :: PZ_O_LMO - REAL :: BUSINGER_PHIM_0D + REAL,INTENT(OUT) :: BUSINGER_PHIM0D ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM_0D',0,ZHOOK_HANDLE) IF ( PZ_O_LMO < 0. ) THEN - BUSINGER_PHIM_0D = (1.-15.*PZ_O_LMO)**(-0.25) + BUSINGER_PHIM0D = (1.-15.*PZ_O_LMO)**(-0.25) ELSE - BUSINGER_PHIM_0D = 1. + 4.7 * PZ_O_LMO + BUSINGER_PHIM0D = 1. + 4.7 * PZ_O_LMO END IF IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM_0D',1,ZHOOK_HANDLE) -END FUNCTION BUSINGER_PHIM_0D +END SUBROUTINE BUSINGER_PHIM_0D ! !------------------------------------------------------------------------------- !------------------------------------------------------------------------------- ! -FUNCTION BUSINGER_PHIH_3D(PZ_O_LMO) +SUBROUTINE BUSINGER_PHIH_3D(PZ_O_LMO,BUSINGER_PHIH3D) REAL, DIMENSION(:,:,:), INTENT(IN) :: PZ_O_LMO REAL, DIMENSION(SIZE(PZ_O_LMO,1), & - SIZE(PZ_O_LMO,2),SIZE(PZ_O_LMO,3)) :: BUSINGER_PHIH_3D + SIZE(PZ_O_LMO,2),SIZE(PZ_O_LMO,3)),INTENT(OUT) :: BUSINGER_PHIH3D ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH_3D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:,:,:) < 0. ) - BUSINGER_PHIH_3D(:,:,:) = 0.74 * (1.-9.*PZ_O_LMO)**(-0.5) + BUSINGER_PHIH3D(:,:,:) = 0.74 * (1.-9.*PZ_O_LMO)**(-0.5) ELSEWHERE - BUSINGER_PHIH_3D(:,:,:) = 0.74 + 4.7 * PZ_O_LMO + BUSINGER_PHIH3D(:,:,:) = 0.74 + 4.7 * PZ_O_LMO END WHERE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH_3D',1,ZHOOK_HANDLE) -END FUNCTION BUSINGER_PHIH_3D +END SUBROUTINE BUSINGER_PHIH_3D ! !------------------------------------------------------------------------------- ! -FUNCTION BUSINGER_PHIH_2D(PZ_O_LMO) +SUBROUTINE BUSINGER_PHIH_2D(PZ_O_LMO,BUSINGER_PHIH2D) REAL, DIMENSION(:,:), INTENT(IN) :: PZ_O_LMO - REAL, DIMENSION(SIZE(PZ_O_LMO,1),SIZE(PZ_O_LMO,2)) :: BUSINGER_PHIH_2D + REAL, DIMENSION(SIZE(PZ_O_LMO,1),SIZE(PZ_O_LMO,2)),INTENT(OUT) :: BUSINGER_PHIH2D ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH_2D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:,:) < 0. ) - BUSINGER_PHIH_2D(:,:) = 0.74 * (1.-9.*PZ_O_LMO)**(-0.5) + BUSINGER_PHIH2D(:,:) = 0.74 * (1.-9.*PZ_O_LMO)**(-0.5) ELSEWHERE - BUSINGER_PHIH_2D(:,:) = 0.74 + 4.7 * PZ_O_LMO + BUSINGER_PHIH2D(:,:) = 0.74 + 4.7 * PZ_O_LMO END WHERE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH_2D',1,ZHOOK_HANDLE) -END FUNCTION BUSINGER_PHIH_2D +END SUBROUTINE BUSINGER_PHIH_2D ! !------------------------------------------------------------------------------- ! -FUNCTION BUSINGER_PHIH_1D(PZ_O_LMO) +SUBROUTINE BUSINGER_PHIH_1D(PZ_O_LMO,BUSINGER_PHIH1D) REAL, DIMENSION(:), INTENT(IN) :: PZ_O_LMO - REAL, DIMENSION(SIZE(PZ_O_LMO)) :: BUSINGER_PHIH_1D + REAL, DIMENSION(SIZE(PZ_O_LMO)),INTENT(OUT) :: BUSINGER_PHIH1D ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH_1D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:) < 0. ) - BUSINGER_PHIH_1D(:) = 0.74 * (1.-9.*PZ_O_LMO)**(-0.5) + BUSINGER_PHIH1D(:) = 0.74 * (1.-9.*PZ_O_LMO)**(-0.5) ELSEWHERE - BUSINGER_PHIH_1D(:) = 0.74 + 4.7 * PZ_O_LMO + BUSINGER_PHIH1D(:) = 0.74 + 4.7 * PZ_O_LMO END WHERE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH_1D',1,ZHOOK_HANDLE) -END FUNCTION BUSINGER_PHIH_1D +END SUBROUTINE BUSINGER_PHIH_1D ! !------------------------------------------------------------------------------- ! -FUNCTION BUSINGER_PHIH_0D(PZ_O_LMO) +SUBROUTINE BUSINGER_PHIH_0D(PZ_O_LMO,BUSINGER_PHIH0D) REAL, INTENT(IN) :: PZ_O_LMO - REAL :: BUSINGER_PHIH_0D + REAL,INTENT(OUT) :: BUSINGER_PHIH0D ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH_0D',0,ZHOOK_HANDLE) IF ( PZ_O_LMO < 0. ) THEN - BUSINGER_PHIH_0D = 0.74 * (1.-9.*PZ_O_LMO)**(-0.5) + BUSINGER_PHIH0D = 0.74 * (1.-9.*PZ_O_LMO)**(-0.5) ELSE - BUSINGER_PHIH_0D = 0.74 + 4.7 * PZ_O_LMO + BUSINGER_PHIH0D = 0.74 + 4.7 * PZ_O_LMO END IF IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH_0D',1,ZHOOK_HANDLE) -END FUNCTION BUSINGER_PHIH_0D +END SUBROUTINE BUSINGER_PHIH_0D ! !------------------------------------------------------------------------------- !------------------------------------------------------------------------------- ! -FUNCTION BUSINGER_PHIE_3D(PZ_O_LMO) +SUBROUTINE BUSINGER_PHIE_3D(PZ_O_LMO,BUSINGER_PHIE3D) USE MODD_CTURB REAL, DIMENSION(:,:,:), INTENT(IN) :: PZ_O_LMO REAL, DIMENSION(SIZE(PZ_O_LMO,1), & - SIZE(PZ_O_LMO,2),SIZE(PZ_O_LMO,3)) :: BUSINGER_PHIE_3D + SIZE(PZ_O_LMO,2),SIZE(PZ_O_LMO,3)),INTENT(OUT) :: BUSINGER_PHIE3D ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIE_3D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:,:,:) < 0. ) - BUSINGER_PHIE_3D(:,:,:) = (1.+(-PZ_O_LMO)**(2./3.)/XALPSBL) & + BUSINGER_PHIE3D(:,:,:) = (1.+(-PZ_O_LMO)**(2./3.)/XALPSBL) & * (1.-15.*PZ_O_LMO)**(0.5) ELSEWHERE - BUSINGER_PHIE_3D(:,:,:) = 1./(1. + 4.7 * PZ_O_LMO)**2 + BUSINGER_PHIE3D(:,:,:) = 1./(1. + 4.7 * PZ_O_LMO)**2 END WHERE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIE_3D',1,ZHOOK_HANDLE) -END FUNCTION BUSINGER_PHIE_3D +END SUBROUTINE BUSINGER_PHIE_3D ! !------------------------------------------------------------------------------- !------------------------------------------------------------------------------- ! -FUNCTION PAULSON_PSIM_2D(PZ_O_LMO) +SUBROUTINE PAULSON_PSIM_2D(PZ_O_LMO,PAULSON_PSIM2D) USE MODD_CST REAL, DIMENSION(:,:), INTENT(IN) :: PZ_O_LMO - REAL, DIMENSION(SIZE(PZ_O_LMO,1),SIZE(PZ_O_LMO,2)) :: PAULSON_PSIM_2D + REAL, DIMENSION(SIZE(PZ_O_LMO,1),SIZE(PZ_O_LMO,2)),INTENT(OUT) :: PAULSON_PSIM2D ! REAL, DIMENSION(SIZE(PZ_O_LMO,1),SIZE(PZ_O_LMO,2)) :: ZX @@ -244,19 +244,19 @@ FUNCTION PAULSON_PSIM_2D(PZ_O_LMO) ZX=1. WHERE ( PZ_O_LMO(:,:) < 0. ) ZX=(1.-15.*PZ_O_LMO)**(0.25) - PAULSON_PSIM_2D(:,:) = LOG( (1.+ZX**2)*(1+ZX)**2/8. ) - 2.*ATAN(ZX) + XPI/2. + PAULSON_PSIM2D(:,:) = LOG( (1.+ZX**2)*(1+ZX)**2/8. ) - 2.*ATAN(ZX) + XPI/2. ELSEWHERE - PAULSON_PSIM_2D(:,:) = - 4.7 * PZ_O_LMO + PAULSON_PSIM2D(:,:) = - 4.7 * PZ_O_LMO END WHERE IF (LHOOK) CALL DR_HOOK('MODE_SBL:PAULSON_PSIM_2D',1,ZHOOK_HANDLE) -END FUNCTION PAULSON_PSIM_2D +END SUBROUTINE PAULSON_PSIM_2D ! !------------------------------------------------------------------------------- ! -FUNCTION PAULSON_PSIM_1D(PZ_O_LMO) +SUBROUTINE PAULSON_PSIM_1D(PZ_O_LMO,PAULSON_PSIM1D) USE MODD_CST REAL, DIMENSION(:), INTENT(IN) :: PZ_O_LMO - REAL, DIMENSION(SIZE(PZ_O_LMO,1)) :: PAULSON_PSIM_1D + REAL, DIMENSION(SIZE(PZ_O_LMO,1)),INTENT(OUT) :: PAULSON_PSIM1D ! REAL, DIMENSION(SIZE(PZ_O_LMO,1)) :: ZX @@ -265,19 +265,19 @@ FUNCTION PAULSON_PSIM_1D(PZ_O_LMO) ZX=1. WHERE ( PZ_O_LMO(:) < 0. ) ZX=(1.-15.*PZ_O_LMO)**(0.25) - PAULSON_PSIM_1D(:) = LOG( (1.+ZX**2)*(1+ZX)**2/8. ) - 2.*ATAN(ZX) + XPI/2. + PAULSON_PSIM1D(:) = LOG( (1.+ZX**2)*(1+ZX)**2/8. ) - 2.*ATAN(ZX) + XPI/2. ELSEWHERE - PAULSON_PSIM_1D(:) = - 4.7 * PZ_O_LMO + PAULSON_PSIM1D(:) = - 4.7 * PZ_O_LMO END WHERE IF (LHOOK) CALL DR_HOOK('MODE_SBL:PAULSON_PSIM_1D',1,ZHOOK_HANDLE) -END FUNCTION PAULSON_PSIM_1D +END SUBROUTINE PAULSON_PSIM_1D ! !------------------------------------------------------------------------------- ! -FUNCTION PAULSON_PSIM_0D(PZ_O_LMO) +SUBROUTINE PAULSON_PSIM_0D(PZ_O_LMO,PAULSON_PSIM0D) USE MODD_CST REAL, INTENT(IN) :: PZ_O_LMO - REAL :: PAULSON_PSIM_0D + REAL,INTENT(OUT) :: PAULSON_PSIM0D ! REAL :: ZX @@ -286,17 +286,17 @@ FUNCTION PAULSON_PSIM_0D(PZ_O_LMO) ZX=1. IF ( PZ_O_LMO < 0. ) THEN ZX=(1.-15.*PZ_O_LMO)**(0.25) - PAULSON_PSIM_0D = LOG( (1.+ZX**2)*(1+ZX)**2/8. ) - 2.*ATAN(ZX) + XPI/2. + PAULSON_PSIM0D = LOG( (1.+ZX**2)*(1+ZX)**2/8. ) - 2.*ATAN(ZX) + XPI/2. ELSE - PAULSON_PSIM_0D = - 4.7 * PZ_O_LMO + PAULSON_PSIM0D = - 4.7 * PZ_O_LMO END IF IF (LHOOK) CALL DR_HOOK('MODE_SBL:PAULSON_PSIM_0D',1,ZHOOK_HANDLE) -END FUNCTION PAULSON_PSIM_0D +END SUBROUTINE PAULSON_PSIM_0D ! !------------------------------------------------------------------------------- !------------------------------------------------------------------------------- ! -FUNCTION LMO_2D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV) +SUBROUTINE LMO_2D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV,LMO2D) USE MODD_CST USE MODD_PARAMETERS, ONLY: JPVEXT_TURB,XUNDEF REAL, DIMENSION(:,:), INTENT(IN) :: PUSTAR @@ -304,7 +304,7 @@ FUNCTION LMO_2D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV) REAL, DIMENSION(:,:), INTENT(IN) :: PRV REAL, DIMENSION(:,:), INTENT(IN) :: PSFTH REAL, DIMENSION(:,:), INTENT(IN) :: PSFRV - REAL, DIMENSION(SIZE(PUSTAR,1),SIZE(PUSTAR,2)) :: LMO_2D + REAL, DIMENSION(SIZE(PUSTAR,1),SIZE(PUSTAR,2)),INTENT(OUT) :: LMO2D ! REAL, DIMENSION(SIZE(PUSTAR,1),SIZE(PUSTAR,2)) :: ZTHETAV REAL, DIMENSION(SIZE(PUSTAR,1),SIZE(PUSTAR,2)) :: ZQ0 @@ -317,17 +317,17 @@ FUNCTION LMO_2D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV) ZTHETAV(:,:) = PTHETA(:,:) * ( 1. +ZEPS * PRV(:,:)) ZQ0 (:,:) = PSFTH(:,:) + ZTHETAV(:,:) * ZEPS * PSFRV(:,:) ! - LMO_2D(:,:) = XUNDEF + LMO2D(:,:) = XUNDEF WHERE ( ZQ0(:,:) /=0. ) & - LMO_2D(:,:) = - MAX(PUSTAR(:,:),1.E-6)**3 & + LMO2D(:,:) = - MAX(PUSTAR(:,:),1.E-6)**3 & / ( XKARMAN * XG / ZTHETAV(:,:) *ZQ0(:,:) ) IF (LHOOK) CALL DR_HOOK('MODE_SBL:LMO_2D',1,ZHOOK_HANDLE) -END FUNCTION LMO_2D +END SUBROUTINE LMO_2D ! !------------------------------------------------------------------------------- ! -FUNCTION LMO_1D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV) +SUBROUTINE LMO_1D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV,LMO1D) USE MODD_CST USE MODD_PARAMETERS, ONLY: JPVEXT_TURB,XUNDEF REAL, DIMENSION(:), INTENT(IN) :: PUSTAR @@ -335,7 +335,7 @@ FUNCTION LMO_1D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV) REAL, DIMENSION(:), INTENT(IN) :: PRV REAL, DIMENSION(:), INTENT(IN) :: PSFTH REAL, DIMENSION(:), INTENT(IN) :: PSFRV - REAL, DIMENSION(SIZE(PUSTAR)) :: LMO_1D + REAL, DIMENSION(SIZE(PUSTAR)),INTENT(OUT) :: LMO1D ! REAL, DIMENSION(SIZE(PUSTAR)) :: ZTHETAV REAL :: ZEPS @@ -347,17 +347,17 @@ FUNCTION LMO_1D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV) ! ZTHETAV(:) = PTHETA(:) * ( 1. +ZEPS * PRV(:)) ! - LMO_1D(:) = XUNDEF + LMO1D(:) = XUNDEF WHERE ( PSFTH(:)/ZTHETAV(:)+ZEPS*PSFRV(:)/=0. ) & - LMO_1D(:) = - MAX(PUSTAR(:),1.E-6)**3 & + LMO1D(:) = - MAX(PUSTAR(:),1.E-6)**3 & / ( XKARMAN * ( XG / ZTHETAV(:) * PSFTH(:) & + XG * ZEPS * PSFRV(:) ) ) IF (LHOOK) CALL DR_HOOK('MODE_SBL:LMO_1D',1,ZHOOK_HANDLE) -END FUNCTION LMO_1D +END SUBROUTINE LMO_1D ! !------------------------------------------------------------------------------- ! -FUNCTION LMO_0D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV) +SUBROUTINE LMO_0D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV,LMO0D) USE MODD_CST USE MODD_PARAMETERS, ONLY: JPVEXT_TURB,XUNDEF REAL, INTENT(IN) :: PUSTAR @@ -365,7 +365,7 @@ FUNCTION LMO_0D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV) REAL, INTENT(IN) :: PRV REAL, INTENT(IN) :: PSFTH REAL, INTENT(IN) :: PSFRV - REAL :: LMO_0D + REAL, INTENT(OUT) :: LMO0D ! REAL :: ZTHETAV REAL :: ZEPS @@ -378,18 +378,18 @@ FUNCTION LMO_0D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV) ! ZTHETAV = PTHETA * ( 1. +ZEPS * PRV) ! - LMO_0D = XUNDEF + LMO0D = XUNDEF IF ( PSFTH/ZTHETAV+ZEPS*PSFRV/=0. ) & - LMO_0D = - MAX(PUSTAR,1.E-6)**3 & + LMO0D = - MAX(PUSTAR,1.E-6)**3 & / ( XKARMAN * ( XG / ZTHETAV * PSFTH & + XG * ZEPS * PSFRV ) ) IF (LHOOK) CALL DR_HOOK('MODE_SBL:LMO_0D',1,ZHOOK_HANDLE) -END FUNCTION LMO_0D +END SUBROUTINE LMO_0D ! !------------------------------------------------------------------------------- !------------------------------------------------------------------------------- ! -FUNCTION USTAR_2D(PU,PV,PZ,PZ0,PLMO) +SUBROUTINE USTAR_2D(PU,PV,PZ,PZ0,PLMO,USTAR2D) USE MODD_CST USE MODD_PARAMETERS, ONLY: JPVEXT_TURB,XUNDEF REAL, DIMENSION(:,:), INTENT(IN) :: PU @@ -397,41 +397,43 @@ FUNCTION USTAR_2D(PU,PV,PZ,PZ0,PLMO) REAL, DIMENSION(:,:), INTENT(IN) :: PZ REAL, DIMENSION(:,:), INTENT(IN) :: PZ0 REAL, DIMENSION(:,:), INTENT(IN) :: PLMO - REAL, DIMENSION(SIZE(PU,1),SIZE(PU,2)) :: USTAR_2D + REAL, DIMENSION(SIZE(PU,1),SIZE(PU,2)),INTENT(OUT) :: USTAR2D REAL, DIMENSION(SIZE(PU,1),SIZE(PU,2)) :: ZZ_O_LMO REAL, DIMENSION(SIZE(PU,1),SIZE(PU,2)) :: ZZ0_O_LMO + REAL, DIMENSION(SIZE(PU,1),SIZE(PU,2)) :: ZWORK1,ZWORK2 ! !* purely unstable case REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:USTAR_2D',0,ZHOOK_HANDLE) - USTAR_2D(:,:) = 0. + USTAR2D(:,:) = 0. ZZ_O_LMO(:,:) = XUNDEF ZZ0_O_LMO(:,:) = XUNDEF ! !* general case + CALL PAULSON_PSIM(ZZ_O_LMO,ZWORK1) + CALL PAULSON_PSIM(ZZ0_O_LMO,ZWORK2) WHERE(ABS(PLMO) > 1.E-20 .AND. PLMO/=XUNDEF) ZZ_O_LMO = PZ(:,:) / PLMO(:,:) - ZZ0_O_LMO = PZ0(:,:) / PLMO(:,:) - USTAR_2D(:,:) = SQRT( PU(:,:)**2+PV(:,:)**2 ) & + ZZ0_O_LMO = PZ0(:,:) / PLMO(:,:) + USTAR2D(:,:) = SQRT( PU(:,:)**2+PV(:,:)**2 ) & * XKARMAN / ( LOG(PZ(:,:)/PZ0(:,:)) & - - PAULSON_PSIM(ZZ_O_LMO(:,:)) & - + PAULSON_PSIM(ZZ0_O_LMO(:,:)) ) + - ZWORK1(:,:) + ZWORK2(:,:)) END WHERE ! !* purely neutral case WHERE(PLMO==XUNDEF) ZZ_O_LMO = 0. - USTAR_2D(:,:) = SQRT( PU(:,:)**2+PV(:,:)**2 ) & + USTAR2D(:,:) = SQRT( PU(:,:)**2+PV(:,:)**2 ) & * XKARMAN / LOG(PZ(:,:)/PZ0(:,:)) END WHERE ! IF (LHOOK) CALL DR_HOOK('MODE_SBL:USTAR_2D',1,ZHOOK_HANDLE) -END FUNCTION USTAR_2D +END SUBROUTINE USTAR_2D ! !------------------------------------------------------------------------------- ! -FUNCTION USTAR_1D(PU,PV,PZ,PZ0,PLMO) +SUBROUTINE USTAR_1D(PU,PV,PZ,PZ0,PLMO,USTAR1D) USE MODD_CST USE MODD_PARAMETERS, ONLY: JPVEXT_TURB,XUNDEF REAL, DIMENSION(:), INTENT(IN) :: PU @@ -439,41 +441,43 @@ FUNCTION USTAR_1D(PU,PV,PZ,PZ0,PLMO) REAL, DIMENSION(:), INTENT(IN) :: PZ REAL, DIMENSION(:), INTENT(IN) :: PZ0 REAL, DIMENSION(:), INTENT(IN) :: PLMO - REAL, DIMENSION(SIZE(PU)) :: USTAR_1D + REAL, DIMENSION(SIZE(PU)),INTENT(OUT) :: USTAR1D REAL, DIMENSION(SIZE(PU)) :: ZZ_O_LMO REAL, DIMENSION(SIZE(PU)) :: ZZ0_O_LMO + REAL, DIMENSION(SIZE(PU)) :: ZWORK1,ZWORK2 ! !* purely unstable case REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:USTAR_1D',0,ZHOOK_HANDLE) - USTAR_1D(:) = 0. + USTAR1D(:) = 0. ZZ_O_LMO(:) = XUNDEF ZZ0_O_LMO(:) = XUNDEF ! !* general case + CALL PAULSON_PSIM(ZZ_O_LMO,ZWORK1) + CALL PAULSON_PSIM(ZZ0_O_LMO,ZWORK2) WHERE(ABS(PLMO) > 1.E-20 .AND. PLMO/=XUNDEF) ZZ_O_LMO = PZ(:) / PLMO(:) ZZ0_O_LMO = PZ0(:) / PLMO(:) - USTAR_1D(:) = SQRT( PU(:)**2+PV(:)**2 ) & + USTAR1D(:) = SQRT( PU(:)**2+PV(:)**2 ) & * XKARMAN / ( LOG(PZ(:)/PZ0(:)) & - - PAULSON_PSIM(ZZ_O_LMO(:)) & - + PAULSON_PSIM(ZZ0_O_LMO(:)) ) + - ZWORK1(:) + ZWORK2(:)) END WHERE ! !* purely neutral case WHERE(PLMO==XUNDEF) ZZ_O_LMO = 0. - USTAR_1D(:) = SQRT( PU(:)**2+PV(:)**2 ) & + USTAR1D(:) = SQRT( PU(:)**2+PV(:)**2 ) & * XKARMAN / LOG(PZ(:)/PZ0(:)) END WHERE ! IF (LHOOK) CALL DR_HOOK('MODE_SBL:USTAR_1D',1,ZHOOK_HANDLE) -END FUNCTION USTAR_1D +END SUBROUTINE USTAR_1D ! !------------------------------------------------------------------------------- ! -FUNCTION USTAR_0D(PU,PV,PZ,PZ0,PLMO) +SUBROUTINE USTAR_0D(PU,PV,PZ,PZ0,PLMO,USTAR0D) USE MODD_CST USE MODD_PARAMETERS, ONLY: JPVEXT_TURB,XUNDEF REAL, INTENT(IN) :: PU @@ -481,27 +485,30 @@ FUNCTION USTAR_0D(PU,PV,PZ,PZ0,PLMO) REAL, INTENT(IN) :: PZ REAL, INTENT(IN) :: PZ0 REAL, INTENT(IN) :: PLMO - REAL :: USTAR_0D + REAL, INTENT(OUT) :: USTAR0D + REAL :: ZWORK, ZWORK2 ! !* purely unstable case REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:USTAR_0D',0,ZHOOK_HANDLE) - USTAR_0D = 0. + USTAR0D = 0. ! !* general case - IF ( ABS(PLMO) >= 1.E-20 .AND. PLMO/=XUNDEF) & - USTAR_0D = SQRT( PU**2+PV**2 ) & + IF ( ABS(PLMO) >= 1.E-20 .AND. PLMO/=XUNDEF) THEN + CALL PAULSON_PSIM(PZ/PLMO,ZWORK1) + CALL PAULSON_PSIM(PZ0/PLMO,ZWORK2) + USTAR0D = SQRT( PU**2+PV**2 ) & * XKARMAN / ( LOG(PZ/PZ0) & - - PAULSON_PSIM(PZ/PLMO) & - + PAULSON_PSIM(PZ0/PLMO)) + - ZWORK1 + ZWORK2) + END IF ! !* purely neutral case IF (PLMO==XUNDEF) & - USTAR_0D = SQRT( PU**2+PV**2 ) & + USTAR0D = SQRT( PU**2+PV**2 ) & * XKARMAN / LOG(PZ/PZ0) IF (LHOOK) CALL DR_HOOK('MODE_SBL:USTAR_0D',1,ZHOOK_HANDLE) -END FUNCTION USTAR_0D +END SUBROUTINE USTAR_0D ! !------------------------------------------------------------------------------- ! diff --git a/src/common/turb/mode_sbl_depth.F90 b/src/common/turb/mode_sbl_depth.F90 index e485940e0..43403935f 100644 --- a/src/common/turb/mode_sbl_depth.F90 +++ b/src/common/turb/mode_sbl_depth.F90 @@ -48,7 +48,7 @@ CONTAINS USE MODD_PARAMETERS, ONLY : XUNDEF USE MODD_CTURB, ONLY : XFTOP_O_FSURF, XSBL_O_BL ! -USE MODE_BL_DEPTH_DIAG +USE MODE_BL_DEPTH_DIAG, ONLY : BL_DEPTH_DIAG ! IMPLICIT NONE ! @@ -97,13 +97,15 @@ ZUSTAR2(:,:) = SQRT(ZWU**2+ZWV**2) !* BL and SBL diagnosed with friction criteria ! ZWIND=SQRT(PFLXU**2+PFLXV**2) -ZSBL_DYN = XSBL_O_BL * BL_DEPTH_DIAG(KKB,KKE,ZUSTAR2,PZZ(:,:,KKB),ZWIND,PZZ,XFTOP_O_FSURF) +CALL BL_DEPTH_DIAG(KKB,KKE,ZUSTAR2,PZZ(:,:,KKB),ZWIND,PZZ,XFTOP_O_FSURF,ZSBL_DYN) +ZSBL_DYN = XSBL_O_BL * ZSBL_DYN ! !---------------------------------------------------------------------------- ! !* BL and SBL diagnosed with buoyancy flux criteria ! -ZSBL_THER= XSBL_O_BL * BL_DEPTH_DIAG(KKB,KKE,ZQ0,PZZ(:,:,KKB),PWTHV,PZZ,XFTOP_O_FSURF) +CALL BL_DEPTH_DIAG(KKB,KKE,ZQ0,PZZ(:,:,KKB),PWTHV,PZZ,XFTOP_O_FSURF,ZSBL_THER) +ZSBL_THER= XSBL_O_BL * ZSBL_THER ! !---------------------------------------------------------------------------- ! diff --git a/src/common/turb/mode_turb_hor_sv_corr.F90 b/src/common/turb/mode_turb_hor_sv_corr.F90 index a007a9755..be965cc09 100644 --- a/src/common/turb/mode_turb_hor_sv_corr.F90 +++ b/src/common/turb/mode_turb_hor_sv_corr.F90 @@ -151,7 +151,7 @@ DO JSV=1,NSV ! covariance SvThv ! IF (LLES_CALL) THEN - ZA(:,:,:) = ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC) + CALL ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC,ZA) IF (.NOT. L2D) THEN ZFLX(:,:,:)= PLM(:,:,:) * PLEPS(:,:,:) & * ( GX_M_M(PTHLM,PDXX,PDZZ,PDZX) * GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX) & @@ -166,7 +166,7 @@ DO JSV=1,NSV CALL LES_MEAN_SUBGRID( -CST%XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_SvPz(:,:,:,JSV), .TRUE. ) ! IF (KRR>=1) THEN - ZA(:,:,:) = EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN) + CALL EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN,ZA) IF (.NOT. L2D) THEN ZFLX(:,:,:)= PLM(:,:,:) * PLEPS(:,:,:) & * ( GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX) * GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX) & diff --git a/src/common/turb/mode_turb_hor_thermo_corr.F90 b/src/common/turb/mode_turb_hor_thermo_corr.F90 index 7e01a7925..8e9f1ae17 100644 --- a/src/common/turb/mode_turb_hor_thermo_corr.F90 +++ b/src/common/turb/mode_turb_hor_thermo_corr.F90 @@ -230,7 +230,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. TPFILE%LOPENED ) & CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_Thl2, .TRUE. ) CALL LES_MEAN_SUBGRID( MZF(PWM)*ZFLX, X_LES_RES_W_SBG_Thl2, .TRUE. ) CALL LES_MEAN_SUBGRID( -2.*XCTD*SQRT(PTKEM)*ZFLX/PLEPS ,X_LES_SUBGRID_DISS_Thl2, .TRUE. ) - ZA(:,:,:) = ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC) + CALL ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC,ZA) CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_ThlThv, .TRUE. ) CALL LES_MEAN_SUBGRID( -CST%XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_ThlPz, .TRUE. ) CALL SECOND_MNH(ZTIME2) @@ -320,7 +320,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. TPFILE%LOPENED ) & CALL LES_MEAN_SUBGRID( -XCTD*SQRT(PTKEM)*ZFLX/PLEPS ,X_LES_SUBGRID_DISS_ThlRt, .TRUE. ) CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_RtThv, .TRUE. ) CALL LES_MEAN_SUBGRID( -CST%XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_RtPz,.TRUE.) - ZA(:,:,:) = EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN) + CALL EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN,ZA) CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_ThlThv, .TRUE. ) CALL LES_MEAN_SUBGRID( -CST%XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_ThlPz,.TRUE.) CALL SECOND_MNH(ZTIME2) diff --git a/src/common/turb/mode_turb_ver.F90 b/src/common/turb/mode_turb_ver.F90 index 1e099de53..edf72192d 100644 --- a/src/common/turb/mode_turb_ver.F90 +++ b/src/common/turb/mode_turb_ver.F90 @@ -236,7 +236,7 @@ USE MODE_SBL_DEPTH, ONLY: SBL_DEPTH USE MODI_SECOND_MNH ! USE MODE_IO_FIELD_WRITE, only: IO_Field_write -USE MODE_PRANDTL +USE MODE_PRANDTL, ONLY: PSI_SV, PSI3, PHI3, PRANDTL ! IMPLICIT NONE ! @@ -468,13 +468,13 @@ ENDIF ! GUSERV = KRR/=0 ! -ZPHI3 = PHI3(D,CSTURB,ZREDTH1,ZREDR1,ZRED2TH3,ZRED2R3,ZRED2THR3,HTURBDIM,GUSERV) +CALL PHI3(D,CSTURB,ZREDTH1,ZREDR1,ZRED2TH3,ZRED2R3,ZRED2THR3,HTURBDIM,GUSERV,ZPHI3) IF(KRR/=0) & -ZPSI3 = PSI3(D,CSTURB,ZREDR1,ZREDTH1,ZRED2R3,ZRED2TH3,ZRED2THR3,HTURBDIM,GUSERV) +CALL PSI3(D,CSTURB,ZREDR1,ZREDTH1,ZRED2R3,ZRED2TH3,ZRED2THR3,HTURBDIM,GUSERV,ZPSI3) ! ! Prandtl numbers for scalars ! -ZPSI_SV = PSI_SV(D,CSTURB,KSV,ZREDTH1,ZREDR1,ZREDS1,ZRED2THS,ZRED2RS,ZPHI3,ZPSI3) +CALL PSI_SV(D,CSTURB,KSV,ZREDTH1,ZREDR1,ZREDS1,ZRED2THS,ZRED2RS,ZPHI3,ZPSI3,ZPSI_SV) ! ! LES diagnostics ! diff --git a/src/common/turb/mode_turb_ver_sv_corr.F90 b/src/common/turb/mode_turb_ver_sv_corr.F90 index 95a0a6568..7450b5137 100644 --- a/src/common/turb/mode_turb_ver_sv_corr.F90 +++ b/src/common/turb/mode_turb_ver_sv_corr.F90 @@ -168,7 +168,7 @@ DO JSV=1,KSV ! IF (OLES_CALL) THEN ! approximation: diagnosed explicitely (without implicit term) - ZA(:,:,:) = ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC) + CALL ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC,ZA) ! ZWORK1 = GZ_M_W(D%NKA, D%NKU, D%NKL,PTHLM,PDZZ) ZWORK2 = GZ_M_W(D%NKA, D%NKU, D%NKL,PSVM(:,:,:,JSV),PDZZ) @@ -187,7 +187,7 @@ DO JSV=1,KSV CALL LES_MEAN_SUBGRID( -CST%XG/PTHVREF/3.*ZA*ZFLXZ, X_LES_SUBGRID_SvPz(:,:,:,JSV), .TRUE.) ! IF (KRR>=1) THEN - ZA(:,:,:) = EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN) + CALL EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN,ZA) ! ZWORK1 = GZ_M_W(D%NKA, D%NKU, D%NKL,PRM(:,:,:,1),PDZZ) !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) diff --git a/src/common/turb/mode_turb_ver_thermo_corr.F90 b/src/common/turb/mode_turb_ver_thermo_corr.F90 index 2a34f1e14..24a2e2555 100644 --- a/src/common/turb/mode_turb_ver_thermo_corr.F90 +++ b/src/common/turb/mode_turb_ver_thermo_corr.F90 @@ -459,9 +459,9 @@ END IF ! ! d(w'th'2)/dz IF (GFTH2) THEN - ZWORK1 = M3_TH2_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE) - ZWORK2 = D_M3_TH2_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,& - & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA) + CALL M3_TH2_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,ZWORK1) + CALL D_M3_TH2_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,& + & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,ZWORK2) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * PFTH2(:,:,:) @@ -471,11 +471,11 @@ END IF ! ! d(w'2th')/dz IF (GFWTH) THEN - ZWORK1 = M3_TH2_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PDTH_DZ,& - & PLM,PLEPS,PTKEM) + CALL M3_TH2_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PDTH_DZ,& + & PLM,PLEPS,PTKEM,ZWORK1) ZWORK2 = MZF(PFWTH, D%NKA, D%NKU, D%NKL) - ZWORK3 = D_M3_TH2_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,& - & PLM,PLEPS,PTKEM,GUSERV) + CALL D_M3_TH2_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,& + & PLM,PLEPS,PTKEM,GUSERV,ZWORK3) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * ZWORK2(:,:,:) @@ -486,10 +486,10 @@ END IF IF (KRR/=0) THEN ! d(w'r'2)/dz IF (GFR2) THEN - ZWORK1 = M3_TH2_WR2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,& - & PEMOIST,PDTH_DZ) - ZWORK2 = D_M3_TH2_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,& - & PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTH_DZ) + CALL M3_TH2_WR2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,& + & PEMOIST,PDTH_DZ,ZWORK1) + CALL D_M3_TH2_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,& + & PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTH_DZ,ZWORK2) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * PFR2(:,:,:) @@ -499,11 +499,11 @@ END IF ! ! d(w'2r')/dz IF (GFWR) THEN - ZWORK1 = M3_TH2_W2R(D,CSTURB,PD,PLM,PLEPS,PTKEM,PBLL_O_E,& - & PEMOIST,PDTH_DZ) + CALL M3_TH2_W2R(D,CSTURB,PD,PLM,PLEPS,PTKEM,PBLL_O_E,& + & PEMOIST,PDTH_DZ,ZWORK1) ZWORK2 = MZF(PFWR, D%NKA, D%NKU, D%NKL) - ZWORK3 = D_M3_TH2_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,& - & PLM,PLEPS,PTKEM,PBLL_O_E,PEMOIST,PDTH_DZ) + CALL D_M3_TH2_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,& + & PLM,PLEPS,PTKEM,PBLL_O_E,PEMOIST,PDTH_DZ,ZWORK3) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * ZWORK2(:,:,:) @@ -513,10 +513,10 @@ END IF ! ! d(w'th'r')/dz IF (GFTHR) THEN - ZWORK1 = M3_TH2_WTHR(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,& - & PBLL_O_E,PEMOIST,PDTH_DZ) - ZWORK2 = D_M3_TH2_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,& - & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTH_DZ) + CALL M3_TH2_WTHR(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,& + & PBLL_O_E,PEMOIST,PDTH_DZ,ZWORK1) + CALL D_M3_TH2_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,& + & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTH_DZ,ZWORK2) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * PFTHR(:,:,:) @@ -646,12 +646,12 @@ END IF ! ! d(w'th'2)/dz IF (GFTH2) THEN - ZWORK1 = M3_THR_WTH2(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,& - & PBLL_O_E,PETHETA,PDR_DZ) - ZWORK2 = D_M3_THR_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,& - & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ) - ZWORK3 = D_M3_THR_WTH2_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,& - & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA) + CALL M3_THR_WTH2(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,& + & PBLL_O_E,PETHETA,PDR_DZ,ZWORK1) + CALL D_M3_THR_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,& + & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ,ZWORK2) + CALL D_M3_THR_WTH2_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,& + & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,ZWORK3) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * PFTH2(:,:,:) @@ -663,12 +663,12 @@ END IF ! d(w'2th')/dz IF (GFWTH) THEN ZWORK1 = MZF(PFWTH, D%NKA, D%NKU, D%NKL) - ZWORK2 = M3_THR_W2TH(D,CSTURB,PREDR1,PD,PLM,PLEPS,PTKEM,& - & PDR_DZ) - ZWORK3 = D_M3_THR_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,& - & PD,PLM,PLEPS,PTKEM,PBLL_O_E,PDR_DZ,PETHETA) - ZWORK4 = D_M3_THR_W2TH_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,& - & PD,PLM,PLEPS,PTKEM) + CALL M3_THR_W2TH(D,CSTURB,PREDR1,PD,PLM,PLEPS,PTKEM,& + & PDR_DZ,ZWORK2) + CALL D_M3_THR_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,& + & PD,PLM,PLEPS,PTKEM,PBLL_O_E,PDR_DZ,PETHETA,ZWORK3) + CALL D_M3_THR_W2TH_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,& + & PD,PLM,PLEPS,PTKEM,ZWORK4) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK2(:,:,:) * ZWORK1(:,:,:) @@ -679,12 +679,12 @@ END IF ! ! d(w'r'2)/dz IF (GFR2) THEN - ZWORK1 = M3_THR_WR2(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,& - & PBLL_O_E,PEMOIST,PDTH_DZ) - ZWORK2 = D_M3_THR_WR2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,& - & PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) - ZWORK3 = D_M3_THR_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,& - & PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTH_DZ) + CALL M3_THR_WR2(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,& + & PBLL_O_E,PEMOIST,PDTH_DZ,ZWORK1) + CALL D_M3_THR_WR2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,& + & PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,ZWORK2) + CALL D_M3_THR_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,& + & PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTH_DZ,ZWORK3) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * PFR2(:,:,:) @@ -696,12 +696,12 @@ END IF ! d(w'2r')/dz IF (GFWR) THEN ZWORK1 = MZF(PFWR, D%NKA, D%NKU, D%NKL) - ZWORK2 = M3_THR_W2R(D,CSTURB,PREDTH1,PD,PLM,PLEPS,PTKEM,& - & PDTH_DZ) - ZWORK3 = D_M3_THR_W2R_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,& - & PLM,PLEPS,PTKEM) - ZWORK4 = D_M3_THR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,& - & PLM,PLEPS,PTKEM,PBLL_O_E,PDTH_DZ,PEMOIST) + CALL M3_THR_W2R(D,CSTURB,PREDTH1,PD,PLM,PLEPS,PTKEM,& + & PDTH_DZ,ZWORK2) + CALL D_M3_THR_W2R_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,& + & PLM,PLEPS,PTKEM,ZWORK3) + CALL D_M3_THR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,& + & PLM,PLEPS,PTKEM,PBLL_O_E,PDTH_DZ,PEMOIST,ZWORK4) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK2(:,:,:) * ZWORK1(:,:,:) @@ -712,12 +712,12 @@ END IF ! ! d(w'th'r')/dz IF (GFTHR) THEN - ZWORK1 = M3_THR_WTHR(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,& - & PSQRT_TKE) - ZWORK2 = D_M3_THR_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,& - & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA) - ZWORK3 = D_M3_THR_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,& - & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) + CALL M3_THR_WTHR(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,& + & PSQRT_TKE,ZWORK1) + CALL D_M3_THR_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,& + & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,ZWORK2) + CALL D_M3_THR_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,& + & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,ZWORK3) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * PFTHR(:,:,:) @@ -752,13 +752,13 @@ END IF + PIMPL * ZDFDDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) * ZWORK8(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ELSE - ZWKPHIPSI1(:,:,:) = D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV) + CALL D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV,ZWKPHIPSI1) ! d(phi3*dthdz)/ddthdz term - ZWKPHIPSI2(:,:,:) = D_PSI3DTDZ_O_DDTDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV) + CALL D_PSI3DTDZ_O_DDTDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV,ZWKPHIPSI2) ! d(psi3*dthdz)/ddthdz term - ZWKPHIPSI3(:,:,:) = D_PHI3DRDZ_O_DDRDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV) + CALL D_PHI3DRDZ_O_DDRDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV,ZWKPHIPSI3) ! d(phi3*drdz )/ddrdz term - ZWKPHIPSI4(:,:,:) = D_PSI3DRDZ_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV) + CALL D_PSI3DRDZ_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV,ZWKPHIPSI4) ! d(psi3*drdz )/ddrdz term !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) @@ -893,10 +893,10 @@ ENDIF ! ! d(w'r'2)/dz IF (GFR2) THEN - ZWORK1 = M3_R2_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,& - & PSQRT_TKE) - ZWORK2 = D_M3_R2_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,& - & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) + CALL M3_R2_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,& + & PSQRT_TKE,ZWORK1) + CALL D_M3_R2_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,& + & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,ZWORK2) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * PFR2(:,:,:) @@ -907,10 +907,10 @@ ENDIF ! d(w'2r')/dz IF (GFWR) THEN ZWORK1 = MZF(PFWR, D%NKA, D%NKU, D%NKL) - ZWORK2 = M3_R2_W2R(D,CSTURB,PREDR1,PREDTH1,PD,PDR_DZ,& - & PLM,PLEPS,PTKEM) - ZWORK3 = D_M3_R2_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,& - & PD,PLM,PLEPS,PTKEM,GUSERV) + CALL M3_R2_W2R(D,CSTURB,PREDR1,PREDTH1,PD,PDR_DZ,& + & PLM,PLEPS,PTKEM,ZWORK2) + CALL D_M3_R2_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,& + & PD,PLM,PLEPS,PTKEM,GUSERV,ZWORK3) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK2(:,:,:) * ZWORK1(:,:,:) @@ -921,10 +921,10 @@ ENDIF IF (KRR/=0) THEN ! d(w'r'2)/dz IF (GFTH2) THEN - ZWORK1 = M3_R2_WTH2(D,CSTURB,PD,PLEPS,PSQRT_TKE,& - & PBLL_O_E,PETHETA,PDR_DZ) - ZWORK2 = D_M3_R2_WTH2_O_DDRDZ(D,CSTURB,PREDR1,& - & PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ) + CALL M3_R2_WTH2(D,CSTURB,PD,PLEPS,PSQRT_TKE,& + & PBLL_O_E,PETHETA,PDR_DZ,ZWORK1) + CALL D_M3_R2_WTH2_O_DDRDZ(D,CSTURB,PREDR1,& + & PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ,ZWORK2) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * PFTH2(:,:,:) @@ -935,10 +935,10 @@ ENDIF ! d(w'2r')/dz IF (GFWTH) THEN ZWORK1 = MZF(PFWTH, D%NKA, D%NKU, D%NKL) - ZWORK2 = M3_R2_W2TH(D,CSTURB,PD,PLM,PLEPS,PTKEM,& - & PBLL_O_E,PETHETA,PDR_DZ) - ZWORK3 = D_M3_R2_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,& - & PD,PLM,PLEPS,PTKEM,PBLL_O_E,PETHETA,PDR_DZ) + CALL M3_R2_W2TH(D,CSTURB,PD,PLM,PLEPS,PTKEM,& + & PBLL_O_E,PETHETA,PDR_DZ,ZWORK2) + CALL D_M3_R2_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,& + & PD,PLM,PLEPS,PTKEM,PBLL_O_E,PETHETA,PDR_DZ,ZWORK3) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK2(:,:,:) * ZWORK1(:,:,:) @@ -948,10 +948,10 @@ ENDIF ! ! d(w'th'r')/dz IF (GFTHR) THEN - ZWORK1 = M3_R2_WTHR(D,CSTURB,PREDTH1,PD,PLEPS,& - & PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ) - ZWORK2 = D_M3_R2_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,& - & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ) + CALL M3_R2_WTHR(D,CSTURB,PREDTH1,PD,PLEPS,& + & PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ,ZWORK1) + CALL D_M3_R2_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,& + & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ,ZWORK2) ! !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * PFTHR(:,:,:) @@ -980,7 +980,7 @@ ENDIF + PIMPL * ZDFDDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) * ZWORK6(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ELSE - ZWKPHIPSI1(:,:,:) = D_PSI3DRDZ2_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,PDR_DZ,HTURBDIM,GUSERV) + CALL D_PSI3DRDZ2_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,PDR_DZ,HTURBDIM,GUSERV,ZWKPHIPSI1) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZWKPHIPSI1(IIB:IIE,IJB:IJE,1:D%NKT)*ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) & / PDZZ(IIB:IIE,IJB:IJE,1:D%NKT) diff --git a/src/common/turb/mode_turb_ver_thermo_flux.F90 b/src/common/turb/mode_turb_ver_thermo_flux.F90 index e6cbcea89..4ee346eba 100644 --- a/src/common/turb/mode_turb_ver_thermo_flux.F90 +++ b/src/common/turb/mode_turb_ver_thermo_flux.F90 @@ -528,7 +528,7 @@ END IF ! Compute the turbulent flux F and F' at time t-dt. ! CALL DZM_PHY(D,PTHLM,ZWORK1) -ZWORK2 = D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV) +CALL D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV,ZWORK2) IF (OHARAT) THEN !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ZF(IIB:IIE,IJB:IJE,1:D%NKT) = -ZKEFF(IIB:IIE,IJB:IJE,1:D%NKT)*ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT)/PDZZ(IIB:IIE,IJB:IJE,1:D%NKT) @@ -556,9 +556,9 @@ END IF ! ! d(w'2th')/dz IF (GFWTH) THEN - Z3RDMOMENT= M3_WTH_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,ZKEFF,PTKEM) - ZWORK1 = D_M3_WTH_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,& - & PD,PBLL_O_E,PETHETA,ZKEFF,PTKEM) + CALL M3_WTH_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,ZKEFF,PTKEM,Z3RDMOMENT) + CALL D_M3_WTH_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,& + & PD,PBLL_O_E,PETHETA,ZKEFF,PTKEM,ZWORK1) ! !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ZF(:,:,:)= ZF(:,:,:) + Z3RDMOMENT(:,:,:) * PFWTH(:,:,:) @@ -568,9 +568,9 @@ END IF ! ! d(w'th'2)/dz IF (GFTH2) THEN - Z3RDMOMENT= M3_WTH_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA) - ZWORK1 = D_M3_WTH_WTH2_O_DDTDZ(D,CSTURB,Z3RDMOMENT,PREDTH1,PREDR1,& - & PD,PBLL_O_E,PETHETA) + CALL M3_WTH_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,Z3RDMOMENT) + CALL D_M3_WTH_WTH2_O_DDTDZ(D,CSTURB,Z3RDMOMENT,PREDTH1,PREDR1,& + & PD,PBLL_O_E,PETHETA,ZWORK1) ZWORK2 = MZM(PFTH2, D%NKA, D%NKU, D%NKL) ! !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) @@ -581,8 +581,8 @@ END IF ! ! d(w'2r')/dz IF (GFWR) THEN - ZWORK1 = M3_WTH_W2R(D,CSTURB,PD,ZKEFF,PTKEM,PBLL_O_E,PEMOIST,PDTH_DZ) - ZWORK2 = D_M3_WTH_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,ZKEFF,PTKEM,PBLL_O_E,PEMOIST) + CALL M3_WTH_W2R(D,CSTURB,PD,ZKEFF,PTKEM,PBLL_O_E,PEMOIST,PDTH_DZ,ZWORK1) + CALL D_M3_WTH_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,ZKEFF,PTKEM,PBLL_O_E,PEMOIST,ZWORK2) ! !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * PFWR(:,:,:) @@ -592,10 +592,10 @@ END IF ! ! d(w'r'2)/dz IF (GFR2) THEN - ZWORK1 = M3_WTH_WR2(D,CSTURB,PD,ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTH_DZ) + CALL M3_WTH_WR2(D,CSTURB,PD,ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTH_DZ,ZWORK1) ZWORK2 = MZM(PFR2, D%NKA, D%NKU, D%NKL) - ZWORK3 = D_M3_WTH_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,& - & ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST) + CALL D_M3_WTH_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,& + & ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,ZWORK3) ! !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * ZWORK2(:,:,:) @@ -605,9 +605,9 @@ END IF ! ! d(w'th'r')/dz IF (GFTHR) THEN - Z3RDMOMENT= M3_WTH_WTHR(D,CSTURB,PREDR1,PD,ZKEFF,PTKEM,PSQRT_TKE,PBETA,& - & PLEPS,PEMOIST) - ZWORK1 = D_M3_WTH_WTHR_O_DDTDZ(D,CSTURB,Z3RDMOMENT,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA) + CALL M3_WTH_WTHR(D,CSTURB,PREDR1,PD,ZKEFF,PTKEM,PSQRT_TKE,PBETA,& + & PLEPS,PEMOIST,Z3RDMOMENT) + CALL D_M3_WTH_WTHR_O_DDTDZ(D,CSTURB,Z3RDMOMENT,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,ZWORK1) ZWORK2 = MZM(PFTHR, D%NKA, D%NKU, D%NKL) ! !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) @@ -891,7 +891,7 @@ IF (KRR /= 0) THEN ZDFDDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = -ZKEFF(IIB:IIE,IJB:IJE,1:D%NKT) !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ELSE - ZWORK2 = D_PSI3DRDZ_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV) + CALL D_PSI3DRDZ_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV,ZWORK2) !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ZF(IIB:IIE,IJB:IJE,1:D%NKT) = -CSTURB%XCSHF*PPSI3(IIB:IIE,IJB:IJE,1:D%NKT)*ZKEFF(IIB:IIE,IJB:IJE,1:D%NKT)& *ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT)/PDZZ(IIB:IIE,IJB:IJE,1:D%NKT) @@ -913,9 +913,9 @@ IF (KRR /= 0) THEN ! ! d(w'2r')/dz IF (GFWR) THEN - Z3RDMOMENT= M3_WR_W2R(D,CSTURB,PREDR1,PREDTH1,PD,ZKEFF,PTKEM) - ZWORK1 = D_M3_WR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,& - & PBLL_O_E,PEMOIST,ZKEFF,PTKEM) + CALL M3_WR_W2R(D,CSTURB,PREDR1,PREDTH1,PD,ZKEFF,PTKEM,Z3RDMOMENT) + CALL D_M3_WR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,& + & PBLL_O_E,PEMOIST,ZKEFF,PTKEM,ZWORK1) ! !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + Z3RDMOMENT(:,:,:) * PFWR(:,:,:) @@ -925,10 +925,10 @@ IF (KRR /= 0) THEN ! ! d(w'r'2)/dz IF (GFR2) THEN - Z3RDMOMENT= M3_WR_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST) + CALL M3_WR_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,Z3RDMOMENT) ZWORK1 = MZM(PFR2, D%NKA, D%NKU, D%NKL) - ZWORK2 = D_M3_WR_WR2_O_DDRDZ(D,CSTURB,Z3RDMOMENT,PREDR1,& - & PREDTH1,PD,PBLL_O_E,PEMOIST) + CALL D_M3_WR_WR2_O_DDRDZ(D,CSTURB,Z3RDMOMENT,PREDR1,& + & PREDTH1,PD,PBLL_O_E,PEMOIST,ZWORK2) ! !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + Z3RDMOMENT(:,:,:) * ZWORK1(:,:,:) @@ -938,10 +938,10 @@ IF (KRR /= 0) THEN ! ! d(w'2th')/dz IF (GFWTH) THEN - ZWORK1 = M3_WR_W2TH(D,CSTURB,PD,ZKEFF,& - & PTKEM,PBLL_O_E,PETHETA,PDR_DZ) - ZWORK2 = D_M3_WR_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,& - & PD,ZKEFF,PTKEM,PBLL_O_E,PETHETA) + CALL M3_WR_W2TH(D,CSTURB,PD,ZKEFF,& + & PTKEM,PBLL_O_E,PETHETA,PDR_DZ,ZWORK1) + CALL D_M3_WR_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,& + & PD,ZKEFF,PTKEM,PBLL_O_E,PETHETA,ZWORK2) ! !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK1(:,:,:) * PFWTH(:,:,:) @@ -952,10 +952,10 @@ IF (KRR /= 0) THEN ! d(w'th'2)/dz IF (GFTH2) THEN ZWORK1 = MZM(PFTH2, D%NKA, D%NKU, D%NKL) - ZWORK2 = M3_WR_WTH2(D,CSTURB,PD,ZKEFF,PTKEM,& - & PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDR_DZ) - ZWORK3 = D_M3_WR_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,& - &ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA) + CALL M3_WR_WTH2(D,CSTURB,PD,ZKEFF,PTKEM,& + & PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDR_DZ,ZWORK2) + CALL D_M3_WR_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,& + &ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,ZWORK3) ! !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + ZWORK2(:,:,:) * ZWORK1(:,:,:) @@ -965,11 +965,11 @@ IF (KRR /= 0) THEN ! ! d(w'th'r')/dz IF (GFTHR) THEN - Z3RDMOMENT= M3_WR_WTHR(D,CSTURB,PREDTH1,PD,ZKEFF,PTKEM,PSQRT_TKE,PBETA,& - & PLEPS,PETHETA) + CALL M3_WR_WTHR(D,CSTURB,PREDTH1,PD,ZKEFF,PTKEM,PSQRT_TKE,PBETA,& + & PLEPS,PETHETA,Z3RDMOMENT) ZWORK1 = MZM(PFTHR, D%NKA, D%NKU, D%NKL) - ZWORK2 = D_M3_WR_WTHR_O_DDRDZ(D,CSTURB,Z3RDMOMENT,PREDR1, & - & PREDTH1,PD,PBLL_O_E,PEMOIST) + CALL D_M3_WR_WTHR_O_DDRDZ(D,CSTURB,Z3RDMOMENT,PREDR1, & + & PREDTH1,PD,PBLL_O_E,PEMOIST,ZWORK2) ! !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ZF(:,:,:) = ZF(:,:,:) + Z3RDMOMENT(:,:,:) * ZWORK1(:,:,:) diff --git a/src/common/turb/turb.F90 b/src/common/turb/turb.F90 index 51cb03b5a..a6cc80b51 100644 --- a/src/common/turb/turb.F90 +++ b/src/common/turb/turb.F90 @@ -264,7 +264,7 @@ USE MODE_BUDGET, ONLY: BUDGET_STORE_INIT, BUDGET_STORE_END USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE USE MODE_ll, ONLY: ADD2DFIELD_ll, UPDATE_HALO_ll, CLEANLIST_ll, & LWEST_ll, LEAST_ll, LSOUTH_ll, LNORTH_ll -USE MODE_SBL +USE MODE_SBL, ONLY: LMO USE MODE_SOURCES_NEG_CORRECT, ONLY: SOURCES_NEG_CORRECT USE MODE_EMOIST, ONLY: EMOIST USE MODE_ETHETA, ONLY: ETHETA @@ -800,11 +800,11 @@ IF (ORMC01) THEN ZUSTAR(:,:)=(PSFU(:,:)**2+PSFV(:,:)**2)**(0.25) !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT) IF (KRR>0) THEN - ZLMO=LMO(ZUSTAR,ZTHLM(:,:,IKB),ZRM(:,:,IKB,1),PSFTH,PSFRV) + CALL LMO(ZUSTAR,ZTHLM(:,:,IKB),ZRM(:,:,IKB,1),PSFTH,PSFRV,ZLMO) ELSE ZRVM(:,:)=0. ZSFRV(:,:)=0. - ZLMO=LMO(ZUSTAR,ZTHLM(:,:,IKB),ZRVM,PSFTH,ZSFRV) + CALL LMO(ZUSTAR,ZTHLM(:,:,IKB),ZRVM,PSFTH,ZSFRV,ZLMO) END IF CALL RMC01(D,CST,CSTURB,HTURBLEN,PZZ,PDXX,PDYY,PDZZ,PDIRCOSZW,PSBL_DEPTH,ZLMO,ZLM,ZLEPS) END IF @@ -1618,8 +1618,8 @@ IF ( HTURBDIM /= '1DIM' ) THEN ! 3D turbulence scheme END IF ! compute a mixing length limited by the stability ! -ZETHETA(:,:,:) = ETHETA(D,CST,KRR,KRRI,PTHLT,PRT,ZLOCPEXNM,ZATHETA,PSRCT,OOCEAN,OCOMPUTE_SRC) -ZEMOIST(:,:,:) = EMOIST(D,CST,KRR,KRRI,PTHLT,PRT,ZLOCPEXNM,ZAMOIST,PSRCT,OOCEAN) +CALL ETHETA(D,CST,KRR,KRRI,PTHLT,PRT,ZLOCPEXNM,ZATHETA,PSRCT,OOCEAN,OCOMPUTE_SRC,ZETHETA) +CALL EMOIST(D,CST,KRR,KRRI,PTHLT,PRT,ZLOCPEXNM,ZAMOIST,PSRCT,OOCEAN,ZEMOIST) ! IF (KRR>0) THEN DO JK = IKTB+1,IKTE-1 diff --git a/src/mesonh/ext/lesn.f90 b/src/mesonh/ext/lesn.f90 index acd15c8ed..7e73c302f 100644 --- a/src/mesonh/ext/lesn.f90 +++ b/src/mesonh/ext/lesn.f90 @@ -3264,9 +3264,9 @@ ELSE IF (CBL_HEIGHT_DEF=='FRI') THEN +( XLES_SUBGRID_WV (:,NLES_CURRENT_TCOUNT,1) & +XLES_RESOLVED_WV(:,NLES_CURRENT_TCOUNT,1))**2 ) ZFRIC_SURF = XLES_USTAR(NLES_CURRENT_TCOUNT)**2 - XLES_BL_HEIGHT(NLES_CURRENT_TCOUNT) = BL_DEPTH_DIAG(IKB,IKE,ZFRIC_SURF, XLES_ZS, & - ZFRIC_LES, XLES_Z, & - XFTOP_O_FSURF ) + CALL BL_DEPTH_DIAG(IKB,IKE,ZFRIC_SURF, XLES_ZS, & + ZFRIC_LES, XLES_Z, & + XFTOP_O_FSURF,XLES_BL_HEIGHT(NLES_CURRENT_TCOUNT)) END IF ! ! -- GitLab