From e89f780892ee15ee3004ce826588428b271236d0 Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Tue, 5 Apr 2022 16:22:04 +0200 Subject: [PATCH] Quentin 05/04/2022: Expand Array mode_prandtl.F90 --- src/common/turb/mode_prandtl.F90 | 889 +++++++++++++++++++------------ 1 file changed, 549 insertions(+), 340 deletions(-) diff --git a/src/common/turb/mode_prandtl.F90 b/src/common/turb/mode_prandtl.F90 index e931f4b28..9d27bd513 100644 --- a/src/common/turb/mode_prandtl.F90 +++ b/src/common/turb/mode_prandtl.F90 @@ -215,13 +215,15 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PEMOIST ! coefficient E_moi ! ! 0.2 declaration of local variables ! -REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)) :: & - ZW1, ZW2, ZW3 +REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: & + ZW1, ZW2, ZW3, & ! working variables + ZWORK1,ZWORK2,ZWORK3 +! working variables for explicit array ! INTEGER :: IKB ! vertical index value for the first inner mass point INTEGER :: IKE ! vertical index value for the last inner mass point -INTEGER:: JSV ! loop index for the scalar variables +INTEGER:: JSV,JI,JJ,JK ! loop index INTEGER :: JLOOP REAL :: ZMINVAL @@ -251,8 +253,10 @@ IKE = D%NKE ! PETHETA(:,:,:) = MZM(ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC), D%NKA, D%NKU, D%NKL) PEMOIST(:,:,:) = MZM(EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN), D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT) PETHETA(:,:,D%NKA) = 2.*PETHETA(:,:,IKB) - PETHETA(:,:,IKB+D%NKL) PEMOIST(:,:,D%NKA) = 2.*PEMOIST(:,:,IKB) - PEMOIST(:,:,IKB+D%NKL) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT) ! !--------------------------------------------------------------------------- IF (.NOT. OHARAT) THEN @@ -260,14 +264,18 @@ IF (.NOT. OHARAT) THEN ! 1.3 1D Redelsperger numbers ! PBLL_O_E(:,:,:) = MZM(CST%XG / PTHVREF(:,:,:) * PLM(:,:,:) * PLEPS(:,:,:) / PTKEM(:,:,:), D%NKA, D%NKU, D%NKL) +ZWORK1 = GZ_M_W(D%NKA, D%NKU, D%NKL,PTHLM,PDZZ) IF (KRR /= 0) THEN ! moist case - PREDTH1(:,:,:)= CSTURB%XCTV*PBLL_O_E(:,:,:) * PETHETA(:,:,:) * & - & GZ_M_W(D%NKA, D%NKU, D%NKL,PTHLM,PDZZ) - PREDR1(:,:,:) = CSTURB%XCTV*PBLL_O_E(:,:,:) * PEMOIST(:,:,:) * & - & GZ_M_W(D%NKA, D%NKU, D%NKL,PRM(:,:,:,1),PDZZ) + ZWORK2 = 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) + PREDTH1(:,:,:)= CSTURB%XCTV*PBLL_O_E(:,:,:) * PETHETA(:,:,:) * ZWORK1(:,:,:) + PREDR1(:,:,:) = CSTURB%XCTV*PBLL_O_E(:,:,:) * PEMOIST(:,:,:) * ZWORK2(:,:,:) + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ELSE ! dry case - PREDTH1(:,:,:)= CSTURB%XCTV*PBLL_O_E(:,:,:) * GZ_M_W(D%NKA, D%NKU, D%NKL,PTHLM,PDZZ) + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) + PREDTH1(:,:,:)= CSTURB%XCTV*PBLL_O_E(:,:,:) * ZWORK1(:,:,:) PREDR1(:,:,:) = 0. + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) END IF ! ! 3. Limits on 1D Redelperger numbers @@ -275,55 +283,82 @@ END IF ! ZMINVAL = (1.-1./CSTURB%XPHI_LIM) ! -ZW1 = 1. -ZW2 = 1. -! -WHERE (PREDTH1+PREDR1<-ZMINVAL) - ZW1 = (-ZMINVAL) / (PREDTH1+PREDR1) -END WHERE -! -WHERE (PREDTH1<-ZMINVAL) - ZW2 = (-ZMINVAL) / (PREDTH1) -END WHERE -ZW2 = MIN(ZW1,ZW2) -! -ZW1 = 1. -WHERE (PREDR1<-ZMINVAL) - ZW1 = (-ZMINVAL) / (PREDR1) -END WHERE -ZW1 = MIN(ZW2,ZW1) -! -! -! 3. Modification of Mixing length and dissipative length -! ---------------------------------------------------- -! -PBLL_O_E(:,:,:) = PBLL_O_E(:,:,:) * ZW1(:,:,:) -PREDTH1 (:,:,:) = PREDTH1 (:,:,:) * ZW1(:,:,:) -PREDR1 (:,:,:) = PREDR1 (:,:,:) * ZW1(:,:,:) -! -! 4. Threshold for very small (in absolute value) Redelperger numbers -! ---------------------------------------------------------------- -! -ZW2=SIGN(1.,PREDTH1(:,:,:)) -PREDTH1(:,:,:)= ZW2(:,:,:) * MAX(1.E-30, ZW2(:,:,:)*PREDTH1(:,:,:)) -! -IF (KRR /= 0) THEN ! dry case - ZW2=SIGN(1.,PREDR1(:,:,:)) - PREDR1(:,:,:)= ZW2(:,:,:) * MAX(1.E-30, ZW2(:,:,:)*PREDR1(:,:,:)) -END IF +DO JK=1,D%NKT + DO JJ=1,D%NJT + DO JI=1,D%NIT + ZW1(JI,JJ,JK) = 1. + ZW2(JI,JJ,JK) = 1. + ! + IF (PREDTH1(JI,JJ,JK)+PREDR1(JI,JJ,JK)<-ZMINVAL)THEN + ZW1(JI,JJ,JK) = (-ZMINVAL) / (PREDTH1(JI,JJ,JK)+PREDR1(JI,JJ,JK)) + ENDIF + ! + IF (PREDTH1(JI,JJ,JK)<-ZMINVAL)THEN + ZW2(JI,JJ,JK) = (-ZMINVAL) / (PREDTH1(JI,JJ,JK)) + ENDIF + ZW2(JI,JJ,JK) = MIN(ZW1(JI,JJ,JK),ZW2(JI,JJ,JK)) + ! + ZW1(JI,JJ,JK) = 1. + IF (PREDR1(JI,JJ,JK)<-ZMINVAL)THEN + ZW1(JI,JJ,JK) = (-ZMINVAL) / (PREDR1(JI,JJ,JK)) + ENDIF + ZW1(JI,JJ,JK) = MIN(ZW2(JI,JJ,JK),ZW1(JI,JJ,JK)) + ! + ! + ! 3. Modification of Mixing length and dissipative length + ! ---------------------------------------------------- + ! + PBLL_O_E(JI,JJ,JK) = PBLL_O_E(JI,JJ,JK) * ZW1(JI,JJ,JK) + PREDTH1(JI,JJ,JK) = PREDTH1(JI,JJ,JK) * ZW1(JI,JJ,JK) + PREDR1(JI,JJ,JK) = PREDR1(JI,JJ,JK) * ZW1(JI,JJ,JK) + ! + ! 4. Threshold for very small (in absolute value) Redelperger numbers + ! ---------------------------------------------------------------- + ! + IF(PREDTH1(JI,JJ,JK) < 0.) THEN + ZW2(JI,JJ,JK)=-1. + ELSE + ZW2(JI,JJ,JK)=1. + END IF + PREDTH1(JI,JJ,JK)= ZW2(JI,JJ,JK) * MAX(1.E-30, ZW2(JI,JJ,JK)*PREDTH1(JI,JJ,JK)) + ! + IF (KRR /= 0) THEN ! moist case + IF(PREDR1(JI,JJ,JK) < 0.) THEN + ZW2(JI,JJ,JK)=-1. + ELSE + ZW2(JI,JJ,JK)=1. + END IF + PREDR1(JI,JJ,JK)= ZW2(JI,JJ,JK) * MAX(1.E-30, ZW2(JI,JJ,JK)*PREDR1(JI,JJ,JK)) + END IF + ENDDO + ENDDO +ENDDO ! ! !--------------------------------------------------------------------------- ! ! For the scalar variables DO JSV=1,KSV - PREDS1(:,:,:,JSV)=CSTURB%XCTV*PBLL_O_E(:,:,:)*GZ_M_W(D%NKA, D%NKU, D%NKL,PSVM(:,:,:,JSV),PDZZ) + ZWORK1 = GZ_M_W(D%NKA, D%NKU, D%NKL,PSVM(:,:,:,JSV),PDZZ) + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) + PREDS1(:,:,:,JSV)=CSTURB%XCTV*PBLL_O_E(:,:,:)*ZWORK1(:,:,:) + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) END DO ! DO JSV=1,KSV - ZW2=SIGN(1.,PREDS1(:,:,:,JSV)) - PREDS1(:,:,:,JSV)= ZW2(:,:,:) * MAX(1.E-30, ZW2(:,:,:)*PREDS1(:,:,:,JSV)) -END DO + DO JK=1,D%NKT + DO JJ=1,D%NJT + DO JI=1,D%NIT + IF(PREDS1(JI,JJ,JK,JSV) < 0.) THEN + ZW2(JI,JJ,JK)=-1. + ELSE + ZW2(JI,JJ,JK)=1. + END IF + PREDS1(JI,JJ,JK,JSV)= ZW2(JI,JJ,JK) * MAX(1.E-30, ZW2(JI,JJ,JK)*PREDS1(JI,JJ,JK,JSV)) + ENDDO + ENDDO + ENDDO +ENDDO ! !--------------------------------------------------------------------------- ! @@ -333,32 +368,43 @@ END DO IF(HTURBDIM=='1DIM') THEN ! 1D case ! ! + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) PRED2TH3(:,:,:) = PREDTH1(:,:,:)**2 ! PRED2R3(:,:,:) = PREDR1(:,:,:) **2 ! PRED2THR3(:,:,:) = PREDTH1(:,:,:) * PREDR1(:,:,:) + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! ELSE IF (O2D) THEN ! 3D case in a 2D model ! + ZWORK1 = MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)**2, D%NKA, D%NKU, D%NKL) IF (KRR /= 0) THEN ! moist 3D case + ZWORK2 = MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)**2, D%NKA, D%NKU, D%NKL) + ZWORK3 = MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)* & + GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL), D%NKA, D%NKU, D%NKL) +! + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) PRED2TH3(:,:,:)= PREDTH1(:,:,:)**2+(CSTURB%XCTV*PBLL_O_E(:,:,:)*PETHETA(:,:,:) )**2 * & - MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)**2, D%NKA, D%NKU, D%NKL) - PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+D%NKL) + ZWORK1(:,:,:) ! PRED2R3(:,:,:)= PREDR1(:,:,:)**2 + (CSTURB%XCTV*PBLL_O_E(:,:,:)*PEMOIST(:,:,:))**2 * & - MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)**2, D%NKA, D%NKU, D%NKL) - PRED2R3(:,:,IKB)=PRED2R3(:,:,IKB+D%NKL) + ZWORK2(:,:,:) ! PRED2THR3(:,:,:)= PREDR1(:,:,:) * PREDTH1(:,:,:) + CSTURB%XCTV**2*PBLL_O_E(:,:,:)**2 * & - PEMOIST(:,:,:) * PETHETA(:,:,:) * & - MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)* & - GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL), D%NKA, D%NKU, D%NKL) + PEMOIST(:,:,:) * PETHETA(:,:,:) * & + ZWORK3(:,:,:) + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +! + PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+D%NKL) + PRED2R3(:,:,IKB)=PRED2R3(:,:,IKB+D%NKL) PRED2THR3(:,:,IKB)=PRED2THR3(:,:,IKB+D%NKL) ! ELSE ! dry 3D case in a 2D model + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) PRED2TH3(:,:,:) = PREDTH1(:,:,:)**2 + CSTURB%XCTV**2*PBLL_O_E(:,:,:)**2 * & - MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)**2, D%NKA, D%NKU, D%NKL) + ZWORK1(:,:,:) + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+D%NKL) ! PRED2R3(:,:,:) = 0. @@ -369,29 +415,39 @@ ELSE IF (O2D) THEN ! 3D case in a 2D model ! ELSE ! 3D case in a 3D model ! + ZWORK1 = MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)**2 & + + GY_M_M(PTHLM,PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL)**2, D%NKA, D%NKU, D%NKL) + IF (KRR /= 0) THEN ! moist 3D case + ZWORK2 = MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)**2 + & + GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL)**2, D%NKA, D%NKU, D%NKL) + ZWORK3 = MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)* & + GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)+ & + GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL)* & + GY_M_M(PTHLM,PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL), D%NKA, D%NKU, D%NKL) + + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) PRED2TH3(:,:,:)= PREDTH1(:,:,:)**2 + ( CSTURB%XCTV*PBLL_O_E(:,:,:)*PETHETA(:,:,:) )**2 * & - MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)**2 & - + GY_M_M(PTHLM,PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL)**2, D%NKA, D%NKU, D%NKL) - PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+D%NKL) + ZWORK1(:,:,:) ! PRED2R3(:,:,:)= PREDR1(:,:,:)**2 + (CSTURB%XCTV*PBLL_O_E(:,:,:)*PEMOIST(:,:,:))**2 * & - MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)**2 + & - GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL)**2, D%NKA, D%NKU, D%NKL) - PRED2R3(:,:,IKB)=PRED2R3(:,:,IKB+D%NKL) + ZWORK2(:,:,:) ! PRED2THR3(:,:,:)= PREDR1(:,:,:) * PREDTH1(:,:,:) + CSTURB%XCTV**2*PBLL_O_E(:,:,:)**2 * & - PEMOIST(:,:,:) * PETHETA(:,:,:) * & - MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)* & - GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)+ & - GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL)* & - GY_M_M(PTHLM,PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL), D%NKA, D%NKU, D%NKL) + PEMOIST(:,:,:) * PETHETA(:,:,:) * ZWORK3(:,:,:) + + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +! + PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+D%NKL) + PRED2R3(:,:,IKB)=PRED2R3(:,:,IKB+D%NKL) PRED2THR3(:,:,IKB)=PRED2THR3(:,:,IKB+D%NKL) ! ELSE ! dry 3D case in a 3D model + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) PRED2TH3(:,:,:) = PREDTH1(:,:,:)**2 + CSTURB%XCTV**2*PBLL_O_E(:,:,:)**2 * & - MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)**2 & - + GY_M_M(PTHLM,PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL)**2, D%NKA, D%NKU, D%NKL) + ZWORK1(:,:,:) + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +! PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+D%NKL) ! PRED2R3(:,:,:) = 0. @@ -411,62 +467,72 @@ DO JSV=1,KSV ! IF(HTURBDIM=='1DIM') THEN ! 1D case + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) PRED2THS3(:,:,:,JSV) = PREDS1(:,:,:,JSV) * PREDTH1(:,:,:) IF (KRR /= 0) THEN PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) *PREDS1(:,:,:,JSV) ELSE PRED2RS3(:,:,:,JSV) = 0. END IF + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! ELSE IF (O2D) THEN ! 3D case in a 2D model ! + ZW1 = MZM((CST%XG / PTHVREF * PLM * PLEPS / PTKEM)**2, D%NKA, D%NKU, D%NKL) + ZWORK2 = MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)* & + GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL), & + D%NKA, D%NKU, D%NKL) + ZWORK3 = MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)* & + GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL), & + D%NKA, D%NKU, D%NKL) +! + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) IF (KRR /= 0) THEN - ZW1 = MZM((CST%XG / PTHVREF * PLM * PLEPS / PTKEM)**2, D%NKA, D%NKU, D%NKL) *PETHETA + ZWORK1 = ZW1(:,:,:)*PETHETA(:,:,:) ELSE - ZW1 = MZM((CST%XG / PTHVREF * PLM * PLEPS / PTKEM)**2, D%NKA, D%NKU, D%NKL) + ZWORK1 = ZW1(:,:,:) END IF PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV) + & - ZW1* & - MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)* & - GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL), & - D%NKA, D%NKU, D%NKL) -! + ZWORK1(:,:,:) * ZWORK2(:,:,:) + ! IF (KRR /= 0) THEN PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV) + & - ZW1 * PEMOIST * & - MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)* & - GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL), & - D%NKA, D%NKU, D%NKL) + ZW1(:,:,:) * PEMOIST(:,:,:) * ZWORK3(:,:,:) ELSE PRED2RS3(:,:,:,JSV) = 0. END IF + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! ELSE ! 3D case in a 3D model ! - IF (KRR /= 0) THEN - ZW1 = MZM((CST%XG / PTHVREF * PLM * PLEPS / PTKEM)**2, D%NKA, D%NKU, D%NKL) *PETHETA - ELSE - ZW1 = MZM((CST%XG / PTHVREF * PLM * PLEPS / PTKEM)**2, D%NKA, D%NKU, D%NKL) - END IF - PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV) + & - ZW1* & - MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)* & + ZW1 = MZM((CST%XG / PTHVREF * PLM * PLEPS / PTKEM)**2, D%NKA, D%NKU, D%NKL) + ZWORK2 = MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)* & GX_M_M(PTHLM,PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL) & +GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL)* & GY_M_M(PTHLM,PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL), & D%NKA, D%NKU, D%NKL) -! - IF (KRR /= 0) THEN - PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV) + & - ZW1 * PEMOIST * & - MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)* & + ZWORK3 = MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL)* & GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, D%NKA, D%NKU, D%NKL) & +GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL)* & GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, D%NKA, D%NKU, D%NKL), & D%NKA, D%NKU, D%NKL) + + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) + IF (KRR /= 0) THEN + ZWORK1 = ZW1(:,:,:)*PETHETA(:,:,:) + ELSE + ZWORK1 = ZW1(:,:,:) + END IF + PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV) + & + ZWORK1(:,:,:)*ZWORK2(:,:,:) + ! + IF (KRR /= 0) THEN + PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV) + & + ZW1(:,:,:) * PEMOIST(:,:,:) * ZWORK3(:,:,:) ELSE PRED2RS3(:,:,:,JSV) = 0. END IF + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! END IF ! end of HTURBDIM if-block ! @@ -562,6 +628,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PF_LIM ! Value of F when P REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(INOUT) :: PF ! function F to smooth ! REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZCOEF +INTEGER :: JI,JJ,JK ! !* adds a artificial correction to smooth the function near the discontinuity ! point at Phi3 = Phi_lim @@ -569,10 +636,12 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZCOEF ! Note that in the Boundary layer, phi is usually between 0.8 and 1 ! ! -ZCOEF = MAX(MIN(( 10.*(1.-PPHI3/CSTURB%XPHI_LIM)) ,1.), 0.) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +ZCOEF(:,:,:) = MAX(MIN(( 10.*(1.-PPHI3(:,:,:)/CSTURB%XPHI_LIM)) ,1.), 0.) ! -PF(:,:,:) = ZCOEF(:,:,:) * PF & - + (1.-ZCOEF(:,:,:)) * PF_LIM +PF(:,:,:) = ZCOEF(:,:,:) * PF(:,:,:) & + + (1.-ZCOEF(:,:,:)) * PF_LIM(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! END SUBROUTINE SMOOTH_TURB_FUNCT !---------------------------------------------------------------------------- @@ -589,7 +658,7 @@ FUNCTION PHI3(D,CSTURB,PREDTH1,PREDR1,PRED2TH3,PRED2R3,PRED2THR3,HTURBDIM,OUSERV REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: PHI3 ! REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZW1, ZW2 - INTEGER :: IKB, IKE + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PHI3',0,ZHOOK_HANDLE) @@ -598,6 +667,7 @@ IKE = SIZE(PREDTH1,3)-JPVEXT_TURB ! IF (HTURBDIM=='3DIM') THEN !* 3DIM case + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) IF (OUSERV) THEN ZW1(:,:,:) = 1. + 1.5* (PREDTH1(:,:,:)+PREDR1(:,:,:)) + & ( 0.5 * (PREDTH1(:,:,:)**2+PREDR1(:,:,:)**2) & @@ -620,17 +690,22 @@ IF (HTURBDIM=='3DIM') THEN PHI3(:,:,:)= 1. - & (PRED2TH3(:,:,:) / PREDTH1(:,:,:) + ZW2(:,:,:)) / ZW1(:,:,:) END IF - WHERE( PHI3 <= 0. .OR. PHI3 > CSTURB%XPHI_LIM ) - PHI3 = CSTURB%XPHI_LIM - END WHERE + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) + !$mnh_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) + WHERE( PHI3(:,:,:) <= 0. .OR. PHI3(:,:,:) > CSTURB%XPHI_LIM ) + PHI3(:,:,:) = CSTURB%XPHI_LIM + END WHERE + !$mnh_end_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ELSE !* 1DIM case + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) IF (OUSERV) THEN PHI3(:,:,:)= 1./(1.+PREDTH1(:,:,:)+PREDR1(:,:,:)) ELSE PHI3(:,:,:)= 1./(1.+PREDTH1(:,:,:)) END IF + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) END IF ! PHI3(:,:,IKB-1)=PHI3(:,:,IKB) @@ -653,7 +728,7 @@ FUNCTION PSI_SV(D,CSTURB,KSV,PREDTH1,PREDR1,PREDS1,PRED2THS,PRED2RS,PPHI3,PPSI3) REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV) :: PSI_SV ! INTEGER :: IKB, IKE - INTEGER :: JSV + INTEGER :: JSV,JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PSI_SV',0,ZHOOK_HANDLE) @@ -661,17 +736,24 @@ IKB = 1+JPVEXT_TURB IKE = SIZE(PREDTH1,3)-JPVEXT_TURB ! DO JSV=1,SIZE(PSI_SV,4) + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) PSI_SV(:,:,:,JSV) = ( 1. & - - (CSTURB%XCPR3+CSTURB%XCPR5) * (PRED2THS(:,:,:,JSV)/PREDS1(:,:,:,JSV)-PREDTH1) & - - (CSTURB%XCPR4+CSTURB%XCPR5) * (PRED2RS (:,:,:,JSV)/PREDS1(:,:,:,JSV)-PREDR1 ) & - - CSTURB%XCPR3 * PREDTH1 * PPHI3 - CSTURB%XCPR4 * PREDR1 * PPSI3 & - ) / ( 1. + CSTURB%XCPR5 * ( PREDTH1 + PREDR1 ) ) + - (CSTURB%XCPR3+CSTURB%XCPR5) * (PRED2THS(:,:,:,JSV)/PREDS1(:,:,:,JSV)-PREDTH1(:,:,:)) & + - (CSTURB%XCPR4+CSTURB%XCPR5) * (PRED2RS(:,:,:,JSV)/PREDS1(:,:,:,JSV)-PREDR1(:,:,:)) & + - CSTURB%XCPR3 * PREDTH1(:,:,:) * PPHI3(:,:,:) - CSTURB%XCPR4 * PREDR1(:,:,:) * PPSI3(:,:,:) & + ) / ( 1. + CSTURB%XCPR5 * ( PREDTH1(:,:,:) + PREDR1(:,:,:) ) ) + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! control of the PSI_SV positivity - WHERE ( (PSI_SV(:,:,:,JSV) <=0.).AND. (PREDTH1+PREDR1) <= 0. ) + !$mnh_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) + WHERE ( (PSI_SV(:,:,:,JSV) <=0.).AND. (PREDTH1(:,:,:)+PREDR1(:,:,:)) <= 0. ) PSI_SV(:,:,:,JSV)=CSTURB%XPHI_LIM END WHERE + !$mnh_end_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) + + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) PSI_SV(:,:,:,JSV) = MAX( 1.E-4, MIN(CSTURB%XPHI_LIM,PSI_SV(:,:,:,JSV)) ) + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! PSI_SV(:,:,IKB-1,JSV)=PSI_SV(:,:,IKB,JSV) PSI_SV(:,:,IKE+1,JSV)=PSI_SV(:,:,IKE,JSV) @@ -691,7 +773,7 @@ FUNCTION D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTU 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 - INTEGER :: IKB, IKE,JL,JK,JJ + INTEGER :: IKB, IKE,JL,JK,JJ,JI ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ_O_DDTDZ',0,ZHOOK_HANDLE) @@ -701,37 +783,42 @@ IKE = SIZE(PREDTH1,3)-JPVEXT_TURB IF (HTURBDIM=='3DIM') THEN !* 3DIM case IF (OUSERV) THEN + !$mnh_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) #ifdef REPRO48 WHERE (PPHI3(:,:,:)/=CSTURB%XPHI_LIM) #else WHERE (PPHI3(:,:,:)<=CSTURB%XPHI_LIM) #endif - D_PHI3DTDZ_O_DDTDZ(:,:,:) = PPHI3(:,:,:) & - * (1. - PREDTH1(:,:,:) * (3./2.+PREDTH1+PREDR1) & - /((1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1)))) & - + (1.+PREDR1)*(PRED2THR3+PRED2TH3) & - / (PREDTH1*(1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1))) & - - (1./2.*PREDTH1+PREDR1 * (1.+PREDTH1+PREDR1)) & - / ((1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1))) + D_PHI3DTDZ_O_DDTDZ(:,:,:) = PPHI3(:,:,:) & + * (1. - PREDTH1(:,:,:) * (3./2.+PREDTH1(:,:,:)+PREDR1(:,:,:)) & + /((1.+PREDTH1(:,:,:)+PREDR1(:,:,:))*(1.+1./2.*(PREDTH1(:,:,:)+PREDR1(:,:,:))))) & + + (1.+PREDR1(:,:,:))*(PRED2THR3(:,:,:)+PRED2TH3(:,:,:)) & + / (PREDTH1(:,:,:)*(1.+PREDTH1(:,:,:)+PREDR1(:,:,:))* & + (1.+1./2.*(PREDTH1(:,:,:)+PREDR1(:,:,:)))) & + - (1./2.*PREDTH1(:,:,:)+PREDR1(:,:,:) * (1.+PREDTH1(:,:,:)+PREDR1(:,:,:))) & + / ((1.+PREDTH1(:,:,:)+PREDR1(:,:,:))*(1.+1./2.*(PREDTH1(:,:,:)+PREDR1(:,:,:)))) ELSEWHERE D_PHI3DTDZ_O_DDTDZ(:,:,:) = PPHI3(:,:,:) ENDWHERE + !$mnh_end_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! ELSE + !$mnh_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) #ifdef REPRO48 WHERE (PPHI3(:,:,:)/=CSTURB%XPHI_LIM) #else WHERE (PPHI3(:,:,:)<=CSTURB%XPHI_LIM) #endif D_PHI3DTDZ_O_DDTDZ(:,:,:) = PPHI3(:,:,:) & - * (1. - PREDTH1(:,:,:) * (3./2.+PREDTH1) & - /((1.+PREDTH1)*(1.+1./2.*PREDTH1))) & - + PRED2TH3 / (PREDTH1*(1.+PREDTH1)*(1.+1./2.*PREDTH1)) & - - 1./2.*PREDTH1 / ((1.+PREDTH1)*(1.+1./2.*PREDTH1)) + * (1. - PREDTH1(:,:,:) * (3./2.+PREDTH1(:,:,:)) & + /((1.+PREDTH1(:,:,:))*(1.+1./2.*PREDTH1(:,:,:)))) & + + PRED2TH3(:,:,:) / (PREDTH1(:,:,:)*(1.+PREDTH1(:,:,:))*(1.+1./2.*PREDTH1(:,:,:))) & + - 1./2.*PREDTH1(:,:,:) / ((1.+PREDTH1(:,:,:))*(1.+1./2.*PREDTH1(:,:,:))) ELSEWHERE D_PHI3DTDZ_O_DDTDZ(:,:,:) = PPHI3(:,:,:) ENDWHERE + !$mnh_end_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! END IF ELSE @@ -763,8 +850,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_PHI3DTDZ_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION D_PHI3DRDZ_O_DDRDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV) - TYPE(CSTURB_t), INTENT(IN) :: CSTURB - TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPHI3 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -773,7 +860,7 @@ FUNCTION D_PHI3DRDZ_O_DDRDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTU 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 - INTEGER :: IKB, IKE + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DRDZ_O_DDRDZ',0,ZHOOK_HANDLE) @@ -784,26 +871,29 @@ IKE = SIZE(PREDTH1,3)-JPVEXT_TURB IF (HTURBDIM=='3DIM') THEN !* 3DIM case IF (OUSERV) THEN + !$mnh_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) #ifdef REPRO48 WHERE (PPHI3(:,:,:)/=CSTURB%XPHI_LIM) #else WHERE (PPHI3(:,:,:)<=CSTURB%XPHI_LIM) #endif D_PHI3DRDZ_O_DDRDZ(:,:,:) = & - PPHI3(:,:,:) * (1.-PREDR1(:,:,:)*(3./2.+PREDTH1+PREDR1) & - / ((1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1)))) & - - PREDR1(:,:,:) * (PRED2THR3+PRED2TH3) / (PREDTH1 & - * (1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1))) & - + PREDR1(:,:,:) * (1./2.+PREDTH1+PREDR1) & - / ((1.+PREDTH1+PREDR1)*(1.+1./2.*(PREDTH1+PREDR1))) + PPHI3(:,:,:) * (1.-PREDR1(:,:,:)*(3./2.+PREDTH1(:,:,:)+PREDR1(:,:,:)) & + / ((1.+PREDTH1(:,:,:)+PREDR1(:,:,:))*(1.+1./2.*(PREDTH1(:,:,:)+PREDR1(:,:,:))))) & + - PREDR1(:,:,:) * (PRED2THR3(:,:,:)+PRED2TH3(:,:,:)) / (PREDTH1(:,:,:) & + * (1.+PREDTH1(:,:,:)+PREDR1(:,:,:))*(1.+1./2.*(PREDTH1(:,:,:)+PREDR1(:,:,:)))) & + + PREDR1(:,:,:) * (1./2.+PREDTH1(:,:,:)+PREDR1(:,:,:)) & + / ((1.+PREDTH1(:,:,:)+PREDR1(:,:,:))*(1.+1./2.*(PREDTH1(:,:,:)+PREDR1(:,:,:)))) ELSEWHERE D_PHI3DRDZ_O_DDRDZ(:,:,:) = PPHI3(:,:,:) END WHERE + !$mnh_end_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ELSE D_PHI3DRDZ_O_DDRDZ(:,:,:) = PPHI3(:,:,:) END IF ELSE !* 1DIM case + !$mnh_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) #ifdef REPRO48 WHERE (PPHI3(:,:,:)/=CSTURB%XPHI_LIM) #else @@ -814,6 +904,7 @@ ELSE ELSEWHERE D_PHI3DRDZ_O_DDRDZ(:,:,:) = PPHI3(:,:,:) END WHERE + !$mnh_end_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) END IF ! #ifdef REPRO48 @@ -829,8 +920,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DRDZ_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_PHI3DRDZ_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION D_PHI3DTDZ2_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,PDTDZ,HTURBDIM,OUSERV) - TYPE(CSTURB_t), INTENT(IN) :: CSTURB - TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPHI3 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -840,7 +931,8 @@ FUNCTION D_PHI3DTDZ2_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,PD 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ2_O_DDTDZ',0,ZHOOK_HANDLE) @@ -850,11 +942,13 @@ IKE = SIZE(PREDTH1,3)-JPVEXT_TURB ! IF (HTURBDIM=='3DIM') THEN ! by derivation of (phi3 dtdz) * dtdz according to dtdz we obtain: - D_PHI3DTDZ2_O_DDTDZ(:,:,:) = PDTDZ * (PPHI3 + & - D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV) ) - + ZWORK1 = D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV) + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) + D_PHI3DTDZ2_O_DDTDZ(:,:,:) = PDTDZ(:,:,:) * (PPHI3(:,:,:) + ZWORK1(:,:,:)) + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ELSE !* 1DIM case + !$mnh_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) #ifdef REPRO48 WHERE (PPHI3(:,:,:)/=CSTURB%XPHI_LIM) #else @@ -865,6 +959,7 @@ ELSE ELSEWHERE D_PHI3DTDZ2_O_DDTDZ(:,:,:) = PPHI3(:,:,:) * 2. * PDTDZ(:,:,:) END WHERE + !$mnh_end_expand_where(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) END IF ! #ifdef REPRO48 @@ -881,23 +976,25 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ2_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_PHI3DTDZ2_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_WTH_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 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 - INTEGER :: IKB, IKE + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WTH2',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -M3_WTH_WTH2(:,:,:) = CSTURB%XCSHF*PBLL_O_E*PETHETA*0.5/CSTURB%XCTD & - * (1.+0.5*PREDTH1+PREDR1) / PD +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_WTH_WTH2(:,:,:) = CSTURB%XCSHF*PBLL_O_E(:,:,:)*PETHETA(:,:,:)*0.5/CSTURB%XCTD & + * (1.+0.5*PREDTH1(:,:,:)+PREDR1(:,:,:)) / PD(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) M3_WTH_WTH2(:,:,IKB-1)=M3_WTH_WTH2(:,:,IKB) M3_WTH_WTH2(:,:,IKE+1)=M3_WTH_WTH2(:,:,IKE) ! @@ -905,8 +1002,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WTH2',1,ZHOOK_HANDLE) END FUNCTION M3_WTH_WTH2 !---------------------------------------------------------------------------- FUNCTION D_M3_WTH_WTH2_O_DDTDZ(D,CSTURB,PM3_WTH_WTH2,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + 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 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -914,16 +1011,18 @@ 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) :: 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 - INTEGER :: IKB, IKE + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WTH2_O_DDTDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_WTH_WTH2_O_DDTDZ(:,:,:) = ( 0.5*CSTURB%XCSHF*PBLL_O_E*PETHETA*0.5/CSTURB%XCTD/PD & - - PM3_WTH_WTH2/PD*(1.5+PREDTH1+PREDR1) )& - * PBLL_O_E * PETHETA * CSTURB%XCTV +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_WTH_WTH2_O_DDTDZ(:,:,:) = ( 0.5*CSTURB%XCSHF*PBLL_O_E(:,:,:)*PETHETA(:,:,:)*0.5/CSTURB%XCTD/PD(:,:,:) & + - PM3_WTH_WTH2(:,:,:)/PD(:,:,:)*(1.5+PREDTH1(:,:,:)+PREDR1(:,:,:)) )& + * PBLL_O_E(:,:,:) * PETHETA(:,:,:) * CSTURB%XCTV +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_WTH_WTH2_O_DDTDZ(:,:,IKB-1)=D_M3_WTH_WTH2_O_DDTDZ(:,:,IKB) D_M3_WTH_WTH2_O_DDTDZ(:,:,IKE+1)=D_M3_WTH_WTH2_O_DDTDZ(:,:,IKE) @@ -932,23 +1031,26 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WTH2_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_WTH_WTH2_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_WTH_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_W2TH',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB - -M3_WTH_W2TH(:,:,:) = CSTURB%XCSHF*PKEFF*1.5/MZM(PTKE, D%NKA, D%NKU, D%NKL) & - * (1. - 0.5*PREDR1*(1.+PREDR1)/PD ) / (1.+PREDTH1) +ZWORK1 = MZM(PTKE, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_WTH_W2TH(:,:,:) = CSTURB%XCSHF*PKEFF(:,:,:)*1.5/ZWORK1(:,:,:) & + * (1. - 0.5*PREDR1(:,:,:)*(1.+PREDR1(:,:,:))/PD(:,:,:) ) / (1.+PREDTH1(:,:,:)) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! M3_WTH_W2TH(:,:,IKB-1)=M3_WTH_W2TH(:,:,IKB) M3_WTH_W2TH(:,:,IKE+1)=M3_WTH_W2TH(:,:,IKE) @@ -957,8 +1059,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_W2TH',1,ZHOOK_HANDLE) END FUNCTION M3_WTH_W2TH !---------------------------------------------------------------------------- FUNCTION D_M3_WTH_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,PKEFF,PTKE) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -967,16 +1069,22 @@ 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) :: 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2TH_O_DDTDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB +ZWORK1 = MZM(PTKE, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) D_M3_WTH_W2TH_O_DDTDZ(:,:,:) = & - - CSTURB%XCSHF*PKEFF*1.5/MZM(PTKE, D%NKA, D%NKU, D%NKL)/(1.+PREDTH1)**2*CSTURB%XCTV*PBLL_O_E*PETHETA & - * (1. - 0.5*PREDR1*(1.+PREDR1)/PD*( 1.+(1.+PREDTH1)*(1.5+PREDR1+PREDTH1)/PD) ) + - CSTURB%XCSHF*PKEFF(:,:,:)*1.5/ZWORK1(:,:,:)/(1.+PREDTH1(:,:,:))**2 & + * CSTURB%XCTV*PBLL_O_E(:,:,:)*PETHETA(:,:,:) & + * (1. - 0.5*PREDR1(:,:,:)*(1.+PREDR1(:,:,:))/PD(:,:,:)* & + ( 1.+(1.+PREDTH1(:,:,:))*(1.5+PREDR1(:,:,:)+PREDTH1(:,:,:))/PD(:,:,:)) ) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_WTH_W2TH_O_DDTDZ(:,:,IKB-1)=D_M3_WTH_W2TH_O_DDTDZ(:,:,IKB) D_M3_WTH_W2TH_O_DDTDZ(:,:,IKE+1)=D_M3_WTH_W2TH_O_DDTDZ(:,:,IKE) @@ -985,8 +1093,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2TH_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_WTH_W2TH_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_WTH_W2R(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST,PDTDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB 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 @@ -994,14 +1102,19 @@ FUNCTION M3_WTH_W2R(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST,PDTDZ) 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_W2R',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -M3_WTH_W2R(:,:,:) = - CSTURB%XCSHF*PKEFF*0.75*CSTURB%XCTV*PBLL_O_E/MZM(PTKE, D%NKA, D%NKU, D%NKL)*PEMOIST*PDTDZ/PD +ZWORK1 = MZM(PTKE, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_WTH_W2R(:,:,:) = - CSTURB%XCSHF*PKEFF(:,:,:)*0.75*CSTURB%XCTV*PBLL_O_E(:,:,:) & + /ZWORK1(:,:,:)*PEMOIST(:,:,:)*PDTDZ(:,:,:)/PD(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! M3_WTH_W2R(:,:,IKB-1)=M3_WTH_W2R(:,:,IKB) M3_WTH_W2R(:,:,IKE+1)=M3_WTH_W2R(:,:,IKE) @@ -1010,8 +1123,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_W2R',1,ZHOOK_HANDLE) END FUNCTION M3_WTH_W2R !---------------------------------------------------------------------------- FUNCTION D_M3_WTH_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1020,15 +1133,20 @@ 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) :: 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2R_O_DDTDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_WTH_W2R_O_DDTDZ(:,:,:) = - CSTURB%XCSHF*PKEFF*0.75*CSTURB%XCTV*PBLL_O_E/MZM(PTKE, D%NKA, D%NKU, D%NKL)*PEMOIST/PD & - * (1. - PREDTH1*(1.5+PREDTH1+PREDR1)/PD) +ZWORK1 = MZM(PTKE, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_WTH_W2R_O_DDTDZ(:,:,:) = - CSTURB%XCSHF*PKEFF(:,:,:)*0.75*CSTURB%XCTV*PBLL_O_E(:,:,:) & + /ZWORK1(:,:,:)*PEMOIST(:,:,:)/PD(:,:,:) & + * (1. - PREDTH1(:,:,:)*(1.5+PREDTH1(:,:,:)+PREDR1(:,:,:))/PD(:,:,:)) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_WTH_W2R_O_DDTDZ(:,:,IKB-1)=D_M3_WTH_W2R_O_DDTDZ(:,:,IKB) D_M3_WTH_W2R_O_DDTDZ(:,:,IKE+1)=D_M3_WTH_W2R_O_DDTDZ(:,:,IKE) @@ -1037,8 +1155,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2R_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_WTH_W2R_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_WTH_WR2(D,CSTURB,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB 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 @@ -1049,15 +1167,19 @@ 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) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_WTH_WR2 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WR2',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -M3_WTH_WR2(:,:,:) = - CSTURB%XCSHF*PKEFF*0.25*PBLL_O_E*CSTURB%XCTV*PEMOIST**2 & - *MZM(PBETA*PLEPS/(PSQRT_TKE*PTKE), D%NKA, D%NKU, D%NKL)/CSTURB%XCTD*PDTDZ/PD +ZWORK1 = MZM(PBETA*PLEPS/(PSQRT_TKE*PTKE), D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_WTH_WR2(:,:,:) = - CSTURB%XCSHF*PKEFF(:,:,:)*0.25*PBLL_O_E(:,:,:)*CSTURB%XCTV*PEMOIST(:,:,:)**2 & + *ZWORK1(:,:,:)/CSTURB%XCTD*PDTDZ(:,:,:)/PD(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! M3_WTH_WR2(:,:,IKB-1)=M3_WTH_WR2(:,:,IKB) M3_WTH_WR2(:,:,IKE+1)=M3_WTH_WR2(:,:,IKE) @@ -1066,8 +1188,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WR2',1,ZHOOK_HANDLE) END FUNCTION 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) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1079,16 +1201,20 @@ 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) :: 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WR2_O_DDTDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_WTH_WR2_O_DDTDZ(:,:,:) = - CSTURB%XCSHF*PKEFF*0.25*PBLL_O_E*CSTURB%XCTV*PEMOIST**2 & - *MZM(PBETA*PLEPS/(PSQRT_TKE*PTKE), D%NKA, D%NKU, D%NKL)/CSTURB%XCTD/PD & - * (1. - PREDTH1*(1.5+PREDTH1+PREDR1)/PD) +ZWORK1 = MZM(PBETA*PLEPS/(PSQRT_TKE*PTKE), D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_WTH_WR2_O_DDTDZ(:,:,:) = - CSTURB%XCSHF*PKEFF(:,:,:)*0.25*PBLL_O_E(:,:,:)*CSTURB%XCTV*PEMOIST(:,:,:)**2 & + *ZWORK1(:,:,:)/CSTURB%XCTD/PD(:,:,:) & + * (1. - PREDTH1(:,:,:)*(1.5+PREDTH1(:,:,:)+PREDR1(:,:,:))/PD(:,:,:)) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_WTH_WR2_O_DDTDZ(:,:,IKB-1)=D_M3_WTH_WR2_O_DDTDZ(:,:,IKB) D_M3_WTH_WR2_O_DDTDZ(:,:,IKE+1)=D_M3_WTH_WR2_O_DDTDZ(:,:,IKE) @@ -1097,8 +1223,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WR2_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_WTH_WR2_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_WTH_WTHR(D,CSTURB,PREDR1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PEMOIST) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PKEFF @@ -1107,18 +1233,20 @@ 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(SIZE(PREDR1,1),SIZE(PREDR1,2),SIZE(PREDR1,3)) :: M3_WTH_WTHR - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_WTH_WTHR + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WTHR',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -!M3_WTH_WTHR(:,:,:) = CSTURB%XCSHF*PKEFF*PEMOIST/MZM(PBETA*PTKE*PSQRT_TKE, D%NKA, D%NKU, D%NKL) & -! *0.5*PLEPS/CSTURB%XCTD*(1+PREDR1)/PD -M3_WTH_WTHR(:,:,:) = CSTURB%XCSHF*PKEFF*PEMOIST*MZM(PBETA/PTKE*PSQRT_TKE, D%NKA, D%NKU, D%NKL) & - *0.5*PLEPS/CSTURB%XCTD*(1+PREDR1)/PD +ZWORK1 = MZM(PBETA/PTKE*PSQRT_TKE, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_WTH_WTHR(:,:,:) = CSTURB%XCSHF*PKEFF(:,:,:)*PEMOIST(:,:,:)*ZWORK1(:,:,:) & + *0.5*PLEPS(:,:,:)/CSTURB%XCTD*(1+PREDR1(:,:,:))/PD(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! M3_WTH_WTHR(:,:,IKB-1)=M3_WTH_WTHR(:,:,IKB) M3_WTH_WTHR(:,:,IKE+1)=M3_WTH_WTHR(:,:,IKE) @@ -1127,8 +1255,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WTHR',1,ZHOOK_HANDLE) END FUNCTION M3_WTH_WTHR !---------------------------------------------------------------------------- FUNCTION D_M3_WTH_WTHR_O_DDTDZ(D,CSTURB,PM3_WTH_WTHR,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + 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 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -1136,14 +1264,17 @@ 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) :: 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 - INTEGER :: IKB, IKE + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WTHR_O_DDTDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_WTH_WTHR_O_DDTDZ(:,:,:) = - PM3_WTH_WTHR * (1.5+PREDTH1+PREDR1)/PD*CSTURB%XCTV*PBLL_O_E*PETHETA +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_WTH_WTHR_O_DDTDZ(:,:,:) = - PM3_WTH_WTHR(:,:,:) * (1.5+PREDTH1(:,:,:)+PREDR1(:,:,:))& + /PD(:,:,:)*CSTURB%XCTV*PBLL_O_E(:,:,:)*PETHETA(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_WTH_WTHR_O_DDTDZ(:,:,IKB-1)=D_M3_WTH_WTHR_O_DDTDZ(:,:,IKB) D_M3_WTH_WTHR_O_DDTDZ(:,:,IKE+1)=D_M3_WTH_WTHR_O_DDTDZ(:,:,IKE) @@ -1152,8 +1283,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WTHR_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_WTH_WTHR_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_TH2_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PDTDZ,PLM,PLEPS,PTKE) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1162,15 +1293,19 @@ FUNCTION M3_TH2_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PDTDZ,PLM,PLEPS,PTKE) 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_W2TH',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -M3_TH2_W2TH(:,:,:) = - MZF((1.-0.5*PREDR1*(1.+PREDR1)/PD)/(1.+PREDTH1)*PDTDZ, D%NKA, D%NKU, D%NKL) & - * 1.5*PLM*PLEPS/PTKE*CSTURB%XCTV +ZWORK1 = MZF((1.-0.5*PREDR1*(1.+PREDR1)/PD)/(1.+PREDTH1)*PDTDZ, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_TH2_W2TH(:,:,:) = - ZWORK1(:,:,:) & + * 1.5*PLM(:,:,:)*PLEPS(:,:,:)/PTKE(:,:,:)*CSTURB%XCTV +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! M3_TH2_W2TH(:,:,IKB-1)=M3_TH2_W2TH(:,:,IKB) M3_TH2_W2TH(:,:,IKE+1)=M3_TH2_W2TH(:,:,IKE) @@ -1179,8 +1314,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_W2TH',1,ZHOOK_HANDLE) END FUNCTION M3_TH2_W2TH !---------------------------------------------------------------------------- FUNCTION D_M3_TH2_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,OUSERV) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1189,7 +1324,8 @@ 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) :: PTKE LOGICAL, INTENT(IN) :: OUSERV REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: D_M3_TH2_W2TH_O_DDTDZ - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_W2TH_O_DDTDZ',0,ZHOOK_HANDLE) @@ -1200,12 +1336,20 @@ IF (OUSERV) THEN ! D_M3_TH2_W2TH_O_DDTDZ(:,:,:) = - 1.5*PLM*PLEPS/PTKE*CSTURB%XCTV * MZF( & ! (1.-0.5*PREDR1*(1.+PREDR1)/PD)*(1.-(1.5+PREDTH1+PREDR1)*(1.+PREDTH1)/PD ) & ! / (1.+PREDTH1)**2, D%NKA, D%NKU, D%NKL) - D_M3_TH2_W2TH_O_DDTDZ(:,:,:) = - 1.5*PLM*PLEPS/PTKE*CSTURB%XCTV * MZF( & - (1.-0.5*PREDR1*(1.+PREDR1)/PD)*(1.-(1.5+PREDTH1+PREDR1)* & + + ZWORK1 = MZF((1.-0.5*PREDR1*(1.+PREDR1)/PD)*(1.-(1.5+PREDTH1+PREDR1)* & PREDTH1*(1.+PREDTH1)/PD ) / (1.+PREDTH1)**2, D%NKA, D%NKU, D%NKL) + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) + D_M3_TH2_W2TH_O_DDTDZ(:,:,:) = - 1.5*PLM(:,:,:)*PLEPS(:,:,:)/PTKE(:,:,:)*CSTURB%XCTV * & + ZWORK1(:,:,:) + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ELSE - D_M3_TH2_W2TH_O_DDTDZ(:,:,:) = - 1.5*PLM*PLEPS/PTKE*CSTURB%XCTV * MZF(1./(1.+PREDTH1)**2, D%NKA, D%NKU, D%NKL) + ZWORK1 = MZF(1./(1.+PREDTH1)**2, D%NKA, D%NKU, D%NKL) + !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) + D_M3_TH2_W2TH_O_DDTDZ(:,:,:) = - 1.5*PLM(:,:,:)*PLEPS(:,:,:)/PTKE(:,:,:)*CSTURB%XCTV & + * ZWORK1(:,:,:) + !$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) END IF ! D_M3_TH2_W2TH_O_DDTDZ(:,:,IKB-1)=D_M3_TH2_W2TH_O_DDTDZ(:,:,IKB) @@ -1215,23 +1359,27 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_W2TH_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_TH2_W2TH_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_TH2_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WTH2',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -M3_TH2_WTH2(:,:,:) = PLEPS*0.5/CSTURB%XCTD/PSQRT_TKE & - * MZF((1.+0.5*PREDTH1+1.5*PREDR1+0.5*PREDR1**2)/PD, D%NKA, D%NKU, D%NKL) +ZWORK1 = MZF((1.+0.5*PREDTH1+1.5*PREDR1+0.5*PREDR1**2)/PD, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_TH2_WTH2(:,:,:) = PLEPS(:,:,:)*0.5/CSTURB%XCTD/PSQRT_TKE(:,:,:) & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! M3_TH2_WTH2(:,:,IKB-1)=M3_TH2_WTH2(:,:,IKB) M3_TH2_WTH2(:,:,IKE+1)=M3_TH2_WTH2(:,:,IKE) @@ -1240,8 +1388,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WTH2',1,ZHOOK_HANDLE) END FUNCTION M3_TH2_WTH2 !---------------------------------------------------------------------------- FUNCTION D_M3_TH2_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1250,17 +1398,22 @@ 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) :: 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WTH2_O_DDTDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_TH2_WTH2_O_DDTDZ(:,:,:) = PLEPS*0.5/CSTURB%XCTD/PSQRT_TKE*CSTURB%XCTV & - * MZF(PBLL_O_E*PETHETA* (0.5/PD & +ZWORK1 = MZF(PBLL_O_E*PETHETA* (0.5/PD & - (1.5+PREDTH1+PREDR1)*(1.+0.5*PREDTH1+1.5*PREDR1+0.5*PREDR1**2)/PD**2 & ), D%NKA, D%NKU, D%NKL) + +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_TH2_WTH2_O_DDTDZ(:,:,:) = PLEPS(:,:,:)*0.5/CSTURB%XCTD/PSQRT_TKE(:,:,:)*CSTURB%XCTV & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_TH2_WTH2_O_DDTDZ(:,:,IKB-1)=D_M3_TH2_WTH2_O_DDTDZ(:,:,IKB) D_M3_TH2_WTH2_O_DDTDZ(:,:,IKE+1)=D_M3_TH2_WTH2_O_DDTDZ(:,:,IKE) @@ -1269,8 +1422,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WTH2_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_TH2_WTH2_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_TH2_W2R(D,CSTURB,PD,PLM,PLEPS,PTKE,PBLL_O_E,PEMOIST,PDTDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS @@ -1279,14 +1432,19 @@ 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) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_TH2_W2R - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_W2R',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -M3_TH2_W2R(:,:,:) = 0.75*CSTURB%XCTV**2*MZF(PBLL_O_E*PEMOIST/PD*PDTDZ**2, D%NKA, D%NKU, D%NKL)*PLM*PLEPS/PTKE +ZWORK1 = MZF(PBLL_O_E*PEMOIST/PD*PDTDZ**2, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_TH2_W2R(:,:,:) = 0.75*CSTURB%XCTV**2*ZWORK1(:,:,:) & + *PLM(:,:,:)*PLEPS(:,:,:)/PTKE(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! M3_TH2_W2R(:,:,IKB-1)=M3_TH2_W2R(:,:,IKB) M3_TH2_W2R(:,:,IKE+1)=M3_TH2_W2R(:,:,IKE) @@ -1295,8 +1453,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_W2R',1,ZHOOK_HANDLE) END FUNCTION M3_TH2_W2R !---------------------------------------------------------------------------- FUNCTION D_M3_TH2_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PEMOIST,PDTDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1307,15 +1465,19 @@ 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) :: 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_W2R_O_DDTDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_TH2_W2R_O_DDTDZ(:,:,:) = 0.75*CSTURB%XCTV**2*PLM*PLEPS/PTKE & - * MZF(PBLL_O_E*PEMOIST/PD*PDTDZ*(2.-PREDTH1*(1.5+PREDTH1+PREDR1)/PD), D%NKA, D%NKU, D%NKL) +ZWORK1 = MZF(PBLL_O_E*PEMOIST/PD*PDTDZ*(2.-PREDTH1*(1.5+PREDTH1+PREDR1)/PD), D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_TH2_W2R_O_DDTDZ(:,:,:) = 0.75*CSTURB%XCTV**2*PLM(:,:,:)*PLEPS(:,:,:)/PTKE(:,:,:) & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_TH2_W2R_O_DDTDZ(:,:,IKB-1)=D_M3_TH2_W2R_O_DDTDZ(:,:,IKB) D_M3_TH2_W2R_O_DDTDZ(:,:,IKE+1)=D_M3_TH2_W2R_O_DDTDZ(:,:,IKE) @@ -1324,8 +1486,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_W2R_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_TH2_W2R_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_TH2_WR2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB 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 @@ -1333,14 +1495,19 @@ 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) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_TH2_WR2 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WR2',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -M3_TH2_WR2(:,:,:) = 0.25*CSTURB%XCTV**2*MZF((PBLL_O_E*PEMOIST*PDTDZ)**2/PD, D%NKA, D%NKU, D%NKL)*PLEPS/PSQRT_TKE/CSTURB%XCTD +ZWORK1 = MZF((PBLL_O_E*PEMOIST*PDTDZ)**2/PD, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_TH2_WR2(:,:,:) = 0.25*CSTURB%XCTV**2*ZWORK1(:,:,:)& + *PLEPS(:,:,:)/PSQRT_TKE(:,:,:)/CSTURB%XCTD +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! M3_TH2_WR2(:,:,IKB-1)=M3_TH2_WR2(:,:,IKB) M3_TH2_WR2(:,:,IKE+1)=M3_TH2_WR2(:,:,IKE) @@ -1349,8 +1516,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WR2',1,ZHOOK_HANDLE) END FUNCTION M3_TH2_WR2 !---------------------------------------------------------------------------- FUNCTION D_M3_TH2_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1360,15 +1527,19 @@ 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) :: 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WR2_O_DDTDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_TH2_WR2_O_DDTDZ(:,:,:) = 0.25*CSTURB%XCTV**2*PLEPS/PSQRT_TKE/CSTURB%XCTD & - * MZF((PBLL_O_E*PEMOIST)**2*PDTDZ/PD*(2.-PREDTH1*(1.5+PREDTH1+PREDR1)/PD), D%NKA, D%NKU, D%NKL) +ZWORK1 = MZF((PBLL_O_E*PEMOIST)**2*PDTDZ/PD*(2.-PREDTH1*(1.5+PREDTH1+PREDR1)/PD), D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_TH2_WR2_O_DDTDZ(:,:,:) = 0.25*CSTURB%XCTV**2*PLEPS(:,:,:)/PSQRT_TKE(:,:,:)/CSTURB%XCTD & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_TH2_WR2_O_DDTDZ(:,:,IKB-1)=D_M3_TH2_WR2_O_DDTDZ(:,:,IKB) D_M3_TH2_WR2_O_DDTDZ(:,:,IKE+1)=D_M3_TH2_WR2_O_DDTDZ(:,:,IKE) @@ -1377,8 +1548,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WR2_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_TH2_WR2_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_TH2_WTHR(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS @@ -1387,15 +1558,19 @@ 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) :: PEMOIST REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_TH2_WTHR - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WTHR',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -M3_TH2_WTHR(:,:,:) = - 0.5*CSTURB%XCTV*PLEPS/PSQRT_TKE/CSTURB%XCTD & - * MZF(PBLL_O_E*PEMOIST*PDTDZ*(1.+PREDR1)/PD, D%NKA, D%NKU, D%NKL) +ZWORK1 = MZF(PBLL_O_E*PEMOIST*PDTDZ*(1.+PREDR1)/PD, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_TH2_WTHR(:,:,:) = - 0.5*CSTURB%XCTV*PLEPS(:,:,:)/PSQRT_TKE(:,:,:)/CSTURB%XCTD & + *ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! M3_TH2_WTHR(:,:,IKB-1)=M3_TH2_WTHR(:,:,IKB) M3_TH2_WTHR(:,:,IKE+1)=M3_TH2_WTHR(:,:,IKE) @@ -1404,8 +1579,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WTHR',1,ZHOOK_HANDLE) END FUNCTION M3_TH2_WTHR !---------------------------------------------------------------------------- FUNCTION D_M3_TH2_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1415,15 +1590,19 @@ 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) :: 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WTHR_O_DDTDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_TH2_WTHR_O_DDTDZ(:,:,:) = - 0.5*CSTURB%XCTV*PLEPS/PSQRT_TKE/CSTURB%XCTD & - * MZF(PBLL_O_E*PEMOIST*(1.+PREDR1)/PD * (1. -PREDTH1*(1.5+PREDTH1+PREDR1)/PD), D%NKA, D%NKU, D%NKL) +ZWORK1 = MZF(PBLL_O_E*PEMOIST*(1.+PREDR1)/PD * (1. -PREDTH1*(1.5+PREDTH1+PREDR1)/PD), D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_TH2_WTHR_O_DDTDZ(:,:,:) = - 0.5*CSTURB%XCTV*PLEPS(:,:,:)/PSQRT_TKE(:,:,:)/CSTURB%XCTD & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_TH2_WTHR_O_DDTDZ(:,:,IKB-1)=D_M3_TH2_WTHR_O_DDTDZ(:,:,IKB) D_M3_TH2_WTHR_O_DDTDZ(:,:,IKE+1)=D_M3_TH2_WTHR_O_DDTDZ(:,:,IKE) @@ -1432,23 +1611,27 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WTHR_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_TH2_WTHR_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_THR_WTHR(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WTHR',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -M3_THR_WTHR(:,:,:) = 0.5*PLEPS/PSQRT_TKE/CSTURB%XCTD & - * MZF((1.+PREDTH1)*(1.+PREDR1)/PD, D%NKA, D%NKU, D%NKL) +ZWORK1 = MZF((1.+PREDTH1)*(1.+PREDR1)/PD, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_THR_WTHR(:,:,:) = 0.5*PLEPS(:,:,:)/PSQRT_TKE(:,:,:)/CSTURB%XCTD & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! M3_THR_WTHR(:,:,IKB-1)=M3_THR_WTHR(:,:,IKB) M3_THR_WTHR(:,:,IKE+1)=M3_THR_WTHR(:,:,IKE) @@ -1457,8 +1640,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WTHR',1,ZHOOK_HANDLE) END FUNCTION M3_THR_WTHR !---------------------------------------------------------------------------- FUNCTION D_M3_THR_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1467,15 +1650,19 @@ 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) :: 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDTDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_THR_WTHR_O_DDTDZ(:,:,:) = 0.5*PLEPS/PSQRT_TKE/CSTURB%XCTD * CSTURB%XCTV & - * MZF(PETHETA*PBLL_O_E/PD*(1.+PREDR1)*(1.-(1.+PREDTH1)*(1.5+PREDTH1+PREDR1)/PD), D%NKA, D%NKU, D%NKL) +ZWORK1 = MZF(PETHETA*PBLL_O_E/PD*(1.+PREDR1)*(1.-(1.+PREDTH1)*(1.5+PREDTH1+PREDR1)/PD), D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_THR_WTHR_O_DDTDZ(:,:,:) = 0.5*PLEPS(:,:,:)/PSQRT_TKE(:,:,:)/CSTURB%XCTD * CSTURB%XCTV & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_THR_WTHR_O_DDTDZ(:,:,IKB-1)=D_M3_THR_WTHR_O_DDTDZ(:,:,IKB) D_M3_THR_WTHR_O_DDTDZ(:,:,IKE+1)=D_M3_THR_WTHR_O_DDTDZ(:,:,IKE) @@ -1484,8 +1671,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_THR_WTHR_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_THR_WTH2(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS @@ -1494,15 +1681,19 @@ 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) :: PETHETA REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: M3_THR_WTH2 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WTH2',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -M3_THR_WTH2(:,:,:) = - 0.25*PLEPS/PSQRT_TKE/CSTURB%XCTD*CSTURB%XCTV & - * MZF((1.+PREDR1)*PBLL_O_E*PETHETA*PDRDZ/PD, D%NKA, D%NKU, D%NKL) +ZWORK1 = MZF((1.+PREDR1)*PBLL_O_E*PETHETA*PDRDZ/PD, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_THR_WTH2(:,:,:) = - 0.25*PLEPS(:,:,:)/PSQRT_TKE(:,:,:)/CSTURB%XCTD*CSTURB%XCTV & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! M3_THR_WTH2(:,:,IKB-1)=M3_THR_WTH2(:,:,IKB) M3_THR_WTH2(:,:,IKE+1)=M3_THR_WTH2(:,:,IKE) @@ -1511,8 +1702,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WTH2',1,ZHOOK_HANDLE) END FUNCTION M3_THR_WTH2 !---------------------------------------------------------------------------- FUNCTION D_M3_THR_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1522,15 +1713,19 @@ 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) :: 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTH2_O_DDTDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_THR_WTH2_O_DDTDZ(:,:,:) = - 0.25*PLEPS/PSQRT_TKE/CSTURB%XCTD*CSTURB%XCTV**2 & - * MZF(-(1.+PREDR1)*(PBLL_O_E*PETHETA/PD)**2*PDRDZ*(1.5+PREDTH1+PREDR1), D%NKA, D%NKU, D%NKL) +ZWORK1 = MZF(-(1.+PREDR1)*(PBLL_O_E*PETHETA/PD)**2*PDRDZ*(1.5+PREDTH1+PREDR1), D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_THR_WTH2_O_DDTDZ(:,:,:) = - 0.25*PLEPS(:,:,:)/PSQRT_TKE(:,:,:)/CSTURB%XCTD*CSTURB%XCTV**2 & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_THR_WTH2_O_DDTDZ(:,:,IKB-1)=D_M3_THR_WTH2_O_DDTDZ(:,:,IKB) D_M3_THR_WTH2_O_DDTDZ(:,:,IKE+1)=D_M3_THR_WTH2_O_DDTDZ(:,:,IKE) @@ -1539,8 +1734,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTH2_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION 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) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1549,17 +1744,21 @@ 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) :: 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTH2_O_DDRDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_THR_WTH2_O_DDRDZ(:,:,:) = - 0.25*PLEPS/PSQRT_TKE/CSTURB%XCTD*CSTURB%XCTV & - * MZF(PBLL_O_E*PETHETA/PD & +ZWORK1 = MZF(PBLL_O_E*PETHETA/PD & *(-(1.+PREDR1)*PREDR1/PD*(1.5+PREDTH1+PREDR1)+(1.+2.*PREDR1)), & D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_THR_WTH2_O_DDRDZ(:,:,:) = - 0.25*PLEPS(:,:,:)/PSQRT_TKE(:,:,:)/CSTURB%XCTD*CSTURB%XCTV & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_THR_WTH2_O_DDRDZ(:,:,IKB-1)=D_M3_THR_WTH2_O_DDRDZ(:,:,IKB) D_M3_THR_WTH2_O_DDRDZ(:,:,IKE+1)=D_M3_THR_WTH2_O_DDRDZ(:,:,IKE) @@ -1568,8 +1767,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTH2_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_THR_WTH2_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION M3_THR_W2TH(D,CSTURB,PREDR1,PD,PLM,PLEPS,PTKE,PDRDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM @@ -1577,15 +1776,19 @@ FUNCTION M3_THR_W2TH(D,CSTURB,PREDR1,PD,PLM,PLEPS,PTKE,PDRDZ) 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2TH',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -M3_THR_W2TH(:,:,:) = - 0.75*PLM*PLEPS/PTKE * CSTURB%XCTV & - * MZF((1.+PREDR1)*PDRDZ/PD, D%NKA, D%NKU, D%NKL) +ZWORK1 = MZF((1.+PREDR1)*PDRDZ/PD, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +M3_THR_W2TH(:,:,:) = - 0.75*PLM(:,:,:)*PLEPS(:,:,:)/PTKE(:,:,:) * CSTURB%XCTV & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! M3_THR_W2TH(:,:,IKB-1)=M3_THR_W2TH(:,:,IKB) M3_THR_W2TH(:,:,IKE+1)=M3_THR_W2TH(:,:,IKE) @@ -1594,8 +1797,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2TH',1,ZHOOK_HANDLE) END FUNCTION M3_THR_W2TH !---------------------------------------------------------------------------- FUNCTION D_M3_THR_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDRDZ,PETHETA) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1606,16 +1809,19 @@ 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) :: 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2TH_O_DDTDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_THR_W2TH_O_DDTDZ(:,:,:) = - 0.75*PLM*PLEPS/PTKE * CSTURB%XCTV**2 & - * MZF(-PETHETA*PBLL_O_E*(1.+PREDR1)*PDRDZ*(1.5+PREDTH1+PREDR1)/PD**2, D%NKA, D%NKU, D%NKL) - +ZWORK1 = MZF(-PETHETA*PBLL_O_E*(1.+PREDR1)*PDRDZ*(1.5+PREDTH1+PREDR1)/PD**2, D%NKA, D%NKU, D%NKL) +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_THR_W2TH_O_DDTDZ(:,:,:) = - 0.75*PLM(:,:,:)*PLEPS(:,:,:)/PTKE(:,:,:) * CSTURB%XCTV**2 & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_THR_W2TH_O_DDTDZ(:,:,IKB-1)=D_M3_THR_W2TH_O_DDTDZ(:,:,IKB) D_M3_THR_W2TH_O_DDTDZ(:,:,IKE+1)=D_M3_THR_W2TH_O_DDTDZ(:,:,IKE) @@ -1624,8 +1830,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2TH_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_THR_W2TH_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION D_M3_THR_W2TH_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1633,18 +1839,21 @@ 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) :: 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 - INTEGER :: IKB, IKE + REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JI,JJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2TH_O_DDRDZ',0,ZHOOK_HANDLE) IKB = 1+JPVEXT_TURB IKE = SIZE(PD,3)-JPVEXT_TURB -D_M3_THR_W2TH_O_DDRDZ(:,:,:) = - 0.75*PLM*PLEPS/PTKE * CSTURB%XCTV & - * MZF(-(1.+PREDR1)*PREDR1*(1.5+PREDTH1+PREDR1)/PD**2 & +ZWORK1 = MZF(-(1.+PREDR1)*PREDR1*(1.5+PREDTH1+PREDR1)/PD**2 & +(1.+2.*PREDR1)/PD, & D%NKA, D%NKU, D%NKL) - +!$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) +D_M3_THR_W2TH_O_DDRDZ(:,:,:) = - 0.75*PLM(:,:,:)*PLEPS(:,:,:)/PTKE(:,:,:) * CSTURB%XCTV & + * ZWORK1(:,:,:) +!$mnh_end_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT) ! D_M3_THR_W2TH_O_DDRDZ(:,:,IKB-1)=D_M3_THR_W2TH_O_DDRDZ(:,:,IKB) D_M3_THR_W2TH_O_DDRDZ(:,:,IKE+1)=D_M3_THR_W2TH_O_DDRDZ(:,:,IKE) @@ -1656,8 +1865,8 @@ END FUNCTION D_M3_THR_W2TH_O_DDRDZ !---------------------------------------------------------------------------- ! FUNCTION PSI3(D,CSTURB,PREDR1,PREDTH1,PRED2R3,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2TH3 @@ -1675,8 +1884,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PSI3',1,ZHOOK_HANDLE) END FUNCTION PSI3 !---------------------------------------------------------------------------- FUNCTION D_PSI3DRDZ_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPSI3 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -1696,8 +1905,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DRDZ_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_PSI3DRDZ_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION D_PSI3DTDZ_O_DDTDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPSI3 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 @@ -1715,8 +1924,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DTDZ_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_PSI3DTDZ_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION D_PSI3DRDZ2_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,PDRDZ,HTURBDIM,OUSERV) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPSI3 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1735,8 +1944,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DRDZ2_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_PSI3DRDZ2_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION M3_WR_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1752,8 +1961,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WR2',1,ZHOOK_HANDLE) END FUNCTION M3_WR_WR2 !---------------------------------------------------------------------------- FUNCTION D_M3_WR_WR2_O_DDRDZ(D,CSTURB,PM3_WR_WR2,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + 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 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1770,8 +1979,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WR2_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_WR_WR2_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION M3_WR_W2R(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1787,8 +1996,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_W2R',1,ZHOOK_HANDLE) END FUNCTION M3_WR_W2R !---------------------------------------------------------------------------- FUNCTION D_M3_WR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PKEFF,PTKE) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1806,8 +2015,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_W2R_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_WR_W2R_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION M3_WR_W2TH(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB 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 @@ -1824,8 +2033,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_W2TH',1,ZHOOK_HANDLE) END FUNCTION M3_WR_W2TH !---------------------------------------------------------------------------- FUNCTION D_M3_WR_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PBLL_O_E,PETHETA) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1843,8 +2052,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_W2TH_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_WR_W2TH_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION M3_WR_WTH2(D,CSTURB,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDRDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB 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 @@ -1864,8 +2073,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WTH2',1,ZHOOK_HANDLE) END FUNCTION 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) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1886,8 +2095,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WTH2_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_WR_WTH2_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION M3_WR_WTHR(D,CSTURB,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PETHETA) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PKEFF @@ -1906,8 +2115,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WTHR',1,ZHOOK_HANDLE) END FUNCTION M3_WR_WTHR !---------------------------------------------------------------------------- FUNCTION D_M3_WR_WTHR_O_DDRDZ(D,CSTURB,PM3_WR_WTHR,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + 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 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 @@ -1924,8 +2133,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WTHR_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_WR_WTHR_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION M3_R2_W2R(D,CSTURB,PREDR1,PREDTH1,PD,PDRDZ,PLM,PLEPS,PTKE) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1943,8 +2152,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_W2R',1,ZHOOK_HANDLE) END FUNCTION M3_R2_W2R !---------------------------------------------------------------------------- FUNCTION D_M3_R2_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,OUSERV) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1962,8 +2171,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2R_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_R2_W2R_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION M3_R2_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1979,8 +2188,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WR2',1,ZHOOK_HANDLE) END FUNCTION M3_R2_WR2 !---------------------------------------------------------------------------- FUNCTION D_M3_R2_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -1998,8 +2207,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WR2_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_R2_WR2_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION M3_R2_W2TH(D,CSTURB,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS @@ -2017,8 +2226,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_W2TH',1,ZHOOK_HANDLE) END FUNCTION M3_R2_W2TH !---------------------------------------------------------------------------- FUNCTION D_M3_R2_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -2038,8 +2247,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2TH_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_R2_W2TH_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION M3_R2_WTH2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB 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 @@ -2056,8 +2265,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTH2',1,ZHOOK_HANDLE) END FUNCTION M3_R2_WTH2 !---------------------------------------------------------------------------- FUNCTION D_M3_R2_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -2076,8 +2285,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTH2_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_R2_WTH2_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION M3_R2_WTHR(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS @@ -2095,8 +2304,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTHR',1,ZHOOK_HANDLE) END FUNCTION M3_R2_WTHR !---------------------------------------------------------------------------- FUNCTION D_M3_R2_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -2115,8 +2324,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTHR_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION 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) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -2134,8 +2343,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_THR_WTHR_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION M3_THR_WR2(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS @@ -2153,8 +2362,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WR2',1,ZHOOK_HANDLE) END FUNCTION M3_THR_WR2 !---------------------------------------------------------------------------- FUNCTION D_M3_THR_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -2173,8 +2382,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION 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) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -2192,8 +2401,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDTDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_THR_WR2_O_DDTDZ !---------------------------------------------------------------------------- FUNCTION M3_THR_W2R(D,CSTURB,PREDTH1,PD,PLM,PLEPS,PTKE,PDTDZ) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM @@ -2210,8 +2419,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2R',1,ZHOOK_HANDLE) END FUNCTION M3_THR_W2R !---------------------------------------------------------------------------- FUNCTION D_M3_THR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDTDZ,PEMOIST) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD @@ -2231,8 +2440,8 @@ IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDRDZ',1,ZHOOK_HANDLE) END FUNCTION D_M3_THR_W2R_O_DDRDZ !---------------------------------------------------------------------------- FUNCTION D_M3_THR_W2R_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE) - TYPE(DIMPHYEX_t), INTENT(IN) :: D - TYPE(CSTURB_t), INTENT(IN) :: CSTURB + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD -- GitLab