diff --git a/src/common/turb/mode_bl_depth_diag.F90 b/src/common/turb/mode_bl_depth_diag.F90 index 8b6980a81fd9e12de0468b743003f5ca74fd43c1..73c472275fefb3c17960e4cbd40740ce92e0a709 100644 --- a/src/common/turb/mode_bl_depth_diag.F90 +++ b/src/common/turb/mode_bl_depth_diag.F90 @@ -11,7 +11,7 @@ END INTERFACE ! CONTAINS ! -SUBROUTINE BL_DEPTH_DIAG_3D(KKB,KKE,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF,BL_DEPTH_DIAG3D) +SUBROUTINE BL_DEPTH_DIAG_3D(D,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF,BL_DEPTH_DIAG3D) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! @@ -51,88 +51,93 @@ USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! !* 0.1 declarations of arguments ! +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t +! IMPLICIT NONE ! -INTEGER, INTENT(IN) :: KKB ! bottom point -INTEGER, INTENT(IN) :: KKE ! top point -REAL, DIMENSION(:,:), INTENT(IN) :: PSURF ! surface flux -REAL, DIMENSION(:,:), INTENT(IN) :: PZS ! orography -REAL, DIMENSION(:,:,:), INTENT(IN) :: PFLUX ! flux -REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! altitude of flux points -REAL, INTENT(IN) :: PFTOP_O_FSURF! Flux at BL top / Surface flux -REAL, DIMENSION(SIZE(PSURF,1),SIZE(PSURF,2)), INTENT(OUT) :: BL_DEPTH_DIAG3D +TYPE(DIMPHYEX_t), INTENT(IN) :: D +REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PSURF ! surface flux +REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PZS ! orography +REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PFLUX ! flux +REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PZZ ! altitude of flux points +REAL, INTENT(IN) :: PFTOP_O_FSURF! Flux at BL top / Surface flux +REAL, DIMENSION(D%NIT,D%NJT), INTENT(OUT) :: BL_DEPTH_DIAG3D ! ! ! 0.2 declaration of local variables ! INTEGER :: JI,JJ,JK ! loop counters -INTEGER :: IKL ! +1 : MesoNH levels -1: Arome +INTEGER :: IKB,IKE,IIB,IIE,IJB,IJE ! index value for the Beginning REAL :: ZFLX ! flux at top of BL ! !---------------------------------------------------------------------------- ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_3D',0,ZHOOK_HANDLE) -IF (KKB < KKE) THEN - IKL=1 -ELSE - IKL=-1 -ENDIF - +IKB=D%NKTB +IKE=D%NKTE +IIE=D%NIEC +IIB=D%NIBC +IJE=D%NJEC +IJB=D%NJBC +! BL_DEPTH_DIAG3D(:,:) = 0. ! -DO JJ=1,SIZE(PSURF,2) - DO JI=1,SIZE(PSURF,1) +DO JJ=1,IJE + DO JI=1,IIE IF (PSURF(JI,JJ)==0.) CYCLE - DO JK=KKB,KKE,IKL - IF (PZZ(JI,JJ,JK-IKL)<=PZS(JI,JJ)) CYCLE + DO JK=IKB,IKE,D%NKL + IF (PZZ(JI,JJ,JK-D%NKL)<=PZS(JI,JJ)) CYCLE ZFLX = PSURF(JI,JJ) * PFTOP_O_FSURF - IF ( (PFLUX(JI,JJ,JK)-ZFLX)*(PFLUX(JI,JJ,JK-IKL)-ZFLX) <= 0. ) THEN - BL_DEPTH_DIAG3D(JI,JJ) = (PZZ (JI,JJ,JK-IKL) - PZS(JI,JJ)) & - + (PZZ (JI,JJ,JK) - PZZ (JI,JJ,JK-IKL)) & - * (ZFLX - PFLUX(JI,JJ,JK-IKL) ) & - / (PFLUX(JI,JJ,JK) - PFLUX(JI,JJ,JK-IKL) ) + IF ( (PFLUX(JI,JJ,JK)-ZFLX)*(PFLUX(JI,JJ,JK-D%NKL)-ZFLX) <= 0. ) THEN + BL_DEPTH_DIAG3D(JI,JJ) = (PZZ (JI,JJ,JK-D%NKL) - PZS(JI,JJ)) & + + (PZZ (JI,JJ,JK) - PZZ (JI,JJ,JK-D%NKL)) & + * (ZFLX - PFLUX(JI,JJ,JK-D%NKL) ) & + / (PFLUX(JI,JJ,JK) - PFLUX(JI,JJ,JK-D%NKL) ) EXIT END IF END DO END DO END DO ! -BL_DEPTH_DIAG3D(:,:) = BL_DEPTH_DIAG3D(:,:) / (1. - PFTOP_O_FSURF) +!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE) +BL_DEPTH_DIAG3D(IIB:IIE,IJB:IJE) = BL_DEPTH_DIAG3D(IIB:IIE,IJB:IJE) / (1. - PFTOP_O_FSURF) +!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE) ! IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_3D',1,ZHOOK_HANDLE) END SUBROUTINE BL_DEPTH_DIAG_3D ! -SUBROUTINE BL_DEPTH_DIAG_1D(KKB,KKE,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF,BL_DEPTH_DIAG1D) +SUBROUTINE BL_DEPTH_DIAG_1D(D,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF,BL_DEPTH_DIAG1D) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t +! IMPLICIT NONE ! -INTEGER, INTENT(IN) :: KKB ! bottom point -INTEGER, INTENT(IN) :: KKE ! top point +TYPE(DIMPHYEX_t), INTENT(IN) :: D REAL, INTENT(IN) :: PSURF ! surface flux REAL, INTENT(IN) :: PZS ! orography -REAL, DIMENSION(:), INTENT(IN) :: PFLUX ! flux -REAL, DIMENSION(:), INTENT(IN) :: PZZ ! altitude of flux points +REAL, DIMENSION(D%NKT), INTENT(IN) :: PFLUX ! flux +REAL, DIMENSION(D%NKT), INTENT(IN) :: PZZ ! altitude of flux points REAL, INTENT(IN) :: PFTOP_O_FSURF! Flux at BL top / Surface flux REAL, INTENT(OUT) :: BL_DEPTH_DIAG1D ! REAL, DIMENSION(1,1) :: ZSURF REAL, DIMENSION(1,1) :: ZZS -REAL, DIMENSION(1,1,SIZE(PFLUX)) :: ZFLUX -REAL, DIMENSION(1,1,SIZE(PZZ)) :: ZZZ +REAL, DIMENSION(1,1,D%NKT) :: ZFLUX +REAL, DIMENSION(1,1,D%NKT) :: ZZZ REAL, DIMENSION(1,1) :: ZBL_DEPTH_DIAG ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_1D',0,ZHOOK_HANDLE) ZSURF = PSURF ZZS = PZS -ZFLUX(1,1,:) = PFLUX(:) -ZZZ (1,1,:) = PZZ (:) +ZFLUX(1,1,1:D%NKT) = PFLUX(1:D%NKT) +ZZZ (1,1,1:D%NKT) = PZZ (1:D%NKT) ! -CALL BL_DEPTH_DIAG_3D(KKB,KKE,ZSURF,ZZS,ZFLUX,ZZZ,PFTOP_O_FSURF,ZBL_DEPTH_DIAG) +CALL BL_DEPTH_DIAG_3D(D,ZSURF,ZZS,ZFLUX,ZZZ,PFTOP_O_FSURF,ZBL_DEPTH_DIAG) ! BL_DEPTH_DIAG1D = ZBL_DEPTH_DIAG(1,1) ! diff --git a/src/common/turb/mode_sbl_depth.F90 b/src/common/turb/mode_sbl_depth.F90 index 43403935f746cbc3683b0782e2f4450bf1f21e24..93c7fd5c79e1117de3c51156c58b71370d49ac56 100644 --- a/src/common/turb/mode_sbl_depth.F90 +++ b/src/common/turb/mode_sbl_depth.F90 @@ -6,7 +6,7 @@ MODULE MODE_SBL_DEPTH IMPLICIT NONE CONTAINS ! ######spl - SUBROUTINE SBL_DEPTH(KKB,KKE,PZZ,PFLXU,PFLXV,PWTHV,PLMO,PSBL_DEPTH) + SUBROUTINE SBL_DEPTH(D,CSTURB,PZZ,PFLXU,PFLXV,PWTHV,PLMO,PSBL_DEPTH) USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! ################################################################# @@ -45,8 +45,9 @@ CONTAINS !* 0. DECLARATIONS ! ------------ ! +USE MODD_CTURB, ONLY: CSTURB_t +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_PARAMETERS, ONLY : XUNDEF -USE MODD_CTURB, ONLY : XFTOP_O_FSURF, XSBL_O_BL ! USE MODE_BL_DEPTH_DIAG, ONLY : BL_DEPTH_DIAG ! @@ -55,30 +56,31 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -INTEGER, INTENT(IN) :: KKB ! first physical level -INTEGER, INTENT(IN) :: KKE ! upper physical level -REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! altitude of flux levels -REAL, DIMENSION(:,:,:), INTENT(IN) :: PFLXU ! u'w' -REAL, DIMENSION(:,:,:), INTENT(IN) :: PFLXV ! v'w' -REAL, DIMENSION(:,:,:), INTENT(IN) :: PWTHV ! buoyancy flux -REAL, DIMENSION(:,:), INTENT(IN) :: PLMO ! Monin-Obukhov length -REAL, DIMENSION(:,:), INTENT(INOUT) :: PSBL_DEPTH! boundary layer height +TYPE(DIMPHYEX_t), INTENT(IN) :: D +TYPE(CSTURB_t), INTENT(IN) :: CSTURB +REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PZZ ! altitude of flux levels +REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PFLXU ! u'w' +REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PFLXV ! v'w' +REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PWTHV ! buoyancy flux +REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PLMO ! Monin-Obukhov length +REAL, DIMENSION(D%NIT,D%NJT), INTENT(INOUT) :: PSBL_DEPTH! boundary layer height ! !------------------------------------------------------------------------------- ! ! 0.2 declaration of local variables ! ! -INTEGER :: JLOOP ! loop counter -REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2)) :: ZQ0 ! surface buoyancy flux -REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2)) :: ZWU ! surface friction u'w' -REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2)) :: ZWV ! surface friction v'w' -REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2)) :: ZUSTAR2 ! surface friction -REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2)) :: ZSBL_DYN ! SBL wih dynamical criteria -REAL, DIMENSION(SIZE(PFLXU,1),SIZE(PFLXU,2),SIZE(PFLXU,3)) :: ZWIND +INTEGER :: JLOOP,JI,JJ,JK ! loop counter +INTEGER :: IKB,IKE,IIB,IIE,IJB,IJE ! index value for the Beginning +REAL, DIMENSION(D%NIT,D%NJT) :: ZQ0 ! surface buoyancy flux +REAL, DIMENSION(D%NIT,D%NJT) :: ZWU ! surface friction u'w' +REAL, DIMENSION(D%NIT,D%NJT) :: ZWV ! surface friction v'w' +REAL, DIMENSION(D%NIT,D%NJT) :: ZUSTAR2 ! surface friction +REAL, DIMENSION(D%NIT,D%NJT) :: ZSBL_DYN ! SBL wih dynamical criteria +REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWIND ! intermediate wind for SBL calculation -REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2)) :: ZSBL_THER! SBL wih thermal criteria -REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2)) :: ZA ! ponderation coefficient +REAL, DIMENSION(D%NIT,D%NJT) :: ZSBL_THER! SBL wih thermal criteria +REAL, DIMENSION(D%NIT,D%NJT) :: ZA ! ponderation coefficient !---------------------------------------------------------------------------- ! !* initialisations @@ -86,44 +88,85 @@ REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2)) :: ZA ! ponderation coefficient ! REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('SBL_DEPTH',0,ZHOOK_HANDLE) -ZWU (:,:) = PFLXU(:,:,KKB) -ZWV (:,:) = PFLXV(:,:,KKB) -ZQ0 (:,:) = PWTHV(:,:,KKB) ! -ZUSTAR2(:,:) = SQRT(ZWU**2+ZWV**2) +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) +ZWU(IIB:IIE,IJB:IJE) = PFLXU(IIB:IIE,IJB:IJE,IKB) +ZWV(IIB:IIE,IJB:IJE) = PFLXV(IIB:IIE,IJB:IJE,IKB) +ZQ0(IIB:IIE,IJB:IJE) = PWTHV(IIB:IIE,IJB:IJE,IKB) +! +ZUSTAR2(IIB:IIE,IJB:IJE) = SQRT(ZWU(IIB:IIE,IJB:IJE)**2+ZWV(IIB:IIE,IJB:IJE)**2) +! +!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE) !---------------------------------------------------------------------------- ! !* BL and SBL diagnosed with friction criteria ! -ZWIND=SQRT(PFLXU**2+PFLXV**2) -CALL BL_DEPTH_DIAG(KKB,KKE,ZUSTAR2,PZZ(:,:,KKB),ZWIND,PZZ,XFTOP_O_FSURF,ZSBL_DYN) -ZSBL_DYN = XSBL_O_BL * ZSBL_DYN +!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +ZWIND(IIB:IIE,IJB:IJE,:)=SQRT(PFLXU(IIB:IIE,IJB:IJE,:)**2+PFLXV(IIB:IIE,IJB:IJE,:)**2) +!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) +CALL BL_DEPTH_DIAG(D,ZUSTAR2,PZZ(:,:,IKB),ZWIND,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_DYN) +!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE) +ZSBL_DYN(IIB:IIE,IJB:IJE) = CSTURB%XSBL_O_BL * ZSBL_DYN(IIB:IIE,IJB:IJE) +!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE) ! !---------------------------------------------------------------------------- ! !* BL and SBL diagnosed with buoyancy flux criteria ! -CALL BL_DEPTH_DIAG(KKB,KKE,ZQ0,PZZ(:,:,KKB),PWTHV,PZZ,XFTOP_O_FSURF,ZSBL_THER) -ZSBL_THER= XSBL_O_BL * ZSBL_THER +CALL BL_DEPTH_DIAG(D,ZQ0,PZZ(:,:,IKB),PWTHV,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_THER) +!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE) +ZSBL_THER(IIB:IIE,IJB:IJE)= CSTURB%XSBL_O_BL * ZSBL_THER(IIB:IIE,IJB:IJE) +!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE) ! !---------------------------------------------------------------------------- ! !* SBL depth ! -PSBL_DEPTH = 0. -WHERE (ZSBL_THER> 0. .AND. ZSBL_DYN> 0.) PSBL_DEPTH = MIN(ZSBL_THER(:,:),ZSBL_DYN(:,:)) -WHERE (ZSBL_THER> 0. .AND. ZSBL_DYN==0.) PSBL_DEPTH = ZSBL_THER(:,:) -WHERE (ZSBL_THER==0. .AND. ZSBL_DYN> 0.) PSBL_DEPTH = ZSBL_DYN(:,:) +PSBL_DEPTH(:,:) = 0. +!$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE) +WHERE (ZSBL_THER(IIB:IIE,IJB:IJE)> 0. .AND. ZSBL_DYN(IIB:IIE,IJB:IJE)> 0.) + PSBL_DEPTH = MIN(ZSBL_THER(IIB:IIE,IJB:IJE),ZSBL_DYN(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 (ZSBL_THER(IIB:IIE,IJB:IJE)> 0. .AND. ZSBL_DYN(IIB:IIE,IJB:IJE)==0.) + PSBL_DEPTH(IIB:IIE,IJB:IJE) = ZSBL_THER(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 (ZSBL_THER(IIB:IIE,IJB:IJE)==0. .AND. ZSBL_DYN(IIB:IIE,IJB:IJE)> 0.) + PSBL_DEPTH(IIB:IIE,IJB:IJE) = ZSBL_DYN(IIB:IIE,IJB:IJE) +END WHERE +!$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE) ! DO JLOOP=1,5 - WHERE (PLMO(:,:)/=XUNDEF .AND. ABS(PLMO(:,:))>=0.01 ) - ZA = TANH(2.*PSBL_DEPTH/PLMO)**2 - PSBL_DEPTH = 0.2 * PSBL_DEPTH + 0.8 * ((1.-ZA) * ZSBL_DYN + ZA * ZSBL_THER ) + !$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE) + WHERE (PLMO(IIB:IIE,IJB:IJE)/=XUNDEF .AND. ABS(PLMO(IIB:IIE,IJB:IJE))>=0.01 ) + ZA(IIB:IIE,IJB:IJE) = TANH(2.*PSBL_DEPTH(IIB:IIE,IJB:IJE)/PLMO(IIB:IIE,IJB:IJE))**2 + PSBL_DEPTH(IIB:IIE,IJB:IJE) = 0.2 * PSBL_DEPTH(IIB:IIE,IJB:IJE) + 0.8 * ((1.-ZA(IIB:IIE,IJB:IJE)) & + * ZSBL_DYN(IIB:IIE,IJB:IJE) + ZA(IIB:IIE,IJB:IJE) * ZSBL_THER(IIB:IIE,IJB:IJE) ) END WHERE + !$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE) END DO -WHERE (ABS(PLMO(:,:))<=0.01 ) PSBL_DEPTH = ZSBL_THER -WHERE (PLMO(:,:)==XUNDEF) PSBL_DEPTH = ZSBL_DYN +!$mnh_expand_where(JI=IIB:IIE,JJ=IJB:IJE) +WHERE (ABS(PLMO(IIB:IIE,IJB:IJE))<=0.01 ) + PSBL_DEPTH(IIB:IIE,IJB:IJE) = ZSBL_THER(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 (PLMO(IIB:IIE,IJB:IJE)==XUNDEF) + PSBL_DEPTH(IIB:IIE,IJB:IJE) = ZSBL_DYN(IIB:IIE,IJB:IJE) +END WHERE +!$mnh_end_expand_where(JI=IIB:IIE,JJ=IJB:IJE) ! !---------------------------------------------------------------------------- IF (LHOOK) CALL DR_HOOK('SBL_DEPTH',1,ZHOOK_HANDLE) diff --git a/src/common/turb/mode_turb_ver.F90 b/src/common/turb/mode_turb_ver.F90 index 31a56a5af3ee0d04a4d7e441de1ce5f395fc71a9..2df64d99780f12d7e692fdfc9f178d754bc0fc22 100644 --- a/src/common/turb/mode_turb_ver.F90 +++ b/src/common/turb/mode_turb_ver.F90 @@ -612,7 +612,7 @@ CALL TURB_VER_SV_CORR(D,CST,CSTURB,KRR,KRRL,KRRI,OOCEAN, & !* 9. DIAGNOSTIC OF Surface Boundary Layer Depth ! ------------------------------------------ ! -IF (ORMC01) CALL SBL_DEPTH(IKB,IKE,PZZ,ZWU,ZWV,ZWTHV,PLMO,PSBL_DEPTH) +IF (ORMC01) CALL SBL_DEPTH(D,CSTURB,PZZ,ZWU,ZWV,ZWTHV,PLMO,PSBL_DEPTH) ! !---------------------------------------------------------------------------- ! diff --git a/src/mesonh/ext/lesn.f90 b/src/mesonh/ext/lesn.f90 index 7e73c302f67b7f596fd233fb73724480cb5d160d..95392487aaf37714e476a85a34b46ba915f806e7 100644 --- a/src/mesonh/ext/lesn.f90 +++ b/src/mesonh/ext/lesn.f90 @@ -54,6 +54,7 @@ USE MODD_CTURB, ONLY : XFTOP_O_FSURF USE MODD_LES USE MODD_LES_BUDGET USE MODD_CONF +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_LES_n USE MODD_RADIATIONS_n USE MODD_GRID_n @@ -87,6 +88,7 @@ USE MODE_BL_DEPTH_DIAG ! USE MODE_ll USE MODE_MODELN_HANDLER +USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX ! IMPLICIT NONE ! @@ -213,6 +215,7 @@ INTEGER :: IMASKUSER! mask user number ! INTEGER :: IRESP, ILUOUT INTEGER :: IMI ! Current model index +TYPE(DIMPHYEX_t) :: YLDIMPHYEX !------------------------------------------------------------------------------- ! IMI = GET_CURRENT_MODEL_INDEX() @@ -227,6 +230,7 @@ IJA_ll=JPHEXT+1 IKE=SIZE(XVT,3)-JPVEXT IKB=1+JPVEXT CALL GET_DIM_EXT_ll('B',IIU,IJU) +CALL FILL_DIMPHYEX(YLDIMPHYEX, SIZE(XTHT,1), SIZE(XTHT,2), SIZE(XTHT,3),.TRUE.) ! ILUOUT = TLUOUT%NLU ! @@ -3264,7 +3268,7 @@ ELSE IF (CBL_HEIGHT_DEF=='FRI') THEN +( XLES_SUBGRID_WV (:,NLES_CURRENT_TCOUNT,1) & +XLES_RESOLVED_WV(:,NLES_CURRENT_TCOUNT,1))**2 ) ZFRIC_SURF = XLES_USTAR(NLES_CURRENT_TCOUNT)**2 - CALL BL_DEPTH_DIAG(IKB,IKE,ZFRIC_SURF, XLES_ZS, & + CALL BL_DEPTH_DIAG(YLDIMPHYEX,ZFRIC_SURF, XLES_ZS, & ZFRIC_LES, XLES_Z, & XFTOP_O_FSURF,XLES_BL_HEIGHT(NLES_CURRENT_TCOUNT)) END IF