From a927af1db19cc615177439072bb13d71eb668df7 Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Wed, 22 Jun 2022 14:35:28 +0200 Subject: [PATCH] Quentin 22/06/2022: rmc01 expand : files expanded pushed in commit 5e716a46 --- src/common/turb/mode_rmc01.F90 | 222 ++++++++++++------------------- src/common/turb/mode_sbl_phy.F90 | 56 +++----- 2 files changed, 108 insertions(+), 170 deletions(-) diff --git a/src/common/turb/mode_rmc01.F90 b/src/common/turb/mode_rmc01.F90 index 6dc750430..4cd16a671 100644 --- a/src/common/turb/mode_rmc01.F90 +++ b/src/common/turb/mode_rmc01.F90 @@ -122,18 +122,14 @@ IJB=D%NJBC CALL MZF_PHY(D,PZZ,ZZZ) ! replace by height of mass points DO JK=1,D%NKT - DO JJ=IJB,IJE - DO JI=IIB,IIE - ZZZ(JI,JJ,JK) = ZZZ(JI,JJ,JK) - PZZ(JI,JJ,IKB) - ENDDO -ENDDO + !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE) + ZZZ(IIB:IIE,IJB:IJE,JK) = ZZZ(IIB:IIE,IJB:IJE,JK) - PZZ(IIB:IIE,IJB:IJE,IKB) + !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE) END DO ! fill upper level with physical value -DO JJ=IJB,IJE - DO JI=IIB,IIE -ZZZ(JI,JJ,D%NKU) = 2.*ZZZ(JI,JJ,D%NKU-D%NKL) - ZZZ(JI,JJ,D%NKU-2*D%NKL) - ENDDO -ENDDO +!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE) +ZZZ(IIB:IIE,IJB:IJE,D%NKU) = 2.*ZZZ(IIB:IIE,IJB:IJE,D%NKU-D%NKL) - ZZZ(IIB:IIE,IJB:IJE,D%NKU-2*D%NKL) +!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE) ! !------------------------------------------------------------------------------- ! @@ -142,24 +138,18 @@ ENDDO ! ! z/LMO DO JK=1,D%NKT - DO JJ=IJB,IJE - DO JI=IIB,IIE - IF (PLMO(JI,JJ)==XUNDEF)THEN - ZZ_O_LMO(JI,JJ,JK)=0. - ELSE - ZZ_O_LMO(JI,JJ,JK)=ZZZ(JI,JJ,JK)*PDIRCOSZW(JI,JJ)/PLMO(JI,JJ) - ENDIF - ENDDO -ENDDO + !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE) + WHERE (PLMO(IIB:IIE,IJB:IJE)==XUNDEF) + ZZ_O_LMO(IIB:IIE,IJB:IJE,JK)=0. + ELSEWHERE + ZZ_O_LMO(IIB:IIE,IJB:IJE,JK)=ZZZ(IIB:IIE,IJB:IJE,JK)*PDIRCOSZW(IIB:IIE,IJB:IJE)/PLMO(IIB:IIE,IJB:IJE) + END WHERE + !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE) END DO -DO JK=1,D%NKT - DO JJ=IJB,IJE - DO JI=IIB,IIE -ZZ_O_LMO(JI,JJ,JK) = MAX(ZZ_O_LMO(JI,JJ,JK),-10.) -ZZ_O_LMO(JI,JJ,JK) = MIN(ZZ_O_LMO(JI,JJ,JK), 10.) - ENDDO - ENDDO -ENDDO +!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +ZZ_O_LMO(IIB:IIE,IJB:IJE,1:D%NKT) = MAX(ZZ_O_LMO(IIB:IIE,IJB:IJE,1:D%NKT),-10.) +ZZ_O_LMO(IIB:IIE,IJB:IJE,1:D%NKT) = MIN(ZZ_O_LMO(IIB:IIE,IJB:IJE,1:D%NKT), 10.) +!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! ! ! MO function for stress @@ -183,23 +173,17 @@ SELECT CASE (HTURBLEN) CASE ('DELT','DEAR') CALL MXF_PHY(D,PDXX,ZWORK1) CALL MYF_PHY(D,PDYY,ZWORK2) - DO JK=1,D%NKT - DO JJ=IJB,IJE - DO JI=IIB,IIE - ZDH(JI,JJ,JK) = SQRT(ZWORK1(JI,JJ,JK)*ZWORK2(JI,JJ,JK)) - ENDDO - ENDDO -ENDDO + !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) + ZDH(IIB:IIE,IJB:IJE,1:D%NKT) = SQRT(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) ZDH(IIU,IJB:IJE,1:D%NKT) = ZDH(IIU-1,IJB:IJE,1:D%NKT) ZDH(IIB:IIE,IJU,1:D%NKT) = ZDH(IIB:IIE,IJU-1,1:D%NKT) DO JK=1,D%NKT - DO JJ=IJB,IJE - DO JI=IIB,IIE - ZZC(JI,JJ,JK) = 2.*MIN(ZPHIM(JI,JJ,JK),1.)/CST%XKARMAN & - * MAX( PDZZ(JI,JJ,JK)*PDIRCOSZW(JI,JJ) , & - ZDH(JI,JJ,JK)/PDIRCOSZW(JI,JJ)/3. ) - ENDDO -ENDDO + !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE) + ZZC(IIB:IIE,IJB:IJE,JK) = 2.*MIN(ZPHIM(IIB:IIE,IJB:IJE,JK),1.)/CST%XKARMAN & + * MAX( PDZZ(IIB:IIE,IJB:IJE,JK)*PDIRCOSZW(IIB:IIE,IJB:IJE) , & + ZDH(IIB:IIE,IJB:IJE,JK)/PDIRCOSZW(IIB:IIE,IJB:IJE)/3. ) + !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE) END DO ! !* 4. factor controling the transition between SBL and free isotropic turb. (3D case) @@ -207,32 +191,24 @@ ENDDO ! ZGAM(IIB:IIE,IJB:IJE,D%NKA) = 0. DO JK=IKTB,IKTE - DO JJ=IJB,IJE - DO JI=IIB,IIE - ZGAM(JI,JJ,JK) = 1. - EXP( -3.*(ZZZ(JI,JJ,JK)-ZZZ(JI,JJ,IKB))/(ZZC(JI,JJ,JK)) ) - ENDDO -ENDDO - DO JJ=IJB,IJE - DO JI=IIB,IIE - IF (ZGAM(JI,JJ,JK-D%NKL)>ZGAM(JI,JJ,JK) .OR. ZGAM(JI,JJ,JK-D%NKL)>0.99 ) THEN - ZGAM(JI,JJ,JK) = 1. - ENDIF - ENDDO -ENDDO + !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE) + ZGAM(IIB:IIE,IJB:IJE,JK) = 1. - EXP( -3.*(ZZZ(IIB:IIE,IJB:IJE,JK)-ZZZ(IIB:IIE,IJB:IJE,IKB))/(ZZC(IIB:IIE,IJB:IJE,JK)) ) + !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE) + !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE) + WHERE (ZGAM(IIB:IIE,IJB:IJE,JK-D%NKL)>ZGAM(IIB:IIE,IJB:IJE,JK) .OR. ZGAM(IIB:IIE,IJB:IJE,JK-D%NKL)>0.99 ) + ZGAM(IIB:IIE,IJB:IJE,JK) = 1. + END WHERE + !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE) END DO - DO JJ=IJB,IJE - DO JI=IIB,IIE - ZGAM(JI,JJ,D%NKU) = 1. - EXP( -3.*(ZZZ(JI,JJ,D%NKU)-ZZZ(JI,JJ,IKB))& - /(ZZC(JI,JJ,D%NKU)) ) - ENDDO -ENDDO - DO JJ=IJB,IJE - DO JI=IIB,IIE - IF (ZGAM(JI,JJ,D%NKU-D%NKL)>ZGAM(JI,JJ,D%NKU) .OR. ZGAM(JI,JJ,D%NKU-D%NKL)>0.99 ) THEN - ZGAM(JI,JJ,D%NKU) = 1. - ENDIF - ENDDO -ENDDO + !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE) + ZGAM(IIB:IIE,IJB:IJE,D%NKU) = 1. - EXP( -3.*(ZZZ(IIB:IIE,IJB:IJE,D%NKU)-ZZZ(IIB:IIE,IJB:IJE,IKB))& + /(ZZC(IIB:IIE,IJB:IJE,D%NKU)) ) + !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE) + !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE) + WHERE (ZGAM(IIB:IIE,IJB:IJE,D%NKU-D%NKL)>ZGAM(IIB:IIE,IJB:IJE,D%NKU) .OR. ZGAM(IIB:IIE,IJB:IJE,D%NKU-D%NKL)>0.99 ) + ZGAM(IIB:IIE,IJB:IJE,D%NKU) = 1. + END WHERE + !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE) ! ! !------------------------------------------------------------------------------- @@ -245,35 +221,27 @@ ENDDO ZGAM(IIB:IIE,IJB:IJE,1:D%NKT) = 1. ZGAM(IIB:IIE,IJB:IJE,D%NKA) = 0. DO JK=IKTB,IKTE - DO JJ=IJB,IJE - DO JI=IIB,IIE - IF(PSBL_DEPTH(JI,JJ)>0.)THEN - ZGAM(JI,JJ,JK) = TANH( (ZZZ(JI,JJ,JK)-ZZZ(JI,JJ,IKB))/PSBL_DEPTH(JI,JJ) ) - ENDIF - ENDDO -ENDDO - DO JJ=IJB,IJE - DO JI=IIB,IIE - IF (ZGAM(JI,JJ,JK-D%NKL)>0.99 ) THEN - ZGAM(JI,JJ,JK) = 1. - ENDIF - ENDDO -ENDDO + !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE) + WHERE(PSBL_DEPTH(IIB:IIE,IJB:IJE)>0.) + ZGAM(IIB:IIE,IJB:IJE,JK) = TANH( (ZZZ(IIB:IIE,IJB:IJE,JK)-ZZZ(IIB:IIE,IJB:IJE,IKB))/PSBL_DEPTH(IIB:IIE,IJB:IJE) ) + END WHERE + !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE) + !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE) + WHERE (ZGAM(IIB:IIE,IJB:IJE,JK-D%NKL)>0.99 ) + ZGAM(IIB:IIE,IJB:IJE,JK) = 1. + END WHERE + !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE) END DO - DO JJ=IJB,IJE - DO JI=IIB,IIE - IF(PSBL_DEPTH(JI,JJ)>0.)THEN - ZGAM(JI,JJ,D%NKU) = TANH( (ZZZ(JI,JJ,D%NKU)-ZZZ(JI,JJ,IKB))/PSBL_DEPTH(JI,JJ) ) - ENDIF - ENDDO -ENDDO - DO JJ=IJB,IJE - DO JI=IIB,IIE - IF (ZGAM(JI,JJ,D%NKU-D%NKL)>0.99 ) THEN - ZGAM(JI,JJ,JK) = 1. - ENDIF - ENDDO -ENDDO + !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE) + WHERE(PSBL_DEPTH(IIB:IIE,IJB:IJE)>0.) + ZGAM(IIB:IIE,IJB:IJE,D%NKU) = TANH( (ZZZ(IIB:IIE,IJB:IJE,D%NKU)-ZZZ(IIB:IIE,IJB:IJE,IKB))/PSBL_DEPTH(IIB:IIE,IJB:IJE) ) + END WHERE + !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE) + !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE) + WHERE (ZGAM(IIB:IIE,IJB:IJE,D%NKU-D%NKL)>0.99 ) + ZGAM(IIB:IIE,IJB:IJE,JK) = 1. + END WHERE + !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE) ! !------------------------------------------------------------------------------- END SELECT @@ -283,22 +251,16 @@ END SELECT ! --------------------------------- ! DO JK=1,D%NKT -DO JJ=IJB,IJE - DO JI=IIB,IIE - ZL(JI,JJ,JK) = CST%XKARMAN/SQRT(CSTURB%XALPSBL)/CSTURB%XCMFS & - * ZZZ(JI,JJ,JK)*PDIRCOSZW(JI,JJ)/(ZPHIM(JI,JJ,JK)**2*SQRT(ZPHIE(JI,JJ,JK))) - ENDDO -ENDDO +!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE) + ZL(IIB:IIE,IJB:IJE,JK) = CST%XKARMAN/SQRT(CSTURB%XALPSBL)/CSTURB%XCMFS & + * ZZZ(IIB:IIE,IJB:IJE,JK)*PDIRCOSZW(IIB:IIE,IJB:IJE)/(ZPHIM(IIB:IIE,IJB:IJE,JK)**2*SQRT(ZPHIE(IIB:IIE,IJB:IJE,JK))) +!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE) END DO ! -DO JK=1,D%NKT - DO JJ=IJB,IJE - DO JI=IIB,IIE -PLK(JI,JJ,JK)=(1.-ZGAM(JI,JJ,JK))*ZL(JI,JJ,JK) & - +ZGAM(JI,JJ,JK)*PLK(JI,JJ,JK) - ENDDO - ENDDO -ENDDO +!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +PLK(IIB:IIE,IJB:IJE,1:D%NKT)=(1.-ZGAM(IIB:IIE,IJB:IJE,1:D%NKT))*ZL(IIB:IIE,IJB:IJE,1:D%NKT) & + +ZGAM(IIB:IIE,IJB:IJE,1:D%NKT)*PLK(IIB:IIE,IJB:IJE,1:D%NKT) +!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! PLK(IIB:IIE,IJB:IJE,D%NKA) = PLK(IIB:IIE,IJB:IJE,IKB) PLK(IIB:IIE,IJB:IJE,D%NKU) = PLK(IIB:IIE,IJB:IJE,IKE) @@ -307,35 +269,23 @@ PLK(IIB:IIE,IJB:IJE,D%NKU) = PLK(IIB:IIE,IJB:IJE,IKE) !* 7. Modification of the dissipative length ! -------------------------------------- ! -DO JK=1,D%NKT - DO JJ=IJB,IJE - DO JI=IIB,IIE -ZL(JI,JJ,JK) = ZL(JI,JJ,JK) * (CSTURB%XALPSBL**(3./2.)*CST%XKARMAN*CSTURB%XCED) & +!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +ZL(IIB:IIE,IJB:IJE,1:D%NKT) = ZL(IIB:IIE,IJB:IJE,1:D%NKT) * (CSTURB%XALPSBL**(3./2.)*CST%XKARMAN*CSTURB%XCED) & / (CST%XKARMAN/SQRT(CSTURB%XALPSBL)/CSTURB%XCMFS) - ENDDO - ENDDO -ENDDO -! -DO JK=1,D%NKT - DO JJ=IJB,IJE - DO JI=IIB,IIE -IF (ZZ_O_LMO(JI,JJ,JK)<0.)THEN - ZL(JI,JJ,JK) = ZL(JI,JJ,JK)/(1.-1.9*ZZ_O_LMO(JI,JJ,JK)) -ELSE - ZL(JI,JJ,JK) = ZL(JI,JJ,JK)/(1.-0.3*SQRT(ZZ_O_LMO(JI,JJ,JK))) -ENDIF - ENDDO - ENDDO -ENDDO -! -DO JK=1,D%NKT - DO JJ=IJB,IJE - DO JI=IIB,IIE -PLEPS(JI,JJ,JK)=(1.-ZGAM(JI,JJ,JK))*ZL(JI,JJ,JK) & - +ZGAM(JI,JJ,JK)*PLEPS(JI,JJ,JK) - ENDDO - ENDDO -ENDDO +!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +! +!$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +WHERE (ZZ_O_LMO(IIB:IIE,IJB:IJE,1:D%NKT)<0.) + ZL(IIB:IIE,IJB:IJE,1:D%NKT) = ZL(IIB:IIE,IJB:IJE,1:D%NKT)/(1.-1.9*ZZ_O_LMO(IIB:IIE,IJB:IJE,1:D%NKT)) +ELSEWHERE + ZL(IIB:IIE,IJB:IJE,1:D%NKT) = ZL(IIB:IIE,IJB:IJE,1:D%NKT)/(1.-0.3*SQRT(ZZ_O_LMO(IIB:IIE,IJB:IJE,1:D%NKT))) +END WHERE +!$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +! +!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +PLEPS(IIB:IIE,IJB:IJE,1:D%NKT)=(1.-ZGAM(IIB:IIE,IJB:IJE,1:D%NKT))*ZL(IIB:IIE,IJB:IJE,1:D%NKT) & + +ZGAM(IIB:IIE,IJB:IJE,1:D%NKT)*PLEPS(IIB:IIE,IJB:IJE,1:D%NKT) +!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) ! PLEPS(IIB:IIE,IJB:IJE,D%NKA) = PLEPS(IIB:IIE,IJB:IJE,IKB) PLEPS(IIB:IIE,IJB:IJE,D%NKU) = PLEPS(IIB:IIE,IJB:IJE,IKE) diff --git a/src/common/turb/mode_sbl_phy.F90 b/src/common/turb/mode_sbl_phy.F90 index 5b9fdf2f1..82dd100e1 100644 --- a/src/common/turb/mode_sbl_phy.F90 +++ b/src/common/turb/mode_sbl_phy.F90 @@ -61,17 +61,13 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE INTEGER :: JI,JJ,JK ! IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM',0,ZHOOK_HANDLE) -DO JK=1,D%NKT - DO JJ=D%NJBC,D%NJEC - DO JI=D%NIBC,D%NIEC -IF ( PZ_O_LMO(JI,JJ,JK) < 0. )THEN - BUSINGERPHIM(JI,JJ,JK) = (1.-15.*PZ_O_LMO(JI,JJ,JK))**(-0.25) -ELSE - BUSINGERPHIM(JI,JJ,JK) = 1. + 4.7 * PZ_O_LMO(JI,JJ,JK) -ENDIF - ENDDO - ENDDO -ENDDO +!$mnh_expand_where(JI=D%NIBC:D%NIEC,JJ=D%NJBC:D%NJEC,JK=1:D%NKT) +WHERE ( PZ_O_LMO(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT) < 0. ) + BUSINGERPHIM(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT) = (1.-15.*PZ_O_LMO(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT))**(-0.25) +ELSEWHERE + BUSINGERPHIM(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT) = 1. + 4.7 * PZ_O_LMO(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT) +END WHERE +!$mnh_end_expand_where(JI=D%NIBC:D%NIEC,JJ=D%NJBC:D%NJEC,JK=1:D%NKT) IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM',1,ZHOOK_HANDLE) END SUBROUTINE BUSINGER_PHIM ! @@ -91,17 +87,13 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE INTEGER :: JI,JJ,JK ! IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH',0,ZHOOK_HANDLE) -DO JK=1,D%NKT - DO JJ=D%NJBC,D%NJEC - DO JI=D%NIBC,D%NIEC -IF ( PZ_O_LMO(JI,JJ,JK) < 0. )THEN - BUSINGERPHIH(JI,JJ,JK) = 0.74 * (1.-9.*PZ_O_LMO(JI,JJ,JK))**(-0.5) -ELSE - BUSINGERPHIH(JI,JJ,JK) = 0.74 + 4.7 * PZ_O_LMO(JI,JJ,JK) -ENDIF - ENDDO - ENDDO -ENDDO +!$mnh_expand_where(JI=D%NIBC:D%NIEC,JJ=D%NJBC:D%NJEC,JK=1:D%NKT) +WHERE ( PZ_O_LMO(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT) < 0. ) + BUSINGERPHIH(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT) = 0.74 * (1.-9.*PZ_O_LMO(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT))**(-0.5) +ELSEWHERE + BUSINGERPHIH(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT) = 0.74 + 4.7 * PZ_O_LMO(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT) +END WHERE +!$mnh_end_expand_where(JI=D%NIBC:D%NIEC,JJ=D%NJBC:D%NJEC,JK=1:D%NKT) IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH',1,ZHOOK_HANDLE) END SUBROUTINE BUSINGER_PHIH ! @@ -122,18 +114,14 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE INTEGER :: JI,JJ,JK ! IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIE',0,ZHOOK_HANDLE) -DO JK=1,D%NKT - DO JJ=D%NJBC,D%NJEC - DO JI=D%NIBC,D%NIEC -IF ( PZ_O_LMO(JI,JJ,JK) < 0. )THEN - BUSINGERPHIE(JI,JJ,JK)=(1.+(-PZ_O_LMO(JI,JJ,JK))**(2./3.)/CSTURB%XALPSBL)& - * (1.-15.*PZ_O_LMO(JI,JJ,JK))**(0.5) -ELSE - BUSINGERPHIE(JI,JJ,JK) = 1./(1. + 4.7 * PZ_O_LMO(JI,JJ,JK))**2 -ENDIF - ENDDO - ENDDO -ENDDO +!$mnh_expand_where(JI=D%NIBC:D%NIEC,JJ=D%NJBC:D%NJEC,JK=1:D%NKT) +WHERE ( PZ_O_LMO(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT) < 0. ) + BUSINGERPHIE(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT)=(1.+(-PZ_O_LMO(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT))**(2./3.)/CSTURB%XALPSBL)& + * (1.-15.*PZ_O_LMO(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT))**(0.5) +ELSEWHERE + BUSINGERPHIE(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT) = 1./(1. + 4.7 * PZ_O_LMO(D%NIBC:D%NIEC,D%NJBC:D%NJEC,1:D%NKT))**2 +END WHERE +!$mnh_end_expand_where(JI=D%NIBC:D%NIEC,JJ=D%NJBC:D%NJEC,JK=1:D%NKT) IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIE',1,ZHOOK_HANDLE) END SUBROUTINE BUSINGER_PHIE END MODULE MODE_SBL_PHY -- GitLab