diff --git a/src/common/turb/mode_prandtl.F90 b/src/common/turb/mode_prandtl.F90 index c38f60ff29e27d72d7cc9ecb21f60d0fb09b66b3..d636ed778ca145b79613220cc85f292e16d286d3 100644 --- a/src/common/turb/mode_prandtl.F90 +++ b/src/common/turb/mode_prandtl.F90 @@ -17,7 +17,6 @@ USE MODD_CTURB, ONLY : CSTURB_t USE MODD_DIMPHYEX, ONLY : DIMPHYEX_t USE MODD_PARAMETERS, ONLY : JPVEXT_TURB ! -USE MODI_SHUMAN, ONLY: MZM, MZF USE SHUMAN_PHY, ONLY: MZM_PHY,MZF_PHY USE MODE_GRADIENT_M_PHY IMPLICIT NONE @@ -152,12 +151,10 @@ USE MODD_FIELD, ONLY: TFIELDDATA, TYPEREAL USE MODD_IO, ONLY: TFILEDATA USE MODD_PARAMETERS, ONLY: JPVEXT_TURB ! -USE MODI_GRADIENT_M USE MODE_GRADIENT_M_PHY, ONLY: GX_M_M_PHY, GY_M_M_PHY USE MODE_EMOIST, ONLY : EMOIST USE MODE_ETHETA, ONLY : ETHETA -USE MODI_SHUMAN, ONLY: MZM -USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE +USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE_PHY ! IMPLICIT NONE ! @@ -181,45 +178,45 @@ LOGICAL, INTENT(IN) :: O2D ! Logical for 2D model version (modd_co LOGICAL, INTENT(IN) :: OFLAT ! Logical for zero ororography CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! Kind of turbulence param. TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDXX,PDYY,PDZZ,PDZX,PDZY +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDXX,PDYY,PDZZ,PDZX,PDZY ! metric coefficients ! -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTHVREF ! Virtual Potential Temp. +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTHVREF ! Virtual Potential Temp. ! of the reference state -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLOCPEXNM ! Lv(T)/Cp/Exner at t-1 -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PATHETA ! coefficients between -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PAMOIST ! s and Thetal and Rnp +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLOCPEXNM ! Lv(T)/Cp/Exner at t-1 +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PATHETA ! coefficients between +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PAMOIST ! s and Thetal and Rnp ! -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM ! Turbulent Mixing length -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS ! Dissipative length -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTHLM,PTKEM! Conservative Potential +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM ! Turbulent Mixing length +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS ! Dissipative length +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTHLM,PTKEM! Conservative Potential ! Temperature and TKE at t-1 -REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KRR), INTENT(IN) :: PRM ! Mixing ratios at t-1 +REAL, DIMENSION(D%NIJT,D%NKT,KRR), INTENT(IN) :: PRM ! Mixing ratios at t-1 ! with PRM(:,:,:,1) = cons. ! mixing ratio -REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV), INTENT(IN) :: PSVM ! Scalars at t-1 +REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(IN) :: PSVM ! Scalars at t-1 REAL, DIMENSION(MERGE(D%NIT,0,OCOMPUTE_SRC),& MERGE(D%NJT,0,OCOMPUTE_SRC),& MERGE(D%NKT,0,OCOMPUTE_SRC)), INTENT(IN) :: PSRCM ! s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3 ! ! -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PREDTH1 ! Redelsperger number R_theta -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PREDR1 ! Redelsperger number R_q -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PRED2TH3 ! Redelsperger number R*2_theta -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PRED2R3 ! Redelsperger number R*2_q -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PRED2THR3! Redelsperger number R*2_thq -REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV), INTENT(OUT):: PREDS1 ! Redelsperger number R_s -REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV), INTENT(OUT):: PRED2THS3! Redelsperger number R*2_thsv -REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV), INTENT(OUT):: PRED2RS3 ! Redelsperger number R*2_qsv -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PBLL_O_E! beta*Lk*Leps/tke -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PETHETA ! coefficient E_theta -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PEMOIST ! coefficient E_moist +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PREDTH1 ! Redelsperger number R_theta +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PREDR1 ! Redelsperger number R_q +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PRED2TH3 ! Redelsperger number R*2_theta +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PRED2R3 ! Redelsperger number R*2_q +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PRED2THR3! Redelsperger number R*2_thq +REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(OUT):: PREDS1 ! Redelsperger number R_s +REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(OUT):: PRED2THS3! Redelsperger number R*2_thsv +REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(OUT):: PRED2RS3 ! Redelsperger number R*2_qsv +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PBLL_O_E! beta*Lk*Leps/tke +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PETHETA ! coefficient E_theta +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PEMOIST ! coefficient E_moist ! ! ! 0.2 declaration of local variables ! -REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: & +REAL, DIMENSION(D%NIJT,D%NKT) :: & ZW1, ZW2, ZW3, & ! working variables ZWORK1,ZWORK2,ZWORK3,ZWORK4, ZWORK5, ZWORK6,ZWORK7, & @@ -228,7 +225,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: & ! INTEGER :: IKB ! vertical index value for the first inner mass point INTEGER :: IKE ! vertical index value for the last inner mass point -INTEGER:: JSV,JI,JJ,JK,IIB,IIE,IJB,IJE ! loop index +INTEGER:: JSV,JIJ,JK,IIJB,IIJE ! loop index INTEGER :: JLOOP REAL :: ZMINVAL @@ -242,32 +239,32 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('PRANDTL',0,ZHOOK_HANDLE) IF (OHARAT) THEN -PREDTH1(:,:,:)=0. -PREDR1(:,:,:)=0. -PRED2TH3(:,:,:)=0. -PRED2R3(:,:,:)=0. -PRED2THR3(:,:,:)=0. -PREDS1(:,:,:,:)=0. -PRED2THS3(:,:,:,:)=0. -PRED2RS3(:,:,:,:)=0. -PBLL_O_E(:,:,:)=0. +PREDTH1(:,:)=0. +PREDR1(:,:)=0. +PRED2TH3(:,:)=0. +PRED2R3(:,:)=0. +PRED2THR3(:,:)=0. +PREDS1(:,:,:)=0. +PRED2THS3(:,:,:)=0. +PRED2RS3(:,:,:)=0. +PBLL_O_E(:,:)=0. ENDIF ! IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB + + ! CALL ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC,ZWORK1) CALL EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN,ZWORK2) CALL MZM_PHY(D,ZWORK1,PETHETA) CALL MZM_PHY(D,ZWORK2,PEMOIST) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE) -PETHETA(IIB:IIE,IJB:IJE,D%NKA) = 2.*PETHETA(IIB:IIE,IJB:IJE,IKB) - PETHETA(IIB:IIE,IJB:IJE,IKB+D%NKL) -PEMOIST(IIB:IIE,IJB:IJE,D%NKA) = 2.*PEMOIST(IIB:IIE,IJB:IJE,IKB) - PEMOIST(IIB:IIE,IJB:IJE,IKB+D%NKL) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE) +!$mnh_expand_array(JIJ=IIJB:IIJE) +PETHETA(IIJB:IIJE,D%NKA) = 2.*PETHETA(IIJB:IIJE,IKB) - PETHETA(IIJB:IIJE,IKB+D%NKL) +PEMOIST(IIJB:IIJE,D%NKA) = 2.*PEMOIST(IIJB:IIJE,IKB) - PEMOIST(IIJB:IIJE,IKB+D%NKL) +!$mnh_end_expand_array(JIJ=IIJB:IIJE) ! !--------------------------------------------------------------------------- IF (.NOT. OHARAT) THEN @@ -275,39 +272,39 @@ IF (.NOT. OHARAT) THEN ! 1.3 1D Redelsperger numbers ! IF (OOCEAN) THEN - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = CST%XG * CST%XALPHAOC * PLM(IIB:IIE,IJB:IJE,1:D%NKT) & - * PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) / PTKEM(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = CST%XG * CST%XALPHAOC * PLM(IIJB:IIJE,1:D%NKT) & + * PLEPS(IIJB:IIJE,1:D%NKT) / PTKEM(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ELSE - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = CST%XG / PTHVREF(IIB:IIE,IJB:IJE,1:D%NKT) * PLM(IIB:IIE,IJB:IJE,1:D%NKT) & - * PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) / PTKEM(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = CST%XG / PTHVREF(IIJB:IIJE,1:D%NKT) * PLM(IIJB:IIJE,1:D%NKT) & + * PLEPS(IIJB:IIJE,1:D%NKT) / PTKEM(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) END IF ! CALL MZM_PHY(D,ZWORK1,PBLL_O_E) CALL GZ_M_W_PHY(D,PTHLM,PDZZ,ZWORK1) ! IF (OOCEAN) THEN - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)= CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PREDR1(:,:,:) = 0. + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PREDTH1(IIJB:IIJE,1:D%NKT)= CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT)*ZWORK1(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PREDR1(:,:) = 0. ELSE IF (KRR /= 0) THEN ! moist case - CALL GZ_M_W_PHY(D,PRM(:,:,:,1),PDZZ,ZWORK2) - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)= CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) * PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) & - * ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) - PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) = CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) * PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT) & - * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + CALL GZ_M_W_PHY(D,PRM(:,:,1),PDZZ,ZWORK2) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PREDTH1(IIJB:IIJE,1:D%NKT)= CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT) * PETHETA(IIJB:IIJE,1:D%NKT) & + * ZWORK1(IIJB:IIJE,1:D%NKT) + PREDR1(IIJB:IIJE,1:D%NKT) = CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT) * PEMOIST(IIJB:IIJE,1:D%NKT) & + * ZWORK2(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ELSE ! dry case - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)= CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) * ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) - PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) = 0. - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PREDTH1(IIJB:IIJE,1:D%NKT)= CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT) * ZWORK1(IIJB:IIJE,1:D%NKT) + PREDR1(IIJB:IIJE,1:D%NKT) = 0. + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) END IF END IF ! @@ -317,54 +314,52 @@ END IF ZMINVAL = (1.-1./CSTURB%XPHI_LIM) ! DO JK=1,D%NKT - DO JJ=IJB,IJE - DO JI=IIB,IIE - ZW1(JI,JJ,JK) = 1. - ZW2(JI,JJ,JK) = 1. + DO JIJ=IIJB,IIJE + ZW1(JIJ,JK) = 1. + ZW2(JIJ,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)) + IF (PREDTH1(JIJ,JK)+PREDR1(JIJ,JK)<-ZMINVAL)THEN + ZW1(JIJ,JK) = (-ZMINVAL) / (PREDTH1(JIJ,JK)+PREDR1(JIJ,JK)) ENDIF ! - IF (PREDTH1(JI,JJ,JK)<-ZMINVAL)THEN - ZW2(JI,JJ,JK) = (-ZMINVAL) / (PREDTH1(JI,JJ,JK)) + IF (PREDTH1(JIJ,JK)<-ZMINVAL)THEN + ZW2(JIJ,JK) = (-ZMINVAL) / (PREDTH1(JIJ,JK)) ENDIF - ZW2(JI,JJ,JK) = MIN(ZW1(JI,JJ,JK),ZW2(JI,JJ,JK)) + ZW2(JIJ,JK) = MIN(ZW1(JIJ,JK),ZW2(JIJ,JK)) ! - ZW1(JI,JJ,JK) = 1. - IF (PREDR1(JI,JJ,JK)<-ZMINVAL)THEN - ZW1(JI,JJ,JK) = (-ZMINVAL) / (PREDR1(JI,JJ,JK)) + ZW1(JIJ,JK) = 1. + IF (PREDR1(JIJ,JK)<-ZMINVAL)THEN + ZW1(JIJ,JK) = (-ZMINVAL) / (PREDR1(JIJ,JK)) ENDIF - ZW1(JI,JJ,JK) = MIN(ZW2(JI,JJ,JK),ZW1(JI,JJ,JK)) + ZW1(JIJ,JK) = MIN(ZW2(JIJ,JK),ZW1(JIJ,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) + PBLL_O_E(JIJ,JK) = PBLL_O_E(JIJ,JK) * ZW1(JIJ,JK) + PREDTH1(JIJ,JK) = PREDTH1(JIJ,JK) * ZW1(JIJ,JK) + PREDR1(JIJ,JK) = PREDR1(JIJ,JK) * ZW1(JIJ,JK) ! ! 4. Threshold for very small (in absolute value) Redelperger numbers ! ---------------------------------------------------------------- ! - IF(PREDTH1(JI,JJ,JK) < 0.) THEN - ZW2(JI,JJ,JK)=-1. + IF(PREDTH1(JIJ,JK) < 0.) THEN + ZW2(JIJ,JK)=-1. ELSE - ZW2(JI,JJ,JK)=1. + ZW2(JIJ,JK)=1. END IF - PREDTH1(JI,JJ,JK)= ZW2(JI,JJ,JK) * MAX(1.E-30, ZW2(JI,JJ,JK)*PREDTH1(JI,JJ,JK)) + PREDTH1(JIJ,JK)= ZW2(JIJ,JK) * MAX(1.E-30, ZW2(JIJ,JK)*PREDTH1(JIJ,JK)) ! IF (KRR /= 0) THEN ! moist case - IF(PREDR1(JI,JJ,JK) < 0.) THEN - ZW2(JI,JJ,JK)=-1. + IF(PREDR1(JIJ,JK) < 0.) THEN + ZW2(JIJ,JK)=-1. ELSE - ZW2(JI,JJ,JK)=1. + ZW2(JIJ,JK)=1. END IF - PREDR1(JI,JJ,JK)= ZW2(JI,JJ,JK) * MAX(1.E-30, ZW2(JI,JJ,JK)*PREDR1(JI,JJ,JK)) + PREDR1(JIJ,JK)= ZW2(JIJ,JK) * MAX(1.E-30, ZW2(JIJ,JK)*PREDR1(JIJ,JK)) END IF ENDDO - ENDDO ENDDO ! ! @@ -372,24 +367,22 @@ ENDDO ! ! For the scalar variables DO JSV=1,KSV - CALL GZ_M_W_PHY(D,PSVM(:,:,:,JSV),PDZZ,ZWORK1) - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PREDS1(IIB:IIE,IJB:IJE,1:D%NKT,JSV)=CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + CALL GZ_M_W_PHY(D,PSVM(:,:,JSV),PDZZ,ZWORK1) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PREDS1(IIJB:IIJE,1:D%NKT,JSV)=CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT)*ZWORK1(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) END DO ! DO JSV=1,KSV DO JK=1,D%NKT - DO JJ=IJB,IJE - DO JI=IIB,IIE - IF(PREDS1(JI,JJ,JK,JSV) < 0.) THEN - ZW2(JI,JJ,JK)=-1. + DO JIJ=IIJB,IIJE + IF(PREDS1(JIJ,JK,JSV) < 0.) THEN + ZW2(JIJ,JK)=-1. ELSE - ZW2(JI,JJ,JK)=1. + ZW2(JIJ,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)) + PREDS1(JIJ,JK,JSV)= ZW2(JIJ,JK) * MAX(1.E-30, ZW2(JIJ,JK)*PREDS1(JIJ,JK,JSV)) ENDDO - ENDDO ENDDO ENDDO ! @@ -401,61 +394,61 @@ ENDDO IF(HTURBDIM=='1DIM') THEN ! 1D case ! ! - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT) = PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)**2 + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PRED2TH3(IIJB:IIJE,1:D%NKT) = PREDTH1(IIJB:IIJE,1:D%NKT)**2 ! - PRED2R3(IIB:IIE,IJB:IJE,1:D%NKT) = PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) **2 + PRED2R3(IIJB:IIJE,1:D%NKT) = PREDR1(IIJB:IIJE,1:D%NKT) **2 ! - PRED2THR3(IIB:IIE,IJB:IJE,1:D%NKT) = PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) * PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + PRED2THR3(IIJB:IIJE,1:D%NKT) = PREDTH1(IIJB:IIJE,1:D%NKT) * PREDR1(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! ELSE IF (O2D) THEN ! 3D case in a 2D model ! CALL GX_M_M_PHY(D,OFLAT,PTHLM,PDXX,PDZZ,PDZX,ZGXMM_PTH) - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZGXMM_PTH(IIB:IIE,IJB:IJE,1:D%NKT)**2 - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZGXMM_PTH(IIJB:IIJE,1:D%NKT)**2 + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK2) ! IF (KRR /= 0) THEN ! moist 3D case - CALL GX_M_M_PHY(D,OFLAT,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZGXMM_PRM) - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZGXMM_PRM(IIB:IIE,IJB:IJE,1:D%NKT)**2 - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + CALL GX_M_M_PHY(D,OFLAT,PRM(:,:,1),PDXX,PDZZ,PDZX,ZGXMM_PRM) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZGXMM_PRM(IIJB:IIJE,1:D%NKT)**2 + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK3) ! - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZGXMM_PTH(IIB:IIE,IJB:IJE,1:D%NKT) * ZGXMM_PRM(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZGXMM_PTH(IIJB:IIJE,1:D%NKT) * ZGXMM_PRM(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK4) ! - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT)= PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)**2+(CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) & - *PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) )**2 * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PRED2TH3(IIJB:IIJE,1:D%NKT)= PREDTH1(IIJB:IIJE,1:D%NKT)**2+(CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT) & + *PETHETA(IIJB:IIJE,1:D%NKT) )**2 * ZWORK2(IIJB:IIJE,1:D%NKT) ! - PRED2R3(IIB:IIE,IJB:IJE,1:D%NKT)= PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)**2 + (CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) & - * PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT))**2 * ZWORK3(IIB:IIE,IJB:IJE,1:D%NKT) + PRED2R3(IIJB:IIJE,1:D%NKT)= PREDR1(IIJB:IIJE,1:D%NKT)**2 + (CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT) & + * PEMOIST(IIJB:IIJE,1:D%NKT))**2 * ZWORK3(IIJB:IIJE,1:D%NKT) ! - PRED2THR3(IIB:IIE,IJB:IJE,1:D%NKT)= PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) * PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) + CSTURB%XCTV**2 & - * PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)**2 & - * PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT) * PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) & - * ZWORK4(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + PRED2THR3(IIJB:IIJE,1:D%NKT)= PREDR1(IIJB:IIJE,1:D%NKT) * PREDTH1(IIJB:IIJE,1:D%NKT) + CSTURB%XCTV**2 & + * PBLL_O_E(IIJB:IIJE,1:D%NKT)**2 & + * PEMOIST(IIJB:IIJE,1:D%NKT) * PETHETA(IIJB:IIJE,1:D%NKT) & + * ZWORK4(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! - PRED2TH3(IIB:IIE,IJB:IJE,IKB)=PRED2TH3(IIB:IIE,IJB:IJE,IKB+D%NKL) - PRED2R3(IIB:IIE,IJB:IJE,IKB)=PRED2R3(IIB:IIE,IJB:IJE,IKB+D%NKL) - PRED2THR3(IIB:IIE,IJB:IJE,IKB)=PRED2THR3(IIB:IIE,IJB:IJE,IKB+D%NKL) + PRED2TH3(IIJB:IIJE,IKB)=PRED2TH3(IIJB:IIJE,IKB+D%NKL) + PRED2R3(IIJB:IIJE,IKB)=PRED2R3(IIJB:IIJE,IKB+D%NKL) + PRED2THR3(IIJB:IIJE,IKB)=PRED2THR3(IIJB:IIJE,IKB+D%NKL) ! ELSE ! dry 3D case in a 2D model - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT) = PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)**2 + CSTURB%XCTV**2 & - * PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)**2 * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PRED2TH3(IIB:IIE,IJB:IJE,IKB)=PRED2TH3(IIB:IIE,IJB:IJE,IKB+D%NKL) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PRED2TH3(IIJB:IIJE,1:D%NKT) = PREDTH1(IIJB:IIJE,1:D%NKT)**2 + CSTURB%XCTV**2 & + * PBLL_O_E(IIJB:IIJE,1:D%NKT)**2 * ZWORK2(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PRED2TH3(IIJB:IIJE,IKB)=PRED2TH3(IIJB:IIJE,IKB+D%NKL) ! - PRED2R3(IIB:IIE,IJB:IJE,1:D%NKT) = 0. + PRED2R3(IIJB:IIJE,1:D%NKT) = 0. ! - PRED2THR3(IIB:IIE,IJB:IJE,1:D%NKT) = 0. + PRED2THR3(IIJB:IIJE,1:D%NKT) = 0. ! END IF ! @@ -463,53 +456,53 @@ ELSE ! 3D case in a 3D model ! CALL GX_M_M_PHY(D,OFLAT,PTHLM,PDXX,PDZZ,PDZX,ZGXMM_PTH) CALL GY_M_M_PHY(D,OFLAT,PTHLM,PDYY,PDZZ,PDZY,ZGYMM_PTH) - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZGXMM_PTH(IIB:IIE,IJB:IJE,1:D%NKT)**2 + ZGYMM_PTH(IIB:IIE,IJB:IJE,1:D%NKT)**2 - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZGXMM_PTH(IIJB:IIJE,1:D%NKT)**2 + ZGYMM_PTH(IIJB:IIJE,1:D%NKT)**2 + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK2) ! IF (KRR /= 0) THEN ! moist 3D case - CALL GX_M_M_PHY(D,OFLAT,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZGXMM_PRM) - CALL GY_M_M_PHY(D,OFLAT,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZGYMM_PRM) - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZGXMM_PRM(IIB:IIE,IJB:IJE,1:D%NKT)**2 + ZGYMM_PRM(IIB:IIE,IJB:IJE,1:D%NKT)**2 - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + CALL GX_M_M_PHY(D,OFLAT,PRM(:,:,1),PDXX,PDZZ,PDZX,ZGXMM_PRM) + CALL GY_M_M_PHY(D,OFLAT,PRM(:,:,1),PDYY,PDZZ,PDZY,ZGYMM_PRM) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZGXMM_PRM(IIJB:IIJE,1:D%NKT)**2 + ZGYMM_PRM(IIJB:IIJE,1:D%NKT)**2 + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK3) ! - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZGXMM_PRM(IIB:IIE,IJB:IJE,1:D%NKT) * ZGXMM_PTH(IIB:IIE,IJB:IJE,1:D%NKT) & - + ZGYMM_PRM(IIB:IIE,IJB:IJE,1:D%NKT) * ZGYMM_PTH(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZGXMM_PRM(IIJB:IIJE,1:D%NKT) * ZGXMM_PTH(IIJB:IIJE,1:D%NKT) & + + ZGYMM_PRM(IIJB:IIJE,1:D%NKT) * ZGYMM_PTH(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK4) ! - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT)= PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)**2 + ( CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) & - * PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) )**2 * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PRED2TH3(IIJB:IIJE,1:D%NKT)= PREDTH1(IIJB:IIJE,1:D%NKT)**2 + ( CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT) & + * PETHETA(IIJB:IIJE,1:D%NKT) )**2 * ZWORK2(IIJB:IIJE,1:D%NKT) ! - PRED2R3(IIB:IIE,IJB:IJE,1:D%NKT)= PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)**2 + (CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) & - * PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT))**2 * ZWORK3(IIB:IIE,IJB:IJE,1:D%NKT) + PRED2R3(IIJB:IIJE,1:D%NKT)= PREDR1(IIJB:IIJE,1:D%NKT)**2 + (CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT) & + * PEMOIST(IIJB:IIJE,1:D%NKT))**2 * ZWORK3(IIJB:IIJE,1:D%NKT) ! - PRED2THR3(IIB:IIE,IJB:IJE,1:D%NKT)= PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) * PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) + CSTURB%XCTV**2 & - * PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)**2 * & - PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT) * PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) * ZWORK4(IIB:IIE,IJB:IJE,1:D%NKT) + PRED2THR3(IIJB:IIJE,1:D%NKT)= PREDR1(IIJB:IIJE,1:D%NKT) * PREDTH1(IIJB:IIJE,1:D%NKT) + CSTURB%XCTV**2 & + * PBLL_O_E(IIJB:IIJE,1:D%NKT)**2 * & + PEMOIST(IIJB:IIJE,1:D%NKT) * PETHETA(IIJB:IIJE,1:D%NKT) * ZWORK4(IIJB:IIJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! - PRED2TH3(IIB:IIE,IJB:IJE,IKB)=PRED2TH3(IIB:IIE,IJB:IJE,IKB+D%NKL) - PRED2R3(IIB:IIE,IJB:IJE,IKB)=PRED2R3(IIB:IIE,IJB:IJE,IKB+D%NKL) - PRED2THR3(IIB:IIE,IJB:IJE,IKB)=PRED2THR3(IIB:IIE,IJB:IJE,IKB+D%NKL) + PRED2TH3(IIJB:IIJE,IKB)=PRED2TH3(IIJB:IIJE,IKB+D%NKL) + PRED2R3(IIJB:IIJE,IKB)=PRED2R3(IIJB:IIJE,IKB+D%NKL) + PRED2THR3(IIJB:IIJE,IKB)=PRED2THR3(IIJB:IIJE,IKB+D%NKL) ! ELSE ! dry 3D case in a 3D model - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT) = PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)**2 + CSTURB%XCTV**2 & - * PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)**2 * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PRED2TH3(IIJB:IIJE,1:D%NKT) = PREDTH1(IIJB:IIJE,1:D%NKT)**2 + CSTURB%XCTV**2 & + * PBLL_O_E(IIJB:IIJE,1:D%NKT)**2 * ZWORK2(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! - PRED2TH3(IIB:IIE,IJB:IJE,IKB)=PRED2TH3(IIB:IIE,IJB:IJE,IKB+D%NKL) + PRED2TH3(IIJB:IIJE,IKB)=PRED2TH3(IIJB:IIJE,IKB+D%NKL) ! - PRED2R3(IIB:IIE,IJB:IJE,1:D%NKT) = 0. + PRED2R3(IIJB:IIJE,1:D%NKT) = 0. ! - PRED2THR3(IIB:IIE,IJB:IJE,1:D%NKT) = 0. + PRED2THR3(IIJB:IIJE,1:D%NKT) = 0. ! END IF ! @@ -524,128 +517,128 @@ DO JSV=1,KSV ! IF(HTURBDIM=='1DIM') THEN ! 1D case - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PRED2THS3(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = PREDS1(IIB:IIE,IJB:IJE,1:D%NKT,JSV) * PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PRED2THS3(IIJB:IIJE,1:D%NKT,JSV) = PREDS1(IIJB:IIJE,1:D%NKT,JSV) * PREDTH1(IIJB:IIJE,1:D%NKT) IF (KRR /= 0) THEN - PRED2RS3(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) *PREDS1(IIB:IIE,IJB:IJE,1:D%NKT,JSV) + PRED2RS3(IIJB:IIJE,1:D%NKT,JSV) = PREDR1(IIJB:IIJE,1:D%NKT) *PREDS1(IIJB:IIJE,1:D%NKT,JSV) ELSE - PRED2RS3(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = 0. + PRED2RS3(IIJB:IIJE,1:D%NKT,JSV) = 0. END IF - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! ELSE IF (O2D) THEN ! 3D case in a 2D model ! IF (OOCEAN) THEN - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (CST%XG *CST%XALPHAOC * PLM(IIB:IIE,IJB:IJE,1:D%NKT) * PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & - / PTKEM(IIB:IIE,IJB:IJE,1:D%NKT))**2 - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = (CST%XG *CST%XALPHAOC * PLM(IIJB:IIJE,1:D%NKT) * PLEPS(IIJB:IIJE,1:D%NKT) & + / PTKEM(IIJB:IIJE,1:D%NKT))**2 + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK2) IF (KRR /= 0) THEN - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZW1(IIB:IIE,IJB:IJE,1:D%NKT) = ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) * PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZW1(IIJB:IIJE,1:D%NKT) = ZWORK2(IIJB:IIJE,1:D%NKT) * PETHETA(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ELSE ZW1 = ZWORK2 END IF ELSE - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (CST%XG / PTHVREF(IIB:IIE,IJB:IJE,1:D%NKT) * PLM(IIB:IIE,IJB:IJE,1:D%NKT) & - * PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) / PTKEM(IIB:IIE,IJB:IJE,1:D%NKT))**2 - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = (CST%XG / PTHVREF(IIJB:IIJE,1:D%NKT) * PLM(IIJB:IIJE,1:D%NKT) & + * PLEPS(IIJB:IIJE,1:D%NKT) / PTKEM(IIJB:IIJE,1:D%NKT))**2 + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZW1) ! - CALL GX_M_M_PHY(D,OFLAT,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZGXMM_PSV) + CALL GX_M_M_PHY(D,OFLAT,PSVM(:,:,JSV),PDXX,PDZZ,PDZX,ZGXMM_PSV) CALL GX_M_M_PHY(D,OFLAT,PTHLM,PDXX,PDZZ,PDZX,ZGXMM_PTH) - CALL GX_M_M_PHY(D,OFLAT,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZGXMM_PRM) + CALL GX_M_M_PHY(D,OFLAT,PRM(:,:,1),PDXX,PDZZ,PDZX,ZGXMM_PRM) ! - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZGXMM_PSV(IIB:IIE,IJB:IJE,1:D%NKT) * ZGXMM_PTH(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZGXMM_PSV(IIJB:IIJE,1:D%NKT) * ZGXMM_PTH(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK2) ! - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZGXMM_PSV(IIB:IIE,IJB:IJE,1:D%NKT) * ZGXMM_PRM(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZGXMM_PSV(IIJB:IIJE,1:D%NKT) * ZGXMM_PRM(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK3) ! - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) IF (KRR /= 0) THEN - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZW1(IIB:IIE,IJB:IJE,1:D%NKT)*PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZW1(IIJB:IIJE,1:D%NKT)*PETHETA(IIJB:IIJE,1:D%NKT) ELSE - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZW1(IIB:IIE,IJB:IJE,1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZW1(IIJB:IIJE,1:D%NKT) END IF - PRED2THS3(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) * PREDS1(IIB:IIE,IJB:IJE,1:D%NKT,JSV) + & - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) + PRED2THS3(IIJB:IIJE,1:D%NKT,JSV) = PREDTH1(IIJB:IIJE,1:D%NKT) * PREDS1(IIJB:IIJE,1:D%NKT,JSV) + & + ZWORK1(IIJB:IIJE,1:D%NKT) * ZWORK2(IIJB:IIJE,1:D%NKT) ! IF (KRR /= 0) THEN - PRED2RS3(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) * PREDS1(IIB:IIE,IJB:IJE,1:D%NKT,JSV) + & - ZW1(IIB:IIE,IJB:IJE,1:D%NKT) * PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT) * ZWORK3(IIB:IIE,IJB:IJE,1:D%NKT) + PRED2RS3(IIJB:IIJE,1:D%NKT,JSV) = PREDR1(IIJB:IIJE,1:D%NKT) * PREDS1(IIJB:IIJE,1:D%NKT,JSV) + & + ZW1(IIJB:IIJE,1:D%NKT) * PEMOIST(IIJB:IIJE,1:D%NKT) * ZWORK3(IIJB:IIJE,1:D%NKT) ELSE - PRED2RS3(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = 0. + PRED2RS3(IIJB:IIJE,1:D%NKT,JSV) = 0. END IF - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) END IF ! ELSE ! 3D case in a 3D model ! IF (OOCEAN) THEN - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (CST%XG *CST%XALPHAOC * PLM(IIB:IIE,IJB:IJE,1:D%NKT) * PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & - / PTKEM(IIB:IIE,IJB:IJE,1:D%NKT))**2 - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = (CST%XG *CST%XALPHAOC * PLM(IIJB:IIJE,1:D%NKT) * PLEPS(IIJB:IIJE,1:D%NKT) & + / PTKEM(IIJB:IIJE,1:D%NKT))**2 + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK2) IF (KRR /= 0) THEN - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZW1(IIB:IIE,IJB:IJE,1:D%NKT) = ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) * PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZW1(IIJB:IIJE,1:D%NKT) = ZWORK2(IIJB:IIJE,1:D%NKT) * PETHETA(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ELSE ZW1 = ZWORK2 END IF ELSE - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (CST%XG / PTHVREF(IIB:IIE,IJB:IJE,1:D%NKT) * PLM(IIB:IIE,IJB:IJE,1:D%NKT) & - * PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) / PTKEM(IIB:IIE,IJB:IJE,1:D%NKT))**2 - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = (CST%XG / PTHVREF(IIJB:IIJE,1:D%NKT) * PLM(IIJB:IIJE,1:D%NKT) & + * PLEPS(IIJB:IIJE,1:D%NKT) / PTKEM(IIJB:IIJE,1:D%NKT))**2 + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZW1) ! - CALL GX_M_M_PHY(D,OFLAT,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZGXMM_PSV) + CALL GX_M_M_PHY(D,OFLAT,PSVM(:,:,JSV),PDXX,PDZZ,PDZX,ZGXMM_PSV) CALL GX_M_M_PHY(D,OFLAT,PTHLM,PDXX,PDZZ,PDZX,ZGXMM_PTH) - CALL GX_M_M_PHY(D,OFLAT,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZGXMM_PRM) - CALL GY_M_M_PHY(D,OFLAT,PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY,ZGYMM_PSV) + CALL GX_M_M_PHY(D,OFLAT,PRM(:,:,1),PDXX,PDZZ,PDZX,ZGXMM_PRM) + CALL GY_M_M_PHY(D,OFLAT,PSVM(:,:,JSV),PDYY,PDZZ,PDZY,ZGYMM_PSV) CALL GY_M_M_PHY(D,OFLAT,PTHLM,PDYY,PDZZ,PDZY,ZGYMM_PTH) - CALL GY_M_M_PHY(D,OFLAT,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZGYMM_PRM) + CALL GY_M_M_PHY(D,OFLAT,PRM(:,:,1),PDYY,PDZZ,PDZY,ZGYMM_PRM) ! - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZGXMM_PSV(IIB:IIE,IJB:IJE,1:D%NKT) * ZGXMM_PTH(IIB:IIE,IJB:IJE,1:D%NKT) & - + ZGYMM_PSV(IIB:IIE,IJB:IJE,1:D%NKT) * ZGYMM_PTH(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZGXMM_PSV(IIJB:IIJE,1:D%NKT) * ZGXMM_PTH(IIJB:IIJE,1:D%NKT) & + + ZGYMM_PSV(IIJB:IIJE,1:D%NKT) * ZGYMM_PTH(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK2) ! - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZGXMM_PSV(IIB:IIE,IJB:IJE,1:D%NKT) * ZGXMM_PRM(IIB:IIE,IJB:IJE,1:D%NKT) & - + ZGYMM_PSV(IIB:IIE,IJB:IJE,1:D%NKT) * ZGYMM_PRM(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZGXMM_PSV(IIJB:IIJE,1:D%NKT) * ZGXMM_PRM(IIJB:IIJE,1:D%NKT) & + + ZGYMM_PSV(IIJB:IIJE,1:D%NKT) * ZGYMM_PRM(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK3) ! IF (KRR /= 0) THEN - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZW1(IIB:IIE,IJB:IJE,1:D%NKT)*PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZW1(IIJB:IIJE,1:D%NKT)*PETHETA(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ELSE - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = ZW1(IIB:IIE,IJB:IJE,1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = ZW1(IIJB:IIJE,1:D%NKT) END IF - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PRED2THS3(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) * PREDS1(IIB:IIE,IJB:IJE,1:D%NKT,JSV) + & - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT)*ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PRED2THS3(IIJB:IIJE,1:D%NKT,JSV) = PREDTH1(IIJB:IIJE,1:D%NKT) * PREDS1(IIJB:IIJE,1:D%NKT,JSV) + & + ZWORK1(IIJB:IIJE,1:D%NKT)*ZWORK2(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) IF (KRR /= 0) THEN - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PRED2RS3(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) * PREDS1(IIB:IIE,IJB:IJE,1:D%NKT,JSV) + & - ZW1(IIB:IIE,IJB:IJE,1:D%NKT) * PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT) * ZWORK3(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PRED2RS3(IIJB:IIJE,1:D%NKT,JSV) = PREDR1(IIJB:IIJE,1:D%NKT) * PREDS1(IIJB:IIJE,1:D%NKT,JSV) + & + ZW1(IIJB:IIJE,1:D%NKT) * PEMOIST(IIJB:IIJE,1:D%NKT) * ZWORK3(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ELSE - PRED2RS3(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = 0. + PRED2RS3(IIJB:IIJE,1:D%NKT,JSV) = 0. END IF END IF ! @@ -671,7 +664,7 @@ IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN TZFIELD%NTYPE = TYPEREAL TZFIELD%NDIMS = 3 TZFIELD%LTIMEDEP = .TRUE. - CALL IO_Field_write(TPFILE,TZFIELD,PREDTH1) + CALL IO_FIELD_WRITE_PHY(D,TPFILE,TZFIELD,PREDTH1) ! ! stores the RED_R1 TZFIELD%CMNHNAME = 'RED_R1' @@ -684,7 +677,7 @@ IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN TZFIELD%NTYPE = TYPEREAL TZFIELD%NDIMS = 3 TZFIELD%LTIMEDEP = .TRUE. - CALL IO_Field_write(TPFILE,TZFIELD,PREDR1) + CALL IO_FIELD_WRITE_PHY(D,TPFILE,TZFIELD,PREDR1) ! ! stores the RED2_TH3 TZFIELD%CMNHNAME = 'RED2_TH3' @@ -697,7 +690,7 @@ IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN TZFIELD%NTYPE = TYPEREAL TZFIELD%NDIMS = 3 TZFIELD%LTIMEDEP = .TRUE. - CALL IO_Field_write(TPFILE,TZFIELD,PRED2TH3) + CALL IO_FIELD_WRITE_PHY(D,TPFILE,TZFIELD,PRED2TH3) ! ! stores the RED2_R3 TZFIELD%CMNHNAME = 'RED2_R3' @@ -710,7 +703,7 @@ IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN TZFIELD%NTYPE = TYPEREAL TZFIELD%NDIMS = 3 TZFIELD%LTIMEDEP = .TRUE. - CALL IO_Field_write(TPFILE,TZFIELD,PRED2R3) + CALL IO_FIELD_WRITE_PHY(D,TPFILE,TZFIELD,PRED2R3) ! ! stores the RED2_THR3 TZFIELD%CMNHNAME = 'RED2_THR3' @@ -723,7 +716,7 @@ IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN TZFIELD%NTYPE = TYPEREAL TZFIELD%NDIMS = 3 TZFIELD%LTIMEDEP = .TRUE. - CALL IO_Field_write(TPFILE,TZFIELD,PRED2THR3) + CALL IO_FIELD_WRITE_PHY(D,TPFILE,TZFIELD,PRED2THR3) ! END IF ! @@ -737,103 +730,103 @@ SUBROUTINE SMOOTH_TURB_FUNCT(D,CSTURB,PPHI3,PF_LIM,PF) ! TYPE(CSTURB_t), INTENT(IN) :: CSTURB TYPE(DIMPHYEX_t), INTENT(IN) :: D -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPHI3 ! Phi3 -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PF_LIM ! Value of F when Phi3 is +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PPHI3 ! Phi3 +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PF_LIM ! Value of F when Phi3 is ! ! larger than Phi_lim -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(INOUT) :: PF ! function F to smooth +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(INOUT) :: PF ! function F to smooth ! -REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZCOEF -INTEGER :: JI,JJ,JK, IIB,IIE,IJB,IJE +REAL, DIMENSION(D%NIJT,D%NKT) :: ZCOEF +INTEGER :: JIJ,JK, IIJB,IIJE ! !* adds a artificial correction to smooth the function near the discontinuity ! point at Phi3 = Phi_lim ! This smoothing is applied between 0.9*phi_lim (=2.7) and Phi_lim (=3) ! Note that in the Boundary layer, phi is usually between 0.8 and 1 ! -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB + + ! -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZCOEF(IIB:IIE,IJB:IJE,1:D%NKT) = MAX(MIN(( 10.*(1.-PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XPHI_LIM)) ,1.), 0.) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZCOEF(IIJB:IIJE,1:D%NKT) = MAX(MIN(( 10.*(1.-PPHI3(IIJB:IIJE,1:D%NKT)/CSTURB%XPHI_LIM)) ,1.), 0.) ! -PF(IIB:IIE,IJB:IJE,1:D%NKT) = ZCOEF(IIB:IIE,IJB:IJE,1:D%NKT) * PF(IIB:IIE,IJB:IJE,1:D%NKT) & - + (1.-ZCOEF(IIB:IIE,IJB:IJE,1:D%NKT)) * PF_LIM(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +PF(IIJB:IIJE,1:D%NKT) = ZCOEF(IIJB:IIJE,1:D%NKT) * PF(IIJB:IIJE,1:D%NKT) & + + (1.-ZCOEF(IIJB:IIJE,1:D%NKT)) * PF_LIM(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! END SUBROUTINE SMOOTH_TURB_FUNCT !---------------------------------------------------------------------------- SUBROUTINE PHI3(D,CSTURB,PREDTH1,PREDR1,PRED2TH3,PRED2R3,PRED2THR3,HTURBDIM,OUSERV,PPHI3) TYPE(CSTURB_t), INTENT(IN) :: CSTURB TYPE(DIMPHYEX_t), INTENT(IN) :: D - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2TH3 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2R3 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2TH3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2R3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2THR3 CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PPHI3 + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PPHI3 ! - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZW1, ZW2 - INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT) :: ZW1, ZW2 + INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PHI3',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB + + ! IF (HTURBDIM=='3DIM') THEN !* 3DIM case - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) IF (OUSERV) THEN - ZW1(IIB:IIE,IJB:IJE,1:D%NKT) = 1. + 1.5* (PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) + & - ( 0.5 * (PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)**2+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)**2) & - + PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) * PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) & + ZW1(IIJB:IIJE,1:D%NKT) = 1. + 1.5* (PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)) + & + ( 0.5 * (PREDTH1(IIJB:IIJE,1:D%NKT)**2+PREDR1(IIJB:IIJE,1:D%NKT)**2) & + + PREDTH1(IIJB:IIJE,1:D%NKT) * PREDR1(IIJB:IIJE,1:D%NKT) & ) - ZW2(IIB:IIE,IJB:IJE,1:D%NKT) = 0.5 * (PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT)-PRED2R3(IIB:IIE,IJB:IJE,1:D%NKT)) + ZW2(IIJB:IIJE,1:D%NKT) = 0.5 * (PRED2TH3(IIJB:IIJE,1:D%NKT)-PRED2R3(IIJB:IIJE,1:D%NKT)) - PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)= 1. - & - ( ( (1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) * & - (PRED2THR3(IIB:IIE,IJB:IJE,1:D%NKT) + PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT)) / PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) & - ) + ZW2(IIB:IIE,IJB:IJE,1:D%NKT) & - ) / ZW1(IIB:IIE,IJB:IJE,1:D%NKT) + PPHI3(IIJB:IIJE,1:D%NKT)= 1. - & + ( ( (1.+PREDR1(IIJB:IIJE,1:D%NKT)) * & + (PRED2THR3(IIJB:IIJE,1:D%NKT) + PRED2TH3(IIJB:IIJE,1:D%NKT)) / PREDTH1(IIJB:IIJE,1:D%NKT) & + ) + ZW2(IIJB:IIJE,1:D%NKT) & + ) / ZW1(IIJB:IIJE,1:D%NKT) ELSE - ZW1(IIB:IIE,IJB:IJE,1:D%NKT) = 1. + 1.5* PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) + & - 0.5* PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)**2 + ZW1(IIJB:IIJE,1:D%NKT) = 1. + 1.5* PREDTH1(IIJB:IIJE,1:D%NKT) + & + 0.5* PREDTH1(IIJB:IIJE,1:D%NKT)**2 - ZW2(IIB:IIE,IJB:IJE,1:D%NKT) = 0.5* PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT) + ZW2(IIJB:IIJE,1:D%NKT) = 0.5* PRED2TH3(IIJB:IIJE,1:D%NKT) - PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)= 1. - & - (PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT) / PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) + ZW2(IIB:IIE,IJB:IJE,1:D%NKT)) & - / ZW1(IIB:IIE,IJB:IJE,1:D%NKT) + PPHI3(IIJB:IIJE,1:D%NKT)= 1. - & + (PRED2TH3(IIJB:IIJE,1:D%NKT) / PREDTH1(IIJB:IIJE,1:D%NKT) + ZW2(IIJB:IIJE,1:D%NKT)) & + / ZW1(IIJB:IIJE,1:D%NKT) END IF - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) - !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - WHERE( PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) <= 0. .OR. PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) > CSTURB%XPHI_LIM ) - PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) = CSTURB%XPHI_LIM + !$mnh_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) + WHERE( PPHI3(IIJB:IIJE,1:D%NKT) <= 0. .OR. PPHI3(IIJB:IIJE,1:D%NKT) > CSTURB%XPHI_LIM ) + PPHI3(IIJB:IIJE,1:D%NKT) = CSTURB%XPHI_LIM END WHERE - !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) ELSE !* 1DIM case - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) IF (OUSERV) THEN - PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)= 1./(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) + PPHI3(IIJB:IIJE,1:D%NKT)= 1./(1.+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)) ELSE - PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)= 1./(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)) + PPHI3(IIJB:IIJE,1:D%NKT)= 1./(1.+PREDTH1(IIJB:IIJE,1:D%NKT)) END IF - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) END IF ! -PPHI3(IIB:IIE,IJB:IJE,IKB-1)=PPHI3(IIB:IIE,IJB:IJE,IKB) -PPHI3(IIB:IIE,IJB:IJE,IKE+1)=PPHI3(IIB:IIE,IJB:IJE,IKE) +PPHI3(IIJB:IIJE,IKB-1)=PPHI3(IIJB:IIJE,IKB) +PPHI3(IIJB:IIJE,IKE+1)=PPHI3(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PHI3',1,ZHOOK_HANDLE) END SUBROUTINE PHI3 @@ -842,53 +835,53 @@ SUBROUTINE PSI_SV(D,CSTURB,KSV,PREDTH1,PREDR1,PREDS1,PRED2THS,PRED2RS,PPHI3,PPSI TYPE(CSTURB_t), INTENT(IN) :: CSTURB TYPE(DIMPHYEX_t), INTENT(IN) :: D INTEGER, INTENT(IN) :: KSV - 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,KSV), INTENT(IN) :: PREDS1 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV), INTENT(IN) :: PRED2THS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV), INTENT(IN) :: PRED2RS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPHI3 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPSI3 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV),INTENT(OUT) :: PPSI_SV + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(IN) :: PREDS1 + REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(IN) :: PRED2THS + REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(IN) :: PRED2RS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PPHI3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PPSI3 + REAL, DIMENSION(D%NIJT,D%NKT,KSV),INTENT(OUT) :: PPSI_SV ! - INTEGER :: IKB, IKE, IIB,IIE,IJB,IJE - INTEGER :: JSV,JI,JJ,JK + INTEGER :: IKB, IKE, IIJB,IIJE + INTEGER :: JSV,JIJ,JK ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PSI_SV',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB + + ! DO JSV=1,KSV - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PPSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = ( 1. & + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PPSI_SV(IIJB:IIJE,1:D%NKT,JSV) = ( 1. & - (CSTURB%XCPR3+CSTURB%XCPR5) * & - (PRED2THS(IIB:IIE,IJB:IJE,1:D%NKT,JSV)/PREDS1(IIB:IIE,IJB:IJE,1:D%NKT,JSV)-PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)) & + (PRED2THS(IIJB:IIJE,1:D%NKT,JSV)/PREDS1(IIJB:IIJE,1:D%NKT,JSV)-PREDTH1(IIJB:IIJE,1:D%NKT)) & - (CSTURB%XCPR4+CSTURB%XCPR5) * & - (PRED2RS(IIB:IIE,IJB:IJE,1:D%NKT,JSV)/PREDS1(IIB:IIE,IJB:IJE,1:D%NKT,JSV)-PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) & + (PRED2RS(IIJB:IIJE,1:D%NKT,JSV)/PREDS1(IIJB:IIJE,1:D%NKT,JSV)-PREDR1(IIJB:IIJE,1:D%NKT)) & - CSTURB%XCPR3 * & - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) * PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & - - CSTURB%XCPR4 * PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) * PPSI3(IIB:IIE,IJB:IJE,1:D%NKT) & - ) / ( 1. + CSTURB%XCPR5 * ( PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) + PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) ) ) + PREDTH1(IIJB:IIJE,1:D%NKT) * PPHI3(IIJB:IIJE,1:D%NKT) & + - CSTURB%XCPR4 * PREDR1(IIJB:IIJE,1:D%NKT) * PPSI3(IIJB:IIJE,1:D%NKT) & + ) / ( 1. + CSTURB%XCPR5 * ( PREDTH1(IIJB:IIJE,1:D%NKT) + PREDR1(IIJB:IIJE,1:D%NKT) ) ) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! control of the PSI_SV positivity - !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - WHERE ( (PPSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV) <=0.).AND. (PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))<=0.) - PPSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV)=CSTURB%XPHI_LIM + !$mnh_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) + WHERE ( (PPSI_SV(IIJB:IIJE,1:D%NKT,JSV) <=0.).AND. (PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))<=0.) + PPSI_SV(IIJB:IIJE,1:D%NKT,JSV)=CSTURB%XPHI_LIM END WHERE - !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PPSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV) = MAX( 1.E-4, MIN(CSTURB%XPHI_LIM,PPSI_SV(IIB:IIE,IJB:IJE,1:D%NKT,JSV)) ) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PPSI_SV(IIJB:IIJE,1:D%NKT,JSV) = MAX( 1.E-4, MIN(CSTURB%XPHI_LIM,PPSI_SV(IIJB:IIJE,1:D%NKT,JSV)) ) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! - PPSI_SV(IIB:IIE,IJB:IJE,IKB-1,JSV)=PPSI_SV(IIB:IIE,IJB:IJE,IKB,JSV) - PPSI_SV(IIB:IIE,IJB:IJE,IKE+1,JSV)=PPSI_SV(IIB:IIE,IJB:IJE,IKE,JSV) + PPSI_SV(IIJB:IIJE,IKB-1,JSV)=PPSI_SV(IIJB:IIJE,IKB,JSV) + PPSI_SV(IIJB:IIJE,IKE+1,JSV)=PPSI_SV(IIJB:IIJE,IKE,JSV) END DO ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PSI_SV',1,ZHOOK_HANDLE) @@ -897,83 +890,81 @@ END SUBROUTINE PSI_SV SUBROUTINE D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV,PD_PHI3DTDZ_O_DDTDZ) TYPE(CSTURB_t), INTENT(IN) :: CSTURB TYPE(DIMPHYEX_t), INTENT(IN) :: D - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPHI3 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PPHI3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2TH3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2THR3 CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_PHI3DTDZ_O_DDTDZ - INTEGER :: IKB, IKE,JK,JJ,JI, IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_PHI3DTDZ_O_DDTDZ + INTEGER :: IKB, IKE,JIJ,JK, IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB + + ! IF (HTURBDIM=='3DIM') THEN !* 3DIM case IF (OUSERV) THEN - !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) #ifdef REPRO48 - WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)/=CSTURB%XPHI_LIM) + WHERE (PPHI3(IIJB:IIJE,1:D%NKT)/=CSTURB%XPHI_LIM) #else - WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)<=CSTURB%XPHI_LIM) + WHERE (PPHI3(IIJB:IIJE,1:D%NKT)<=CSTURB%XPHI_LIM) #endif - PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & - * (1. - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) * (3./2.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) & - /((1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) & - *(1.+1./2.*(PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))))) & - + (1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*(PRED2THR3(IIB:IIE,IJB:IJE,1:D%NKT)+PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT)) & - / (PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)*(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))* & - (1.+1./2.*(PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)))) & - - (1./2.*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) & - * (1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))) & - / ((1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))& - *(1.+1./2.*(PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)))) + PD_PHI3DTDZ_O_DDTDZ(IIJB:IIJE,1:D%NKT) = PPHI3(IIJB:IIJE,1:D%NKT) & + * (1. - PREDTH1(IIJB:IIJE,1:D%NKT) * (3./2.+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)) & + /((1.+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)) & + *(1.+1./2.*(PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))))) & + + (1.+PREDR1(IIJB:IIJE,1:D%NKT))*(PRED2THR3(IIJB:IIJE,1:D%NKT)+PRED2TH3(IIJB:IIJE,1:D%NKT)) & + / (PREDTH1(IIJB:IIJE,1:D%NKT)*(1.+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))* & + (1.+1./2.*(PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)))) & + - (1./2.*PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT) & + * (1.+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))) & + / ((1.+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))& + *(1.+1./2.*(PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)))) ELSEWHERE - PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) + PD_PHI3DTDZ_O_DDTDZ(IIJB:IIJE,1:D%NKT) = PPHI3(IIJB:IIJE,1:D%NKT) ENDWHERE - !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) ! ELSE - !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) #ifdef REPRO48 - WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)/=CSTURB%XPHI_LIM) + WHERE (PPHI3(IIJB:IIJE,1:D%NKT)/=CSTURB%XPHI_LIM) #else - WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)<=CSTURB%XPHI_LIM) + WHERE (PPHI3(IIJB:IIJE,1:D%NKT)<=CSTURB%XPHI_LIM) #endif - PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & - * (1. - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) * (3./2.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)) & - /((1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))*(1.+1./2.*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)))) & - + PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT) & - / (PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)*(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))*(1.+1./2.*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))) & - - 1./2.*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) & - / ((1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))*(1.+1./2.*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))) + PD_PHI3DTDZ_O_DDTDZ(IIJB:IIJE,1:D%NKT) = PPHI3(IIJB:IIJE,1:D%NKT) & + * (1. - PREDTH1(IIJB:IIJE,1:D%NKT) * (3./2.+PREDTH1(IIJB:IIJE,1:D%NKT)) & + /((1.+PREDTH1(IIJB:IIJE,1:D%NKT))*(1.+1./2.*PREDTH1(IIJB:IIJE,1:D%NKT)))) & + + PRED2TH3(IIJB:IIJE,1:D%NKT) & + / (PREDTH1(IIJB:IIJE,1:D%NKT)*(1.+PREDTH1(IIJB:IIJE,1:D%NKT))*(1.+1./2.*PREDTH1(IIJB:IIJE,1:D%NKT))) & + - 1./2.*PREDTH1(IIJB:IIJE,1:D%NKT) & + / ((1.+PREDTH1(IIJB:IIJE,1:D%NKT))*(1.+1./2.*PREDTH1(IIJB:IIJE,1:D%NKT))) ELSEWHERE - PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) + PD_PHI3DTDZ_O_DDTDZ(IIJB:IIJE,1:D%NKT) = PPHI3(IIJB:IIJE,1:D%NKT) ENDWHERE - !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) ! END IF ELSE !* 1DIM case DO JK=1,D%NKT - DO JJ=IJB,IJE - DO JI=IIB,IIE - IF ( ABS(PPHI3(JI,JJ,JK)-CSTURB%XPHI_LIM) < 1.E-12 ) THEN - PD_PHI3DTDZ_O_DDTDZ(JI,JJ,JK)=PPHI3(JI,JJ,JK)*& -& (1. - PREDTH1(JI,JJ,JK)*PPHI3(JI,JJ,JK)) + DO JIJ=IIJB,IIJE + IF ( ABS(PPHI3(JIJ,JK)-CSTURB%XPHI_LIM) < 1.E-12 ) THEN + PD_PHI3DTDZ_O_DDTDZ(JIJ,JK)=PPHI3(JIJ,JK)*& +& (1. - PREDTH1(JIJ,JK)*PPHI3(JIJ,JK)) ELSE - PD_PHI3DTDZ_O_DDTDZ(JI,JJ,JK)=PPHI3(JI,JJ,JK) + PD_PHI3DTDZ_O_DDTDZ(JIJ,JK)=PPHI3(JIJ,JK) ENDIF - ENDDO ENDDO ENDDO END IF @@ -984,8 +975,8 @@ END IF CALL SMOOTH_TURB_FUNCT(D,CSTURB,PPHI3,PPHI3,PD_PHI3DTDZ_O_DDTDZ) #endif ! -PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_PHI3DTDZ_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_PHI3DTDZ_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_PHI3DTDZ_O_DDTDZ(IIJB:IIJE,IKB) +PD_PHI3DTDZ_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_PHI3DTDZ_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_PHI3DTDZ_O_DDTDZ @@ -993,67 +984,67 @@ END SUBROUTINE D_PHI3DTDZ_O_DDTDZ SUBROUTINE D_PHI3DRDZ_O_DDRDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV,PD_PHI3DRDZ_O_DDRDZ) TYPE(CSTURB_t), INTENT(IN) :: CSTURB TYPE(DIMPHYEX_t), INTENT(IN) :: D - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPHI3 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PPHI3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2TH3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2THR3 CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_PHI3DRDZ_O_DDRDZ - INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_PHI3DRDZ_O_DDRDZ + INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DRDZ_O_DDRDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB + + ! ! IF (HTURBDIM=='3DIM') THEN !* 3DIM case IF (OUSERV) THEN - !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) #ifdef REPRO48 - WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)/=CSTURB%XPHI_LIM) + WHERE (PPHI3(IIJB:IIJE,1:D%NKT)/=CSTURB%XPHI_LIM) #else - WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)<=CSTURB%XPHI_LIM) + WHERE (PPHI3(IIJB:IIJE,1:D%NKT)<=CSTURB%XPHI_LIM) #endif - PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & - * (1.-PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)*(3./2.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) & - / ((1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) & - *(1.+1./2.*(PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))))) & - - PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) & - * (PRED2THR3(IIB:IIE,IJB:IJE,1:D%NKT)+PRED2TH3(IIB:IIE,IJB:IJE,1:D%NKT)) / (PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) & - * (1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*& - (1.+1./2.*(PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)))) & - + PREDR1(IIB:IIE,IJB:IJE,1:D%NKT) * (1./2.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) & - / ((1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))& - *(1.+1./2.*(PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)))) + PD_PHI3DRDZ_O_DDRDZ(IIJB:IIJE,1:D%NKT) = PPHI3(IIJB:IIJE,1:D%NKT) & + * (1.-PREDR1(IIJB:IIJE,1:D%NKT)*(3./2.+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)) & + / ((1.+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)) & + *(1.+1./2.*(PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))))) & + - PREDR1(IIJB:IIJE,1:D%NKT) & + * (PRED2THR3(IIJB:IIJE,1:D%NKT)+PRED2TH3(IIJB:IIJE,1:D%NKT)) / (PREDTH1(IIJB:IIJE,1:D%NKT) & + * (1.+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))*& + (1.+1./2.*(PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)))) & + + PREDR1(IIJB:IIJE,1:D%NKT) * (1./2.+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)) & + / ((1.+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))& + *(1.+1./2.*(PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)))) ELSEWHERE - PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) + PD_PHI3DRDZ_O_DDRDZ(IIJB:IIJE,1:D%NKT) = PPHI3(IIJB:IIJE,1:D%NKT) END WHERE - !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) ELSE - PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) + PD_PHI3DRDZ_O_DDRDZ(IIJB:IIJE,1:D%NKT) = PPHI3(IIJB:IIJE,1:D%NKT) END IF ELSE !* 1DIM case - !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) #ifdef REPRO48 - WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)/=CSTURB%XPHI_LIM) + WHERE (PPHI3(IIJB:IIJE,1:D%NKT)/=CSTURB%XPHI_LIM) #else - WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)<=CSTURB%XPHI_LIM) + WHERE (PPHI3(IIJB:IIJE,1:D%NKT)<=CSTURB%XPHI_LIM) #endif - PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) & - * (1. - PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)*PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)) + PD_PHI3DRDZ_O_DDRDZ(IIJB:IIJE,1:D%NKT) = PPHI3(IIJB:IIJE,1:D%NKT) & + * (1. - PREDR1(IIJB:IIJE,1:D%NKT)*PPHI3(IIJB:IIJE,1:D%NKT)) ELSEWHERE - PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) + PD_PHI3DRDZ_O_DDRDZ(IIJB:IIJE,1:D%NKT) = PPHI3(IIJB:IIJE,1:D%NKT) END WHERE - !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) END IF ! #ifdef REPRO48 @@ -1062,8 +1053,8 @@ END IF CALL SMOOTH_TURB_FUNCT(D,CSTURB,PPHI3,PPHI3,PD_PHI3DRDZ_O_DDRDZ) #endif ! -PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,IKB) -PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_PHI3DRDZ_O_DDRDZ(IIB:IIE,IJB:IJE,IKE) +PD_PHI3DRDZ_O_DDRDZ(IIJB:IIJE,IKB-1)=PD_PHI3DRDZ_O_DDRDZ(IIJB:IIJE,IKB) +PD_PHI3DRDZ_O_DDRDZ(IIJB:IIJE,IKE+1)=PD_PHI3DRDZ_O_DDRDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DRDZ_O_DDRDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_PHI3DRDZ_O_DDRDZ @@ -1071,49 +1062,49 @@ END SUBROUTINE D_PHI3DRDZ_O_DDRDZ SUBROUTINE D_PHI3DTDZ2_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,PDTDZ,HTURBDIM,OUSERV,PD_PHI3DTDZ2_O_DDTDZ) TYPE(CSTURB_t), INTENT(IN) :: CSTURB TYPE(DIMPHYEX_t), INTENT(IN) :: D - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPHI3 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PPHI3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2TH3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2THR3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_PHI3DTDZ2_O_DDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_PHI3DTDZ2_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ2_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB + + ! ! IF (HTURBDIM=='3DIM') THEN ! by derivation of (phi3 dtdz) * dtdz according to dtdz we obtain: CALL D_PHI3DTDZ_O_DDTDZ(D,CSTURB,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV,ZWORK1) - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) & - * (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) + ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT)) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PD_PHI3DTDZ2_O_DDTDZ(IIJB:IIJE,1:D%NKT) = PDTDZ(IIJB:IIJE,1:D%NKT) & + * (PPHI3(IIJB:IIJE,1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT)) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ELSE !* 1DIM case - !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) #ifdef REPRO48 - WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)/=CSTURB%XPHI_LIM) + WHERE (PPHI3(IIJB:IIJE,1:D%NKT)/=CSTURB%XPHI_LIM) #else - WHERE (PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)<=CSTURB%XPHI_LIM) + WHERE (PPHI3(IIJB:IIJE,1:D%NKT)<=CSTURB%XPHI_LIM) #endif - PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)*PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) & - * (2. - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)*PPHI3(IIB:IIE,IJB:IJE,1:D%NKT)) + PD_PHI3DTDZ2_O_DDTDZ(IIJB:IIJE,1:D%NKT) = PPHI3(IIJB:IIJE,1:D%NKT)*PDTDZ(IIJB:IIJE,1:D%NKT) & + * (2. - PREDTH1(IIJB:IIJE,1:D%NKT)*PPHI3(IIJB:IIJE,1:D%NKT)) ELSEWHERE - PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PPHI3(IIB:IIE,IJB:IJE,1:D%NKT) * 2. * PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) + PD_PHI3DTDZ2_O_DDTDZ(IIJB:IIJE,1:D%NKT) = PPHI3(IIJB:IIJE,1:D%NKT) * 2. * PDTDZ(IIJB:IIJE,1:D%NKT) END WHERE - !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_end_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT) END IF ! #ifdef REPRO48 @@ -1123,8 +1114,8 @@ CALL SMOOTH_TURB_FUNCT(D,CSTURB,PPHI3,PPHI3*2.*PDTDZ,PD_PHI3DTDZ2_O_DDTDZ) #endif ! ! -PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_PHI3DTDZ2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_PHI3DTDZ2_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_PHI3DTDZ2_O_DDTDZ(IIJB:IIJE,IKB) +PD_PHI3DTDZ2_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_PHI3DTDZ2_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ2_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_PHI3DTDZ2_O_DDTDZ @@ -1132,30 +1123,30 @@ END SUBROUTINE D_PHI3DTDZ2_O_DDTDZ SUBROUTINE M3_WTH_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,PM3_WTH_WTH2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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),INTENT(OUT) :: PM3_WTH_WTH2 - INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WTH_WTH2 + INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WTH2',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC - -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_WTH_WTH2(IIB:IIE,IJB:IJE,1:D%NKT) = CSTURB%XCSHF*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)& - * PETHETA(IIB:IIE,IJB:IJE,1:D%NKT)*0.5/CSTURB%XCTD & - * (1.+0.5*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) / PD(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_WTH_WTH2(IIB:IIE,IJB:IJE,IKB-1)=PM3_WTH_WTH2(IIB:IIE,IJB:IJE,IKB) -PM3_WTH_WTH2(IIB:IIE,IJB:IJE,IKE+1)=PM3_WTH_WTH2(IIB:IIE,IJB:IJE,IKE) +IIJE=D%NIJE +IIJB=D%NIJB + + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_WTH_WTH2(IIJB:IIJE,1:D%NKT) = CSTURB%XCSHF*PBLL_O_E(IIJB:IIJE,1:D%NKT)& + * PETHETA(IIJB:IIJE,1:D%NKT)*0.5/CSTURB%XCTD & + * (1.+0.5*PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)) / PD(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_WTH_WTH2(IIJB:IIJE,IKB-1)=PM3_WTH_WTH2(IIJB:IIJE,IKB) +PM3_WTH_WTH2(IIJB:IIJE,IKE+1)=PM3_WTH_WTH2(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WTH2',1,ZHOOK_HANDLE) END SUBROUTINE M3_WTH_WTH2 @@ -1163,34 +1154,34 @@ END SUBROUTINE M3_WTH_WTH2 SUBROUTINE D_M3_WTH_WTH2_O_DDTDZ(D,CSTURB,PM3_WTH_WTH2,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,PD_M3_WTH_WTH2_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PM3_WTH_WTH2 - 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),INTENT(OUT) :: PD_M3_WTH_WTH2_O_DDTDZ - INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PM3_WTH_WTH2 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_WTH2_O_DDTDZ + INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WTH2_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC - -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & -(0.5*CSTURB%XCSHF*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PETHETA(IIB:IIE,IJB:IJE,1:D%NKT)*0.5/CSTURB%XCTD/PD(IIB:IIE,IJB:IJE,1:D%NKT) & -- PM3_WTH_WTH2(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT)& -*(1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) )& -* PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) * PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) * CSTURB%XCTV -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -! -PD_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_WTH_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +IIJE=D%NIJE +IIJB=D%NIJB + + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_WTH_WTH2_O_DDTDZ(IIJB:IIJE,1:D%NKT) = & +(0.5*CSTURB%XCSHF*PBLL_O_E(IIJB:IIJE,1:D%NKT)*PETHETA(IIJB:IIJE,1:D%NKT)*0.5/CSTURB%XCTD/PD(IIJB:IIJE,1:D%NKT) & +- PM3_WTH_WTH2(IIJB:IIJE,1:D%NKT)/PD(IIJB:IIJE,1:D%NKT)& +*(1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)) )& +* PBLL_O_E(IIJB:IIJE,1:D%NKT) * PETHETA(IIJB:IIJE,1:D%NKT) * CSTURB%XCTV +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +! +PD_M3_WTH_WTH2_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_WTH_WTH2_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_WTH_WTH2_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_WTH_WTH2_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WTH2_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_WTH_WTH2_O_DDTDZ @@ -1198,32 +1189,32 @@ END SUBROUTINE D_M3_WTH_WTH2_O_DDTDZ SUBROUTINE M3_WTH_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE,PM3_WTH_W2TH) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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),INTENT(OUT) :: PM3_WTH_W2TH - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WTH_W2TH + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_W2TH',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB + + CALL MZM_PHY(D,PTKE,ZWORK1) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_WTH_W2TH(IIB:IIE,IJB:IJE,1:D%NKT) = CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)*1.5/ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) & - * (1. - 0.5*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)*(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT) ) & - / (1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_WTH_W2TH(IIJB:IIJE,1:D%NKT) = CSTURB%XCSHF*PKEFF(IIJB:IIJE,1:D%NKT)*1.5/ZWORK1(IIJB:IIJE,1:D%NKT) & + * (1. - 0.5*PREDR1(IIJB:IIJE,1:D%NKT)*(1.+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT) ) & + / (1.+PREDTH1(IIJB:IIJE,1:D%NKT)) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PM3_WTH_W2TH(IIB:IIE,IJB:IJE,IKB-1)=PM3_WTH_W2TH(IIB:IIE,IJB:IJE,IKB) -PM3_WTH_W2TH(IIB:IIE,IJB:IJE,IKE+1)=PM3_WTH_W2TH(IIB:IIE,IJB:IJE,IKE) +PM3_WTH_W2TH(IIJB:IIJE,IKB-1)=PM3_WTH_W2TH(IIJB:IIJE,IKB) +PM3_WTH_W2TH(IIJB:IIJE,IKE+1)=PM3_WTH_W2TH(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_W2TH',1,ZHOOK_HANDLE) END SUBROUTINE M3_WTH_W2TH @@ -1231,38 +1222,38 @@ END SUBROUTINE M3_WTH_W2TH SUBROUTINE D_M3_WTH_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,PKEFF,PTKE,PD_M3_WTH_W2TH_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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), INTENT(IN) :: PKEFF - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_W2TH_O_DDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK, IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_W2TH_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2TH_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB + + CALL MZM_PHY(D,PTKE,ZWORK1) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & - - CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)*1.5/ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT)/(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))**2 & - * CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) & - * (1. - 0.5*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)*(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT)* & - ( 1.+(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))*(1.5+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))& - /PD(IIB:IIE,IJB:IJE,1:D%NKT)) ) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -! -PD_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_WTH_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_WTH_W2TH_O_DDTDZ(IIJB:IIJE,1:D%NKT) = & + - CSTURB%XCSHF*PKEFF(IIJB:IIJE,1:D%NKT)*1.5/ZWORK1(IIJB:IIJE,1:D%NKT)/(1.+PREDTH1(IIJB:IIJE,1:D%NKT))**2 & + * CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT)*PETHETA(IIJB:IIJE,1:D%NKT) & + * (1. - 0.5*PREDR1(IIJB:IIJE,1:D%NKT)*(1.+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT)* & + ( 1.+(1.+PREDTH1(IIJB:IIJE,1:D%NKT))*(1.5+PREDR1(IIJB:IIJE,1:D%NKT)+PREDTH1(IIJB:IIJE,1:D%NKT))& + /PD(IIJB:IIJE,1:D%NKT)) ) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +! +PD_M3_WTH_W2TH_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_WTH_W2TH_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_WTH_W2TH_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_WTH_W2TH_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2TH_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_WTH_W2TH_O_DDTDZ @@ -1270,34 +1261,34 @@ END SUBROUTINE D_M3_WTH_W2TH_O_DDTDZ SUBROUTINE M3_WTH_W2R(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_WTH_W2R) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WTH_W2R - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WTH_W2R + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_W2R',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB + + CALL MZM_PHY(D,PTKE,ZWORK1) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_WTH_W2R(IIB:IIE,IJB:IJE,1:D%NKT) = & - - CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)*0.75*CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) & - /ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)*PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_WTH_W2R(IIJB:IIJE,1:D%NKT) = & + - CSTURB%XCSHF*PKEFF(IIJB:IIJE,1:D%NKT)*0.75*CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT) & + /ZWORK1(IIJB:IIJE,1:D%NKT)*PEMOIST(IIJB:IIJE,1:D%NKT)*PDTDZ(IIJB:IIJE,1:D%NKT)/PD(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PM3_WTH_W2R(IIB:IIE,IJB:IJE,IKB-1)=PM3_WTH_W2R(IIB:IIE,IJB:IJE,IKB) -PM3_WTH_W2R(IIB:IIE,IJB:IJE,IKE+1)=PM3_WTH_W2R(IIB:IIE,IJB:IJE,IKE) +PM3_WTH_W2R(IIJB:IIJE,IKB-1)=PM3_WTH_W2R(IIJB:IIJE,IKB) +PM3_WTH_W2R(IIJB:IIJE,IKE+1)=PM3_WTH_W2R(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_W2R',1,ZHOOK_HANDLE) END SUBROUTINE M3_WTH_W2R @@ -1305,37 +1296,37 @@ END SUBROUTINE M3_WTH_W2R SUBROUTINE D_M3_WTH_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST,PD_M3_WTH_W2R_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_W2R_O_DDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_W2R_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2R_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB + + CALL MZM_PHY(D,PTKE,ZWORK1) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & -- CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)*0.75*CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) & - /ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT) & - * (1. - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)*(1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)& - +PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT)) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_WTH_W2R_O_DDTDZ(IIJB:IIJE,1:D%NKT) = & +- CSTURB%XCSHF*PKEFF(IIJB:IIJE,1:D%NKT)*0.75*CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT) & + /ZWORK1(IIJB:IIJE,1:D%NKT)*PEMOIST(IIJB:IIJE,1:D%NKT)/PD(IIJB:IIJE,1:D%NKT) & + * (1. - PREDTH1(IIJB:IIJE,1:D%NKT)*(1.5+PREDTH1(IIJB:IIJE,1:D%NKT)& + +PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT)) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PD_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_WTH_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_WTH_W2R_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_WTH_W2R_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_WTH_W2R_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_WTH_W2R_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2R_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_WTH_W2R_O_DDTDZ @@ -1343,40 +1334,40 @@ END SUBROUTINE D_M3_WTH_W2R_O_DDTDZ SUBROUTINE M3_WTH_WR2(D,CSTURB,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTDZ,PM3_WTH_WR2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD - 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), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WTH_WR2 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WTH_WR2 + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WR2',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBETA(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & - /(PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)*PTKE(IIB:IIE,IJB:IJE,1:D%NKT)) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = PBETA(IIJB:IIJE,1:D%NKT)*PLEPS(IIJB:IIJE,1:D%NKT) & + /(PSQRT_TKE(IIJB:IIJE,1:D%NKT)*PTKE(IIJB:IIJE,1:D%NKT)) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_WTH_WR2(IIB:IIE,IJB:IJE,1:D%NKT) = - CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)& - *0.25*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)**2 & - *ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD*PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_WTH_WR2(IIJB:IIJE,1:D%NKT) = - CSTURB%XCSHF*PKEFF(IIJB:IIJE,1:D%NKT)& + *0.25*PBLL_O_E(IIJB:IIJE,1:D%NKT)*CSTURB%XCTV*PEMOIST(IIJB:IIJE,1:D%NKT)**2 & + *ZWORK2(IIJB:IIJE,1:D%NKT)/CSTURB%XCTD*PDTDZ(IIJB:IIJE,1:D%NKT)/PD(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PM3_WTH_WR2(IIB:IIE,IJB:IJE,IKB-1)=PM3_WTH_WR2(IIB:IIE,IJB:IJE,IKB) -PM3_WTH_WR2(IIB:IIE,IJB:IJE,IKE+1)=PM3_WTH_WR2(IIB:IIE,IJB:IJE,IKE) +PM3_WTH_WR2(IIJB:IIJE,IKB-1)=PM3_WTH_WR2(IIJB:IIJE,IKB) +PM3_WTH_WR2(IIJB:IIJE,IKE+1)=PM3_WTH_WR2(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WR2',1,ZHOOK_HANDLE) END SUBROUTINE M3_WTH_WR2 @@ -1384,43 +1375,43 @@ END SUBROUTINE M3_WTH_WR2 SUBROUTINE D_M3_WTH_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PD_M3_WTH_WR2_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_WR2_O_DDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_WR2_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WR2_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBETA(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)& - /(PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)*PTKE(IIB:IIE,IJB:IJE,1:D%NKT)) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = PBETA(IIJB:IIJE,1:D%NKT)*PLEPS(IIJB:IIJE,1:D%NKT)& + /(PSQRT_TKE(IIJB:IIJE,1:D%NKT)*PTKE(IIJB:IIJE,1:D%NKT)) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)& - *0.25*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)**2 & - *ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD/PD(IIB:IIE,IJB:IJE,1:D%NKT) & - * (1. - PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)* & - (1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT)) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_WTH_WR2_O_DDTDZ(IIJB:IIJE,1:D%NKT) = - CSTURB%XCSHF*PKEFF(IIJB:IIJE,1:D%NKT)& + *0.25*PBLL_O_E(IIJB:IIJE,1:D%NKT)*CSTURB%XCTV*PEMOIST(IIJB:IIJE,1:D%NKT)**2 & + *ZWORK2(IIJB:IIJE,1:D%NKT)/CSTURB%XCTD/PD(IIJB:IIJE,1:D%NKT) & + * (1. - PREDTH1(IIJB:IIJE,1:D%NKT)* & + (1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT)) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PD_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_WTH_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_WTH_WR2_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_WTH_WR2_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_WTH_WR2_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_WTH_WR2_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WR2_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_WTH_WR2_O_DDTDZ @@ -1428,40 +1419,40 @@ END SUBROUTINE D_M3_WTH_WR2_O_DDTDZ SUBROUTINE M3_WTH_WTHR(D,CSTURB,PREDR1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PEMOIST,PM3_WTH_WTHR) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WTH_WTHR - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WTH_WTHR + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WTHR',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC - -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBETA(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)& - /(PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)*PTKE(IIB:IIE,IJB:IJE,1:D%NKT)) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = PBETA(IIJB:IIJE,1:D%NKT)*PLEPS(IIJB:IIJE,1:D%NKT)& + /(PSQRT_TKE(IIJB:IIJE,1:D%NKT)*PTKE(IIJB:IIJE,1:D%NKT)) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZM_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_WTH_WTHR(IIB:IIE,IJB:IJE,1:D%NKT) = & - CSTURB%XCSHF*PKEFF(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)*ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) & - *0.5*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD*(1+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_WTH_WTHR(IIJB:IIJE,1:D%NKT) = & + CSTURB%XCSHF*PKEFF(IIJB:IIJE,1:D%NKT)*PEMOIST(IIJB:IIJE,1:D%NKT)*ZWORK2(IIJB:IIJE,1:D%NKT) & + *0.5*PLEPS(IIJB:IIJE,1:D%NKT)/CSTURB%XCTD*(1+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PM3_WTH_WTHR(IIB:IIE,IJB:IJE,IKB-1)=PM3_WTH_WTHR(IIB:IIE,IJB:IJE,IKB) -PM3_WTH_WTHR(IIB:IIE,IJB:IJE,IKE+1)=PM3_WTH_WTHR(IIB:IIE,IJB:IJE,IKE) +PM3_WTH_WTHR(IIJB:IIJE,IKB-1)=PM3_WTH_WTHR(IIJB:IIJE,IKB) +PM3_WTH_WTHR(IIJB:IIJE,IKE+1)=PM3_WTH_WTHR(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WTHR',1,ZHOOK_HANDLE) END SUBROUTINE M3_WTH_WTHR @@ -1469,32 +1460,32 @@ END SUBROUTINE M3_WTH_WTHR SUBROUTINE D_M3_WTH_WTHR_O_DDTDZ(D,CSTURB,PM3_WTH_WTHR,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,PD_M3_WTH_WTHR_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PM3_WTH_WTHR - 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),INTENT(OUT) :: PD_M3_WTH_WTHR_O_DDTDZ - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PM3_WTH_WTHR + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_WTHR_O_DDTDZ + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WTHR_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = & - - PM3_WTH_WTHR(IIB:IIE,IJB:IJE,1:D%NKT) * (1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))& - /PD(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_WTH_WTHR_O_DDTDZ(IIJB:IIJE,1:D%NKT) = & + - PM3_WTH_WTHR(IIJB:IIJE,1:D%NKT) * (1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))& + /PD(IIJB:IIJE,1:D%NKT)*CSTURB%XCTV*PBLL_O_E(IIJB:IIJE,1:D%NKT)*PETHETA(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PD_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_WTH_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_WTH_WTHR_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_WTH_WTHR_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_WTH_WTHR_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_WTH_WTHR_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WTHR_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_WTH_WTHR_O_DDTDZ @@ -1502,37 +1493,37 @@ END SUBROUTINE D_M3_WTH_WTHR_O_DDTDZ SUBROUTINE M3_TH2_W2TH(D,CSTURB,PREDTH1,PREDR1,PD,PDTDZ,PLM,PLEPS,PTKE,PM3_TH2_W2TH) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_TH2_W2TH - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_TH2_W2TH + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_W2TH',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (1.-0.5*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)*(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))& - /PD(IIB:IIE,IJB:IJE,1:D%NKT))/(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))*PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = (1.-0.5*PREDR1(IIJB:IIJE,1:D%NKT)*(1.+PREDR1(IIJB:IIJE,1:D%NKT))& + /PD(IIJB:IIJE,1:D%NKT))/(1.+PREDTH1(IIJB:IIJE,1:D%NKT))*PDTDZ(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_TH2_W2TH(IIB:IIE,IJB:IJE,1:D%NKT) = - ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) & - * 1.5*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PTKE(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_TH2_W2TH(IIJB:IIJE,1:D%NKT) = - ZWORK2(IIJB:IIJE,1:D%NKT) & + * 1.5*PLM(IIJB:IIJE,1:D%NKT)*PLEPS(IIJB:IIJE,1:D%NKT)/PTKE(IIJB:IIJE,1:D%NKT)*CSTURB%XCTV +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PM3_TH2_W2TH(IIB:IIE,IJB:IJE,IKB-1)=PM3_TH2_W2TH(IIB:IIE,IJB:IJE,IKB) -PM3_TH2_W2TH(IIB:IIE,IJB:IJE,IKE+1)=PM3_TH2_W2TH(IIB:IIE,IJB:IJE,IKE) +PM3_TH2_W2TH(IIJB:IIJE,IKB-1)=PM3_TH2_W2TH(IIJB:IIJE,IKB) +PM3_TH2_W2TH(IIJB:IIJE,IKE+1)=PM3_TH2_W2TH(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_W2TH',1,ZHOOK_HANDLE) END SUBROUTINE M3_TH2_W2TH @@ -1540,54 +1531,54 @@ END SUBROUTINE M3_TH2_W2TH SUBROUTINE D_M3_TH2_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,OUSERV,PD_M3_TH2_W2TH_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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 - 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%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE LOGICAL, INTENT(IN) :: OUSERV - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_W2TH_O_DDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_W2TH_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_W2TH_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJE=D%NIJE +IIJB=D%NIJB + + IF (OUSERV) THEN -! D_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 1.5*PLM*PLEPS/PTKE*CSTURB%XCTV * MZF( & +! D_M3_TH2_W2TH_O_DDTDZ(IIJB:IIJE,1:D%NKT) = - 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) - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (1.-0.5*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)*(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))& - / PD(IIB:IIE,IJB:IJE,1:D%NKT))*(1.-(1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) & - * PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)*(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT) ) & - / (1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))**2 - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = (1.-0.5*PREDR1(IIJB:IIJE,1:D%NKT)*(1.+PREDR1(IIJB:IIJE,1:D%NKT))& + / PD(IIJB:IIJE,1:D%NKT))*(1.-(1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)) & + * PREDTH1(IIJB:IIJE,1:D%NKT)*(1.+PREDTH1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT) ) & + / (1.+PREDTH1(IIJB:IIJE,1:D%NKT))**2 + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PD_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 1.5*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & - /PTKE(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PD_M3_TH2_W2TH_O_DDTDZ(IIJB:IIJE,1:D%NKT) = - 1.5*PLM(IIJB:IIJE,1:D%NKT)*PLEPS(IIJB:IIJE,1:D%NKT) & + /PTKE(IIJB:IIJE,1:D%NKT)*CSTURB%XCTV * ZWORK2(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ELSE - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = 1./(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))**2 - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + ZWORK1(IIJB:IIJE,1:D%NKT) = 1./(1.+PREDTH1(IIJB:IIJE,1:D%NKT))**2 + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) - PD_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 1.5*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & - /PTKE(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) + PD_M3_TH2_W2TH_O_DDTDZ(IIJB:IIJE,1:D%NKT) = - 1.5*PLM(IIJB:IIJE,1:D%NKT)*PLEPS(IIJB:IIJE,1:D%NKT) & + /PTKE(IIJB:IIJE,1:D%NKT)*CSTURB%XCTV * ZWORK2(IIJB:IIJE,1:D%NKT) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) END IF ! -PD_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_TH2_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_TH2_W2TH_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_TH2_W2TH_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_TH2_W2TH_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_TH2_W2TH_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_W2TH_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_TH2_W2TH_O_DDTDZ @@ -1595,35 +1586,35 @@ END SUBROUTINE D_M3_TH2_W2TH_O_DDTDZ SUBROUTINE M3_TH2_WTH2(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PM3_TH2_WTH2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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),INTENT(OUT) :: PM3_TH2_WTH2 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_TH2_WTH2 + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WTH2',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (1.+0.5*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) & - +1.5*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)+0.5*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)**2)/PD(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = (1.+0.5*PREDTH1(IIJB:IIJE,1:D%NKT) & + +1.5*PREDR1(IIJB:IIJE,1:D%NKT)+0.5*PREDR1(IIJB:IIJE,1:D%NKT)**2)/PD(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_TH2_WTH2(IIB:IIE,IJB:IJE,1:D%NKT) = PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)*0.5/CSTURB%XCTD/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT) & - * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_TH2_WTH2(IIJB:IIJE,1:D%NKT) = PLEPS(IIJB:IIJE,1:D%NKT)*0.5/CSTURB%XCTD/PSQRT_TKE(IIJB:IIJE,1:D%NKT) & + * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PM3_TH2_WTH2(IIB:IIE,IJB:IJE,IKB-1)=PM3_TH2_WTH2(IIB:IIE,IJB:IJE,IKB) -PM3_TH2_WTH2(IIB:IIE,IJB:IJE,IKE+1)=PM3_TH2_WTH2(IIB:IIE,IJB:IJE,IKE) +PM3_TH2_WTH2(IIJB:IIJE,IKB-1)=PM3_TH2_WTH2(IIJB:IIJE,IKB) +PM3_TH2_WTH2(IIJB:IIJE,IKE+1)=PM3_TH2_WTH2(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WTH2',1,ZHOOK_HANDLE) END SUBROUTINE M3_TH2_WTH2 @@ -1631,39 +1622,39 @@ END SUBROUTINE M3_TH2_WTH2 SUBROUTINE D_M3_TH2_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PD_M3_TH2_WTH2_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_WTH2_O_DDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_WTH2_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WTH2_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PETHETA(IIB:IIE,IJB:IJE,1:D%NKT) & - * (0.5/PD(IIB:IIE,IJB:IJE,1:D%NKT) - (1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))& - *(1.+0.5*PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+1.5*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)& - +0.5*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)**2)/PD(IIB:IIE,IJB:IJE,1:D%NKT)**2) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = PBLL_O_E(IIJB:IIJE,1:D%NKT)*PETHETA(IIJB:IIJE,1:D%NKT) & + * (0.5/PD(IIJB:IIJE,1:D%NKT) - (1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))& + *(1.+0.5*PREDTH1(IIJB:IIJE,1:D%NKT)+1.5*PREDR1(IIJB:IIJE,1:D%NKT)& + +0.5*PREDR1(IIJB:IIJE,1:D%NKT)**2)/PD(IIJB:IIJE,1:D%NKT)**2) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & - *0.5/CSTURB%XCTD/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)*CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_TH2_WTH2_O_DDTDZ(IIJB:IIJE,1:D%NKT) = PLEPS(IIJB:IIJE,1:D%NKT) & + *0.5/CSTURB%XCTD/PSQRT_TKE(IIJB:IIJE,1:D%NKT)*CSTURB%XCTV * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PD_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_TH2_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_TH2_WTH2_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_TH2_WTH2_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_TH2_WTH2_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_TH2_WTH2_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WTH2_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_TH2_WTH2_O_DDTDZ @@ -1671,37 +1662,37 @@ END SUBROUTINE D_M3_TH2_WTH2_O_DDTDZ SUBROUTINE M3_TH2_W2R(D,CSTURB,PD,PLM,PLEPS,PTKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_TH2_W2R) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_TH2_W2R - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_TH2_W2R + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_W2R',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT) & - /PD(IIB:IIE,IJB:IJE,1:D%NKT)*PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT)**2 -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = PBLL_O_E(IIJB:IIJE,1:D%NKT)*PEMOIST(IIJB:IIJE,1:D%NKT) & + /PD(IIJB:IIJE,1:D%NKT)*PDTDZ(IIJB:IIJE,1:D%NKT)**2 +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_TH2_W2R(IIB:IIE,IJB:IJE,1:D%NKT) = 0.75*CSTURB%XCTV**2*ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) & - *PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PTKE(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_TH2_W2R(IIJB:IIJE,1:D%NKT) = 0.75*CSTURB%XCTV**2*ZWORK2(IIJB:IIJE,1:D%NKT) & + *PLM(IIJB:IIJE,1:D%NKT)*PLEPS(IIJB:IIJE,1:D%NKT)/PTKE(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PM3_TH2_W2R(IIB:IIE,IJB:IJE,IKB-1)=PM3_TH2_W2R(IIB:IIE,IJB:IJE,IKB) -PM3_TH2_W2R(IIB:IIE,IJB:IJE,IKE+1)=PM3_TH2_W2R(IIB:IIE,IJB:IJE,IKE) +PM3_TH2_W2R(IIJB:IIJE,IKB-1)=PM3_TH2_W2R(IIJB:IIJE,IKB) +PM3_TH2_W2R(IIJB:IIJE,IKE+1)=PM3_TH2_W2R(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_W2R',1,ZHOOK_HANDLE) END SUBROUTINE M3_TH2_W2R @@ -1709,40 +1700,40 @@ END SUBROUTINE M3_TH2_W2R SUBROUTINE D_M3_TH2_W2R_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PEMOIST,PDTDZ,PD_M3_TH2_W2R_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: 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),INTENT(OUT) :: PD_M3_TH2_W2R_O_DDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_W2R_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_W2R_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)& - /PD(IIB:IIE,IJB:IJE,1:D%NKT)*PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT)*(2.-PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)* & - (1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT)) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = PBLL_O_E(IIJB:IIJE,1:D%NKT)*PEMOIST(IIJB:IIJE,1:D%NKT)& + /PD(IIJB:IIJE,1:D%NKT)*PDTDZ(IIJB:IIJE,1:D%NKT)*(2.-PREDTH1(IIJB:IIJE,1:D%NKT)* & + (1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT)) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = 0.75*CSTURB%XCTV**2*PLM(IIB:IIE,IJB:IJE,1:D%NKT) *PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & - /PTKE(IIB:IIE,IJB:IJE,1:D%NKT) * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_TH2_W2R_O_DDTDZ(IIJB:IIJE,1:D%NKT) = 0.75*CSTURB%XCTV**2*PLM(IIJB:IIJE,1:D%NKT) *PLEPS(IIJB:IIJE,1:D%NKT) & + /PTKE(IIJB:IIJE,1:D%NKT) * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PD_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_TH2_W2R_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_TH2_W2R_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_TH2_W2R_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_TH2_W2R_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_TH2_W2R_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_W2R_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_TH2_W2R_O_DDTDZ @@ -1750,36 +1741,36 @@ END SUBROUTINE D_M3_TH2_W2R_O_DDTDZ SUBROUTINE M3_TH2_WR2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_TH2_WR2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_TH2_WR2 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_TH2_WR2 + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WR2',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)& - *PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT))**2/PD(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = (PBLL_O_E(IIJB:IIJE,1:D%NKT)*PEMOIST(IIJB:IIJE,1:D%NKT)& + *PDTDZ(IIJB:IIJE,1:D%NKT))**2/PD(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_TH2_WR2(IIB:IIE,IJB:IJE,1:D%NKT) = 0.25*CSTURB%XCTV**2*ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT)& - *PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_TH2_WR2(IIJB:IIJE,1:D%NKT) = 0.25*CSTURB%XCTV**2*ZWORK2(IIJB:IIJE,1:D%NKT)& + *PLEPS(IIJB:IIJE,1:D%NKT)/PSQRT_TKE(IIJB:IIJE,1:D%NKT)/CSTURB%XCTD +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PM3_TH2_WR2(IIB:IIE,IJB:IJE,IKB-1)=PM3_TH2_WR2(IIB:IIE,IJB:IJE,IKB) -PM3_TH2_WR2(IIB:IIE,IJB:IJE,IKE+1)=PM3_TH2_WR2(IIB:IIE,IJB:IJE,IKE) +PM3_TH2_WR2(IIJB:IIJE,IKB-1)=PM3_TH2_WR2(IIJB:IIJE,IKB) +PM3_TH2_WR2(IIJB:IIJE,IKE+1)=PM3_TH2_WR2(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WR2',1,ZHOOK_HANDLE) END SUBROUTINE M3_TH2_WR2 @@ -1787,39 +1778,39 @@ END SUBROUTINE M3_TH2_WR2 SUBROUTINE D_M3_TH2_WR2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PD_M3_TH2_WR2_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_WR2_O_DDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_WR2_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WR2_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT))**2 & -*PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT)*(2.-PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT) & -*(1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT)) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = (PBLL_O_E(IIJB:IIJE,1:D%NKT)*PEMOIST(IIJB:IIJE,1:D%NKT))**2 & +*PDTDZ(IIJB:IIJE,1:D%NKT)/PD(IIJB:IIJE,1:D%NKT)*(2.-PREDTH1(IIJB:IIJE,1:D%NKT) & +*(1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT)) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = 0.25*CSTURB%XCTV**2*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & - / PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_TH2_WR2_O_DDTDZ(IIJB:IIJE,1:D%NKT) = 0.25*CSTURB%XCTV**2*PLEPS(IIJB:IIJE,1:D%NKT) & + / PSQRT_TKE(IIJB:IIJE,1:D%NKT)/CSTURB%XCTD * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PD_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_TH2_WR2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_TH2_WR2_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_TH2_WR2_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_TH2_WR2_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_TH2_WR2_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WR2_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_TH2_WR2_O_DDTDZ @@ -1827,37 +1818,37 @@ END SUBROUTINE D_M3_TH2_WR2_O_DDTDZ SUBROUTINE M3_TH2_WTHR(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_TH2_WTHR) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_TH2_WTHR - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_TH2_WTHR + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WTHR',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT) & - * PDTDZ(IIB:IIE,IJB:IJE,1:D%NKT)*(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = PBLL_O_E(IIJB:IIJE,1:D%NKT)*PEMOIST(IIJB:IIJE,1:D%NKT) & + * PDTDZ(IIJB:IIJE,1:D%NKT)*(1.+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_TH2_WTHR(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.5*CSTURB%XCTV*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & - / PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_TH2_WTHR(IIJB:IIJE,1:D%NKT) = - 0.5*CSTURB%XCTV*PLEPS(IIJB:IIJE,1:D%NKT) & + / PSQRT_TKE(IIJB:IIJE,1:D%NKT)/CSTURB%XCTD * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PM3_TH2_WTHR(IIB:IIE,IJB:IJE,IKB-1)=PM3_TH2_WTHR(IIB:IIE,IJB:IJE,IKB) -PM3_TH2_WTHR(IIB:IIE,IJB:IJE,IKE+1)=PM3_TH2_WTHR(IIB:IIE,IJB:IJE,IKE) +PM3_TH2_WTHR(IIJB:IIJE,IKB-1)=PM3_TH2_WTHR(IIJB:IIJE,IKB) +PM3_TH2_WTHR(IIJB:IIJE,IKE+1)=PM3_TH2_WTHR(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WTHR',1,ZHOOK_HANDLE) END SUBROUTINE M3_TH2_WTHR @@ -1865,39 +1856,39 @@ END SUBROUTINE M3_TH2_WTHR SUBROUTINE D_M3_TH2_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PD_M3_TH2_WTHR_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_WTHR_O_DDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_TH2_WTHR_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WTHR_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PEMOIST(IIB:IIE,IJB:IJE,1:D%NKT)* & - (1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT) * (1. -PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)*& - (1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT)) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = PBLL_O_E(IIJB:IIJE,1:D%NKT)*PEMOIST(IIJB:IIJE,1:D%NKT)* & + (1.+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT) * (1. -PREDTH1(IIJB:IIJE,1:D%NKT)*& + (1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT)) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.5*CSTURB%XCTV*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & - / PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_TH2_WTHR_O_DDTDZ(IIJB:IIJE,1:D%NKT) = - 0.5*CSTURB%XCTV*PLEPS(IIJB:IIJE,1:D%NKT) & + / PSQRT_TKE(IIJB:IIJE,1:D%NKT)/CSTURB%XCTD * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PD_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_TH2_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_TH2_WTHR_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_TH2_WTHR_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_TH2_WTHR_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_TH2_WTHR_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WTHR_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_TH2_WTHR_O_DDTDZ @@ -1905,35 +1896,35 @@ END SUBROUTINE D_M3_TH2_WTHR_O_DDTDZ SUBROUTINE M3_THR_WTHR(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PM3_THR_WTHR) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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),INTENT(OUT) :: PM3_THR_WTHR - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_THR_WTHR + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WTHR',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT))* & - (1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = (1.+PREDTH1(IIJB:IIJE,1:D%NKT))* & + (1.+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_THR_WTHR(IIB:IIE,IJB:IJE,1:D%NKT) = 0.5*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD & - * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_THR_WTHR(IIJB:IIJE,1:D%NKT) = 0.5*PLEPS(IIJB:IIJE,1:D%NKT)/PSQRT_TKE(IIJB:IIJE,1:D%NKT)/CSTURB%XCTD & + * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PM3_THR_WTHR(IIB:IIE,IJB:IJE,IKB-1)=PM3_THR_WTHR(IIB:IIE,IJB:IJE,IKB) -PM3_THR_WTHR(IIB:IIE,IJB:IJE,IKE+1)=PM3_THR_WTHR(IIB:IIE,IJB:IJE,IKE) +PM3_THR_WTHR(IIJB:IIJE,IKB-1)=PM3_THR_WTHR(IIJB:IIJE,IKB) +PM3_THR_WTHR(IIJB:IIJE,IKE+1)=PM3_THR_WTHR(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WTHR',1,ZHOOK_HANDLE) END SUBROUTINE M3_THR_WTHR @@ -1941,38 +1932,38 @@ END SUBROUTINE M3_THR_WTHR SUBROUTINE D_M3_THR_WTHR_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PD_M3_THR_WTHR_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTHR_O_DDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTHR_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PETHETA(IIB:IIE,IJB:IJE,1:D%NKT)*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT) & - *(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*(1.-(1.+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)) & - *(1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT)) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = PETHETA(IIJB:IIJE,1:D%NKT)*PBLL_O_E(IIJB:IIJE,1:D%NKT)/PD(IIJB:IIJE,1:D%NKT) & + *(1.+PREDR1(IIJB:IIJE,1:D%NKT))*(1.-(1.+PREDTH1(IIJB:IIJE,1:D%NKT)) & + *(1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT)) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = 0.5*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT) & - / CSTURB%XCTD * CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_THR_WTHR_O_DDTDZ(IIJB:IIJE,1:D%NKT) = 0.5*PLEPS(IIJB:IIJE,1:D%NKT)/PSQRT_TKE(IIJB:IIJE,1:D%NKT) & + / CSTURB%XCTD * CSTURB%XCTV * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PD_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_THR_WTHR_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_THR_WTHR_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_THR_WTHR_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_THR_WTHR_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_THR_WTHR_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_THR_WTHR_O_DDTDZ @@ -1980,37 +1971,37 @@ END SUBROUTINE D_M3_THR_WTHR_O_DDTDZ SUBROUTINE M3_THR_WTH2(D,CSTURB,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PM3_THR_WTH2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_THR_WTH2 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_THR_WTH2 + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WTH2',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)* & - PETHETA(IIB:IIE,IJB:IJE,1:D%NKT)*PDRDZ(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = (1.+PREDR1(IIJB:IIJE,1:D%NKT))*PBLL_O_E(IIJB:IIJE,1:D%NKT)* & + PETHETA(IIJB:IIJE,1:D%NKT)*PDRDZ(IIJB:IIJE,1:D%NKT)/PD(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_THR_WTH2(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.25*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & - / PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD*CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_THR_WTH2(IIJB:IIJE,1:D%NKT) = - 0.25*PLEPS(IIJB:IIJE,1:D%NKT) & + / PSQRT_TKE(IIJB:IIJE,1:D%NKT)/CSTURB%XCTD*CSTURB%XCTV * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PM3_THR_WTH2(IIB:IIE,IJB:IJE,IKB-1)=PM3_THR_WTH2(IIB:IIE,IJB:IJE,IKB) -PM3_THR_WTH2(IIB:IIE,IJB:IJE,IKE+1)=PM3_THR_WTH2(IIB:IIE,IJB:IJE,IKE) +PM3_THR_WTH2(IIJB:IIJE,IKB-1)=PM3_THR_WTH2(IIJB:IIJE,IKB) +PM3_THR_WTH2(IIJB:IIJE,IKE+1)=PM3_THR_WTH2(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WTH2',1,ZHOOK_HANDLE) END SUBROUTINE M3_THR_WTH2 @@ -2018,40 +2009,40 @@ END SUBROUTINE M3_THR_WTH2 SUBROUTINE D_M3_THR_WTH2_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_THR_WTH2_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTH2_O_DDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTH2_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTH2_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = -(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*(PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT) & - *PETHETA(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT))**2& - *PDRDZ(IIB:IIE,IJB:IJE,1:D%NKT)& - *(1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = -(1.+PREDR1(IIJB:IIJE,1:D%NKT))*(PBLL_O_E(IIJB:IIJE,1:D%NKT) & + *PETHETA(IIJB:IIJE,1:D%NKT)/PD(IIJB:IIJE,1:D%NKT))**2& + *PDRDZ(IIJB:IIJE,1:D%NKT)& + *(1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT)) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.25*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) & - /PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)/CSTURB%XCTD*CSTURB%XCTV**2 * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_THR_WTH2_O_DDTDZ(IIJB:IIJE,1:D%NKT) = - 0.25*PLEPS(IIJB:IIJE,1:D%NKT) & + /PSQRT_TKE(IIJB:IIJE,1:D%NKT)/CSTURB%XCTD*CSTURB%XCTV**2 * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PD_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_THR_WTH2_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_THR_WTH2_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_THR_WTH2_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_THR_WTH2_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_THR_WTH2_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTH2_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_THR_WTH2_O_DDTDZ @@ -2059,38 +2050,38 @@ END SUBROUTINE D_M3_THR_WTH2_O_DDTDZ SUBROUTINE D_M3_THR_WTH2_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PD_M3_THR_WTH2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTH2_O_DDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTH2_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTH2_O_DDRDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*PETHETA(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT)& - *(-(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT)& - *(1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))+(1.+2.*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = PBLL_O_E(IIJB:IIJE,1:D%NKT)*PETHETA(IIJB:IIJE,1:D%NKT)/PD(IIJB:IIJE,1:D%NKT)& + *(-(1.+PREDR1(IIJB:IIJE,1:D%NKT))*PREDR1(IIJB:IIJE,1:D%NKT)/PD(IIJB:IIJE,1:D%NKT)& + *(1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))+(1.+2.*PREDR1(IIJB:IIJE,1:D%NKT))) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.25*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)/PSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT)& - / CSTURB%XCTD*CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_THR_WTH2_O_DDRDZ(IIJB:IIJE,1:D%NKT) = - 0.25*PLEPS(IIJB:IIJE,1:D%NKT)/PSQRT_TKE(IIJB:IIJE,1:D%NKT)& + / CSTURB%XCTD*CSTURB%XCTV * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PD_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_THR_WTH2_O_DDRDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_THR_WTH2_O_DDRDZ(IIJB:IIJE,IKB-1)=PD_M3_THR_WTH2_O_DDRDZ(IIJB:IIJE,IKB) +PD_M3_THR_WTH2_O_DDRDZ(IIJB:IIJE,IKE+1)=PD_M3_THR_WTH2_O_DDRDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTH2_O_DDRDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_THR_WTH2_O_DDRDZ @@ -2098,35 +2089,35 @@ END SUBROUTINE D_M3_THR_WTH2_O_DDRDZ SUBROUTINE M3_THR_W2TH(D,CSTURB,PREDR1,PD,PLM,PLEPS,PTKE,PDRDZ,PM3_THR_W2TH) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - 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),INTENT(OUT) :: PM3_THR_W2TH - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_THR_W2TH + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2TH',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = (1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*PDRDZ(IIB:IIE,IJB:IJE,1:D%NKT)/PD(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = (1.+PREDR1(IIJB:IIJE,1:D%NKT))*PDRDZ(IIJB:IIJE,1:D%NKT)/PD(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PM3_THR_W2TH(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.75*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)& - / PTKE(IIB:IIE,IJB:IJE,1:D%NKT) * CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PM3_THR_W2TH(IIJB:IIJE,1:D%NKT) = - 0.75*PLM(IIJB:IIJE,1:D%NKT)*PLEPS(IIJB:IIJE,1:D%NKT)& + / PTKE(IIJB:IIJE,1:D%NKT) * CSTURB%XCTV * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PM3_THR_W2TH(IIB:IIE,IJB:IJE,IKB-1)=PM3_THR_W2TH(IIB:IIE,IJB:IJE,IKB) -PM3_THR_W2TH(IIB:IIE,IJB:IJE,IKE+1)=PM3_THR_W2TH(IIB:IIE,IJB:IJE,IKE) +PM3_THR_W2TH(IIJB:IIJE,IKB-1)=PM3_THR_W2TH(IIJB:IIJE,IKB) +PM3_THR_W2TH(IIJB:IIJE,IKE+1)=PM3_THR_W2TH(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2TH',1,ZHOOK_HANDLE) END SUBROUTINE M3_THR_W2TH @@ -2134,40 +2125,40 @@ END SUBROUTINE M3_THR_W2TH SUBROUTINE D_M3_THR_W2TH_O_DDTDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDRDZ,PETHETA,PD_M3_THR_W2TH_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2TH_O_DDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2TH_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2TH_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = -PETHETA(IIB:IIE,IJB:IJE,1:D%NKT)*PBLL_O_E(IIB:IIE,IJB:IJE,1:D%NKT)*& -(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*PDRDZ(IIB:IIE,IJB:IJE,1:D%NKT)& -*(1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT)**2 -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = -PETHETA(IIJB:IIJE,1:D%NKT)*PBLL_O_E(IIJB:IIJE,1:D%NKT)*& +(1.+PREDR1(IIJB:IIJE,1:D%NKT))*PDRDZ(IIJB:IIJE,1:D%NKT)& +*(1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT)**2 +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.75*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)& - / PTKE(IIB:IIE,IJB:IJE,1:D%NKT) * CSTURB%XCTV**2 * ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_THR_W2TH_O_DDTDZ(IIJB:IIJE,1:D%NKT) = - 0.75*PLM(IIJB:IIJE,1:D%NKT)*PLEPS(IIJB:IIJE,1:D%NKT)& + / PTKE(IIJB:IIJE,1:D%NKT) * CSTURB%XCTV**2 * ZWORK1(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PD_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_THR_W2TH_O_DDTDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_THR_W2TH_O_DDTDZ(IIJB:IIJE,IKB-1)=PD_M3_THR_W2TH_O_DDTDZ(IIJB:IIJE,IKB) +PD_M3_THR_W2TH_O_DDTDZ(IIJB:IIJE,IKE+1)=PD_M3_THR_W2TH_O_DDTDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2TH_O_DDTDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_THR_W2TH_O_DDTDZ @@ -2175,37 +2166,37 @@ END SUBROUTINE D_M3_THR_W2TH_O_DDTDZ SUBROUTINE D_M3_THR_W2TH_O_DDRDZ(D,CSTURB,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE,PD_M3_THR_W2TH_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2TH_O_DDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1,ZWORK2 ! working array - INTEGER :: IKB, IKE, JI,JJ,JK,IIB,IIE,IJB,IJE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2TH_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array + INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2TH_O_DDRDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT) = -(1.+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT)& -* (1.5+PREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT)**2 & - +(1.+2.*PREDR1(IIB:IIE,IJB:IJE,1:D%NKT))/PD(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +IIJE=D%NIJE +IIJB=D%NIJB + + +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +ZWORK1(IIJB:IIJE,1:D%NKT) = -(1.+PREDR1(IIJB:IIJE,1:D%NKT))*PREDR1(IIJB:IIJE,1:D%NKT)& +* (1.5+PREDTH1(IIJB:IIJE,1:D%NKT)+PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT)**2 & + +(1.+2.*PREDR1(IIJB:IIJE,1:D%NKT))/PD(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) CALL MZF_PHY(D,ZWORK1,ZWORK2) -!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) -PD_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,1:D%NKT) = - 0.75*PLM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)& - / PTKE(IIB:IIE,IJB:IJE,1:D%NKT) * CSTURB%XCTV * ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT) -!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +!$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) +PD_M3_THR_W2TH_O_DDRDZ(IIJB:IIJE,1:D%NKT) = - 0.75*PLM(IIJB:IIJE,1:D%NKT)*PLEPS(IIJB:IIJE,1:D%NKT)& + / PTKE(IIJB:IIJE,1:D%NKT) * CSTURB%XCTV * ZWORK2(IIJB:IIJE,1:D%NKT) +!$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT) ! -PD_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,IKB-1)=PD_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,IKB) -PD_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,IKE+1)=PD_M3_THR_W2TH_O_DDRDZ(IIB:IIE,IJB:IJE,IKE) +PD_M3_THR_W2TH_O_DDRDZ(IIJB:IIJE,IKB-1)=PD_M3_THR_W2TH_O_DDRDZ(IIJB:IIJE,IKB) +PD_M3_THR_W2TH_O_DDRDZ(IIJB:IIJE,IKE+1)=PD_M3_THR_W2TH_O_DDRDZ(IIJB:IIJE,IKE) ! IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2TH_O_DDRDZ',1,ZHOOK_HANDLE) END SUBROUTINE D_M3_THR_W2TH_O_DDRDZ @@ -2216,14 +2207,14 @@ END SUBROUTINE D_M3_THR_W2TH_O_DDRDZ SUBROUTINE PSI3(D,CSTURB,PREDR1,PREDTH1,PRED2R3,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV,PPSI3) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2TH3 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2R3 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2TH3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2R3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2THR3 CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PPSI3 + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PPSI3 ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PSI3',0,ZHOOK_HANDLE) @@ -2235,14 +2226,14 @@ END SUBROUTINE PSI3 SUBROUTINE D_PSI3DRDZ_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV,PD_PSI3DRDZ_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPSI3 - 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) :: PRED2R3 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PPSI3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2R3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2THR3 CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_PSI3DRDZ_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_PSI3DRDZ_O_DDRDZ REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DRDZ_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2256,14 +2247,14 @@ END SUBROUTINE D_PSI3DRDZ_O_DDRDZ SUBROUTINE D_PSI3DTDZ_O_DDTDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV,PD_PSI3DTDZ_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPSI3 - 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) :: PRED2R3 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PPSI3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2R3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2THR3 CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_PSI3DTDZ_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_PSI3DTDZ_O_DDTDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DTDZ_O_DDTDZ',0,ZHOOK_HANDLE) @@ -2275,15 +2266,15 @@ END SUBROUTINE D_PSI3DTDZ_O_DDTDZ SUBROUTINE D_PSI3DRDZ2_O_DDRDZ(D,CSTURB,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,PDRDZ,HTURBDIM,OUSERV,PD_PSI3DRDZ2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPSI3 - 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) :: PRED2R3 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRED2THR3 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PPSI3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2R3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRED2THR3 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ CHARACTER(LEN=4), INTENT(IN) :: HTURBDIM ! 1DIM or 3DIM turb. scheme LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_PSI3DRDZ2_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_PSI3DRDZ2_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DRDZ2_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2295,12 +2286,12 @@ END SUBROUTINE D_PSI3DRDZ2_O_DDRDZ SUBROUTINE M3_WR_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PM3_WR_WR2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WR_WR2 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WR_WR2 ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WR2',0,ZHOOK_HANDLE) @@ -2312,13 +2303,13 @@ END SUBROUTINE M3_WR_WR2 SUBROUTINE D_M3_WR_WR2_O_DDRDZ(D,CSTURB,PM3_WR_WR2,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PD_M3_WR_WR2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PM3_WR_WR2 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WR_WR2_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PM3_WR_WR2 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WR_WR2_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WR2_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2330,12 +2321,12 @@ END SUBROUTINE D_M3_WR_WR2_O_DDRDZ SUBROUTINE M3_WR_W2R(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PM3_WR_W2R) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WR_W2R + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WR_W2R ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_W2R',0,ZHOOK_HANDLE) @@ -2347,14 +2338,14 @@ END SUBROUTINE M3_WR_W2R SUBROUTINE D_M3_WR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PKEFF,PTKE,PD_M3_WR_W2R_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PKEFF - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WR_W2R_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WR_W2R_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_W2R_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2366,13 +2357,13 @@ END SUBROUTINE D_M3_WR_W2R_O_DDRDZ SUBROUTINE M3_WR_W2TH(D,CSTURB,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ,PM3_WR_W2TH) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WR_W2TH + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WR_W2TH ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_W2TH',0,ZHOOK_HANDLE) @@ -2384,14 +2375,14 @@ END SUBROUTINE M3_WR_W2TH SUBROUTINE D_M3_WR_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PD_M3_WR_W2TH_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WR_W2TH_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WR_W2TH_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_W2TH_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2403,16 +2394,16 @@ END SUBROUTINE D_M3_WR_W2TH_O_DDRDZ SUBROUTINE M3_WR_WTH2(D,CSTURB,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDRDZ,PM3_WR_WTH2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD - 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), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WR_WTH2 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WR_WTH2 ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WTH2',0,ZHOOK_HANDLE) @@ -2424,17 +2415,17 @@ END SUBROUTINE M3_WR_WTH2 SUBROUTINE D_M3_WR_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PD_M3_WR_WTH2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WR_WTH2_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WR_WTH2_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WTH2_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2446,15 +2437,15 @@ END SUBROUTINE D_M3_WR_WTH2_O_DDRDZ SUBROUTINE M3_WR_WTHR(D,CSTURB,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PETHETA,PM3_WR_WTHR) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_WR_WTHR + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PKEFF + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WR_WTHR ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WTHR',0,ZHOOK_HANDLE) @@ -2466,13 +2457,13 @@ END SUBROUTINE M3_WR_WTHR SUBROUTINE D_M3_WR_WTHR_O_DDRDZ(D,CSTURB,PM3_WR_WTHR,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PD_M3_WR_WTHR_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PM3_WR_WTHR - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_WR_WTHR_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PM3_WR_WTHR + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WR_WTHR_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WTHR_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2484,14 +2475,14 @@ END SUBROUTINE D_M3_WR_WTHR_O_DDRDZ SUBROUTINE M3_R2_W2R(D,CSTURB,PREDR1,PREDTH1,PD,PDRDZ,PLM,PLEPS,PTKE,PM3_R2_W2R) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PM3_R2_W2R + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PM3_R2_W2R ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_W2R',0,ZHOOK_HANDLE) @@ -2503,14 +2494,14 @@ END SUBROUTINE M3_R2_W2R SUBROUTINE D_M3_R2_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,OUSERV,PD_M3_R2_W2R_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - 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%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE LOGICAL, INTENT(IN) :: OUSERV - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_R2_W2R_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_R2_W2R_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2R_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2522,12 +2513,12 @@ END SUBROUTINE D_M3_R2_W2R_O_DDRDZ SUBROUTINE M3_R2_WR2(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PM3_R2_WR2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_R2_WR2 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_R2_WR2 ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WR2',0,ZHOOK_HANDLE) @@ -2539,14 +2530,14 @@ END SUBROUTINE M3_R2_WR2 SUBROUTINE D_M3_R2_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PD_M3_R2_WR2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_R2_WR2_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_R2_WR2_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WR2_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2558,14 +2549,14 @@ END SUBROUTINE D_M3_R2_WR2_O_DDRDZ SUBROUTINE M3_R2_W2TH(D,CSTURB,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ,PM3_R2_W2TH) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_R2_W2TH + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_R2_W2TH ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_W2TH',0,ZHOOK_HANDLE) @@ -2577,16 +2568,16 @@ END SUBROUTINE M3_R2_W2TH SUBROUTINE D_M3_R2_W2TH_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_R2_W2TH_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_R2_W2TH_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_R2_W2TH_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2TH_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2598,13 +2589,13 @@ END SUBROUTINE D_M3_R2_W2TH_O_DDRDZ SUBROUTINE M3_R2_WTH2(D,CSTURB,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PM3_R2_WTH2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PD - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_R2_WTH2 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_R2_WTH2 ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTH2',0,ZHOOK_HANDLE) @@ -2616,15 +2607,15 @@ END SUBROUTINE M3_R2_WTH2 SUBROUTINE D_M3_R2_WTH2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_R2_WTH2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_R2_WTH2_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_R2_WTH2_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTH2_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2636,14 +2627,14 @@ END SUBROUTINE D_M3_R2_WTH2_O_DDRDZ SUBROUTINE M3_R2_WTHR(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PM3_R2_WTHR) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_R2_WTHR + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_R2_WTHR ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTHR',0,ZHOOK_HANDLE) @@ -2655,15 +2646,15 @@ END SUBROUTINE M3_R2_WTHR SUBROUTINE D_M3_R2_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_R2_WTHR_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PETHETA - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDRDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_R2_WTHR_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_R2_WTHR_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTHR_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2675,14 +2666,14 @@ END SUBROUTINE D_M3_R2_WTHR_O_DDRDZ SUBROUTINE D_M3_THR_WTHR_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PD_M3_THR_WTHR_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTHR_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTHR_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2694,14 +2685,14 @@ END SUBROUTINE D_M3_THR_WTHR_O_DDRDZ SUBROUTINE M3_THR_WR2(D,CSTURB,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_THR_WR2) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_THR_WR2 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_THR_WR2 ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WR2',0,ZHOOK_HANDLE) @@ -2713,15 +2704,15 @@ END SUBROUTINE M3_THR_WR2 SUBROUTINE D_M3_THR_WR2_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PD_M3_THR_WR2_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WR2_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WR2_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2733,14 +2724,14 @@ END SUBROUTINE D_M3_THR_WR2_O_DDRDZ SUBROUTINE D_M3_THR_WR2_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PD_M3_THR_WR2_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSQRT_TKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WR2_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WR2_O_DDTDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDTDZ',0,ZHOOK_HANDLE) @@ -2752,13 +2743,13 @@ END SUBROUTINE D_M3_THR_WR2_O_DDTDZ SUBROUTINE M3_THR_W2R(D,CSTURB,PREDTH1,PD,PLM,PLEPS,PTKE,PDTDZ,PM3_THR_W2R) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDTH1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PM3_THR_W2R + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_THR_W2R ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2R',0,ZHOOK_HANDLE) @@ -2770,16 +2761,16 @@ END SUBROUTINE M3_THR_W2R SUBROUTINE D_M3_THR_W2R_O_DDRDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDTDZ,PEMOIST,PD_M3_THR_W2R_O_DDRDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PBLL_O_E - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDTDZ - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PEMOIST - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2R_O_DDRDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PBLL_O_E + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2R_O_DDRDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDRDZ',0,ZHOOK_HANDLE) @@ -2791,13 +2782,13 @@ END SUBROUTINE D_M3_THR_W2R_O_DDRDZ SUBROUTINE D_M3_THR_W2R_O_DDTDZ(D,CSTURB,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PD_M3_THR_W2R_O_DDTDZ) TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CSTURB_t), INTENT(IN) :: CSTURB - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PREDR1 - 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 - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS - REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKE - REAL, DIMENSION(D%NIT,D%NJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2R_O_DDTDZ + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDR1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PREDTH1 + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PD + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS + REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE + REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2R_O_DDTDZ ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDTDZ',0,ZHOOK_HANDLE)