diff --git a/src/common/turb/mode_mf_turb.F90 b/src/common/turb/mode_mf_turb.F90 index 60eb017ee47234f1281084fa97bd1a8913c9dc70..761a73faa5b97e103018b21ea7e24c299fca6022 100644 --- a/src/common/turb/mode_mf_turb.F90 +++ b/src/common/turb/mode_mf_turb.F90 @@ -128,6 +128,7 @@ REAL, DIMENSION(D%NIT,D%NKT,KSV), INTENT(OUT):: PFLXZSVMF REAL, DIMENSION(D%NIT,D%NKT) :: ZVARS INTEGER :: JSV !number of scalar variables and Loop counter +INTEGER :: JI, JK REAL(KIND=JPRB) :: ZHOOK_HANDLE ! !---------------------------------------------------------------------------- @@ -151,19 +152,22 @@ PSVDT = 0. ! CALL MZM_MF(D, PTHLM(:,:), PFLXZTHMF(:,:)) -PFLXZTHMF(:,:) = PEMF(:,:)*(PTHL_UP(:,:)-PFLXZTHMF(:,:)) - CALL MZM_MF(D, PRTM(:,:), PFLXZRMF(:,:)) -PFLXZRMF(:,:) = PEMF(:,:)*(PRT_UP(:,:)-PFLXZRMF(:,:)) - CALL MZM_MF(D, PTHVM(:,:), PFLXZTHVMF(:,:)) + +!$mnh_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) +PFLXZTHMF(:,:) = PEMF(:,:)*(PTHL_UP(:,:)-PFLXZTHMF(:,:)) +PFLXZRMF(:,:) = PEMF(:,:)*(PRT_UP(:,:)-PFLXZRMF(:,:)) PFLXZTHVMF(:,:) = PEMF(:,:)*(PTHV_UP(:,:)-PFLXZTHVMF(:,:)) +!$mnh_end_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) IF (OMIXUV) THEN CALL MZM_MF(D, PUM(:,:), PFLXZUMF(:,:)) - PFLXZUMF(:,:) = PEMF(:,:)*(PU_UP(:,:)-PFLXZUMF(:,:)) CALL MZM_MF(D, PVM(:,:), PFLXZVMF(:,:)) + !$mnh_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) + PFLXZUMF(:,:) = PEMF(:,:)*(PU_UP(:,:)-PFLXZUMF(:,:)) PFLXZVMF(:,:) = PEMF(:,:)*(PV_UP(:,:)-PFLXZVMF(:,:)) + !$mnh_end_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) ELSE PFLXZUMF(:,:) = 0. PFLXZVMF(:,:) = 0. @@ -184,25 +188,24 @@ ENDIF ! CALL TRIDIAG_MASSFLUX(D,PTHLM,PFLXZTHMF,-PEMF,PTSTEP,PIMPL, & PDZZ,PRHODJ,ZVARS ) -! compute new flux +! compute new flux and THL tendency CALL MZM_MF(D, ZVARS(:,:), PFLXZTHMF(:,:)) +!$mnh_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) PFLXZTHMF(:,:) = PEMF(:,:)*(PTHL_UP(:,:)-PFLXZTHMF(:,:)) - -!!! compute THL tendency -! PTHLDT(:,:)= (ZVARS(:,:)-PTHLM(:,:))/PTSTEP +!$mnh_end_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) ! ! 3.2 Compute the tendency for the conservative mixing ratio ! CALL TRIDIAG_MASSFLUX(D,PRTM(:,:),PFLXZRMF,-PEMF,PTSTEP,PIMPL, & PDZZ,PRHODJ,ZVARS ) -! compute new flux +! compute new flux and RT tendency CALL MZM_MF(D, ZVARS(:,:), PFLXZRMF(:,:)) +!$mnh_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) PFLXZRMF(:,:) = PEMF(:,:)*(PRT_UP(:,:)-PFLXZRMF(:,:)) - -!!! compute RT tendency PRTDT(:,:) = (ZVARS(:,:)-PRTM(:,:))/PTSTEP +!$mnh_end_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) ! IF (OMIXUV) THEN @@ -213,13 +216,12 @@ IF (OMIXUV) THEN CALL TRIDIAG_MASSFLUX(D,PUM,PFLXZUMF,-PEMF,PTSTEP,PIMPL, & PDZZ,PRHODJ,ZVARS ) - ! compute new flux + ! compute new flux and U tendency CALL MZM_MF(D, ZVARS(:,:), PFLXZUMF(:,:)) + !$mnh_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) PFLXZUMF(:,:) = PEMF(:,:)*(PU_UP(:,:)-PFLXZUMF(:,:)) - - ! compute U tendency PUDT(:,:)= (ZVARS(:,:)-PUM(:,:))/PTSTEP - + !$mnh_end_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) ! ! ! 3.4 Compute the tendency for the (non conservative but treated as it for the time beiing) @@ -228,12 +230,12 @@ IF (OMIXUV) THEN ! CALL TRIDIAG_MASSFLUX(D,PVM,PFLXZVMF,-PEMF,PTSTEP,PIMPL, & PDZZ,PRHODJ,ZVARS ) - ! compute new flux + ! compute new flux and V tendency CALL MZM_MF(D, ZVARS(:,:), PFLXZVMF(:,:)) + !$mnh_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) PFLXZVMF(:,:) = PEMF(:,:)*(PV_UP(:,:)-PFLXZVMF(:,:)) - - ! compute V tendency PVDT(:,:)= (ZVARS(:,:)-PVM(:,:))/PTSTEP + !$mnh_end_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) ELSE PUDT(:,:)=0. PVDT(:,:)=0. @@ -247,20 +249,21 @@ DO JSV=1,KSV ! ( Resulting fluxes are in flux level (w-point) as PEMF and PTHL_UP ) CALL MZM_MF(D, PSVM(:,:,JSV), PFLXZSVMF(:,:,JSV)) + !$mnh_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) PFLXZSVMF(:,:,JSV) = PEMF(:,:)*(PSV_UP(:,:,JSV)-PFLXZSVMF(:,:,JSV)) - + !$mnh_end_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) ! ! 3.5 Compute the tendency for scalar variables ! (PDZZ and flux in w-point and PRHODJ is mass point, result in mass point) ! CALL TRIDIAG_MASSFLUX(D,PSVM(:,:,JSV),PFLXZSVMF(:,:,JSV),& -PEMF,PTSTEP,PIMPL,PDZZ,PRHODJ,ZVARS ) - ! compute new flux + ! compute new flux and Sv tendency CALL MZM_MF(D, ZVARS, PFLXZSVMF(:,:,JSV)) + !$mnh_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) PFLXZSVMF(:,:,JSV) = PEMF(:,:)*(PSV_UP(:,:,JSV)-PFLXZSVMF(:,:,JSV)) - - ! compute Sv tendency PSVDT(:,:,JSV)= (ZVARS(:,:)-PSVM(:,:,JSV))/PTSTEP + !$mnh_end_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) ENDDO ! diff --git a/src/common/turb/mode_mf_turb_expl.F90 b/src/common/turb/mode_mf_turb_expl.F90 index d0f349a11330a2bb724e2f1a280e310fcd9910e9..7332c477ae257a847b9cab26d651d05adc6eef7b 100644 --- a/src/common/turb/mode_mf_turb_expl.F90 +++ b/src/common/turb/mode_mf_turb_expl.F90 @@ -99,7 +99,7 @@ REAL, DIMENSION(D%NIT,D%NKT) :: ZFLXZTHSMF,ZTHS_UP,ZTHSM ! Theta S flux REAL, DIMENSION(D%NIT,D%NKT) :: ZQT_UP,ZQTM,ZTHSDT,ZQTDT REAL, DIMENSION(D%NIT,D%NKT) :: ZTHLM_F,ZRTM_F -INTEGER :: JK ! loop counter +INTEGER :: JK, JI ! loop counter REAL(KIND=JPRB) :: ZHOOK_HANDLE !---------------------------------------------------------------------------- @@ -130,25 +130,31 @@ PVDT = 0. CALL MZM_MF(D, PRTM (:,:), ZRTM_F(:,:)) CALL MZM_MF(D, PTHLM(:,:), ZTHLM_F(:,:)) -ZQTM (:,:) = ZRTM_F (:,:)/(1.+ZRTM_F (:,:)) -ZQT_UP (:,:) = PRT_UP (:,:)/(1.+PRT_UP (:,:)) -ZTHS_UP(:,:) = PTHL_UP(:,:)*(1.+PARAMMF%XLAMBDA_MF*ZQT_UP(:,:)) -ZTHSM (:,:) = ZTHLM_F(:,:)*(1.+PARAMMF%XLAMBDA_MF*ZQTM(:,:)) +!$mnh_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) +ZQTM(:,:) = ZRTM_F(:,:)/(1.+ZRTM_F(:,:)) +ZQT_UP(:,:) = PRT_UP(:,:)/(1.+PRT_UP(:,:)) +ZTHS_UP(:,:)= PTHL_UP(:,:)*(1.+PARAMMF%XLAMBDA_MF*ZQT_UP(:,:)) +ZTHSM(:,:) = ZTHLM_F(:,:)*(1.+PARAMMF%XLAMBDA_MF*ZQTM(:,:)) +!$mnh_end_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) CALL MZM_MF(D, PTHLM(:,:), PFLXZTHLMF(:,:)) -PFLXZTHLMF(:,:) = PEMF(:,:)*(PTHL_UP(:,:)-PFLXZTHLMF(:,:)) ! ThetaL -CALL MZM_MF(D, PRTM (:,:), PFLXZRMF(:,:)) -PFLXZRMF(:,:) = PEMF(:,:)*(PRT_UP (:,:)-PFLXZRMF(:,:)) ! Rt +CALL MZM_MF(D, PRTM(:,:), PFLXZRMF(:,:)) CALL MZM_MF(D, PTHVM(:,:), PFLXZTHVMF(:,:)) +!$mnh_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) +PFLXZTHLMF(:,:) = PEMF(:,:)*(PTHL_UP(:,:)-PFLXZTHLMF(:,:)) ! ThetaL +PFLXZRMF(:,:) = PEMF(:,:)*(PRT_UP(:,:)-PFLXZRMF(:,:)) ! Rt PFLXZTHVMF(:,:) = PEMF(:,:)*(PTHV_UP(:,:)-PFLXZTHVMF(:,:)) ! ThetaV ZFLXZTHSMF(:,:) = PEMF(:,:)*(ZTHS_UP(:,:)-ZTHSM(:,:)) ! Theta S flux +!$mnh_end_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) IF (OMIXUV) THEN CALL MZM_MF(D, PUM(:,:), PFLXZUMF(:,:)) - PFLXZUMF(:,:) = PEMF(:,:)*(PU_UP(:,:)-PFLXZUMF(:,:)) ! U CALL MZM_MF(D, PVM(:,:), PFLXZVMF(:,:)) + !$mnh_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) + PFLXZUMF(:,:) = PEMF(:,:)*(PU_UP(:,:)-PFLXZUMF(:,:)) ! U PFLXZVMF(:,:) = PEMF(:,:)*(PV_UP(:,:)-PFLXZVMF(:,:)) ! V + !$mnh_end_expand_array(JI=D%NIB:D%NIE,JK=D%NKTB:D%NKTE) ELSE PFLXZUMF(:,:) = 0. PFLXZVMF(:,:) = 0. @@ -162,17 +168,21 @@ ENDIF ! -------------------------------------------- DO JK=D%NKB,D%NKE-D%NKL,D%NKL -! PTHLDT(:,JK) = (PFLXZTHLMF(:,JK ) - PFLXZTHLMF(:,JK+D%NKL)) / PRHODJ(:,JK) - PRTDT (:,JK) = (PFLXZRMF (:,JK ) - PFLXZRMF (:,JK+D%NKL)) / PRHODJ(:,JK) - ZQTDT (:,JK) = PRTDT (:,JK)/(1.+ ZRTM_F (:,JK)*ZRTM_F (:,JK)) - ZTHSDT(:,JK) = (ZFLXZTHSMF(:,JK ) - ZFLXZTHSMF(:,JK+D%NKL)) / PRHODJ(:,JK) - PTHLDT(:,JK) = ZTHSDT(:,JK)/(1.+PARAMMF%XLAMBDA_MF*ZQTM(:,JK)) - ZTHLM_F(:,JK)*PARAMMF%XLAMBDA_MF*ZQTDT(:,JK) + DO JI=D%NIB,D%NIE + !PTHLDT(JI,JK) = (PFLXZTHLMF(JI,JK ) - PFLXZTHLMF(JI,JK+D%NKL)) / PRHODJ(JI,JK) + PRTDT(JI,JK) = (PFLXZRMF(JI,JK) - PFLXZRMF(JI,JK+D%NKL)) / PRHODJ(JI,JK) + ZQTDT(JI,JK) = PRTDT(JI,JK)/(1.+ ZRTM_F(JI,JK)*ZRTM_F(JI,JK)) + ZTHSDT(JI,JK)= (ZFLXZTHSMF(JI,JK) - ZFLXZTHSMF(JI,JK+D%NKL)) / PRHODJ(JI,JK) + PTHLDT(JI,JK) = ZTHSDT(JI,JK)/(1.+PARAMMF%XLAMBDA_MF*ZQTM(JI,JK)) - ZTHLM_F(JI,JK)*PARAMMF%XLAMBDA_MF*ZQTDT(JI,JK) + ENDDO END DO IF (OMIXUV) THEN DO JK=D%NKB,D%NKE-D%NKL,D%NKL - PUDT(:,JK) = (PFLXZUMF(:,JK ) - PFLXZUMF(:,JK+D%NKL)) / PRHODJ(:,JK) - PVDT(:,JK) = (PFLXZVMF(:,JK ) - PFLXZVMF(:,JK+D%NKL)) / PRHODJ(:,JK) + DO JI=D%NIB,D%NIE + PUDT(JI,JK) = (PFLXZUMF(JI,JK) - PFLXZUMF(JI,JK+D%NKL)) / PRHODJ(JI,JK) + PVDT(JI,JK) = (PFLXZVMF(JI,JK) - PFLXZVMF(JI,JK+D%NKL)) / PRHODJ(JI,JK) + ENDDO END DO ENDIF