From 47b6f1b81a2e617e14cfdee4f752c509f4fb7385 Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Mon, 8 Aug 2022 18:09:13 +0200
Subject: [PATCH] Quentin 08/08/2022: Expand array + explicit dimensions for
 turb/bl_depth_diag and sbl_depth

---
 src/common/turb/mode_bl_depth_diag.F90 |  77 ++++++++--------
 src/common/turb/mode_sbl_depth.F90     | 117 +++++++++++++++++--------
 src/common/turb/mode_turb_ver.F90      |   2 +-
 src/mesonh/ext/lesn.f90                |   6 +-
 4 files changed, 127 insertions(+), 75 deletions(-)

diff --git a/src/common/turb/mode_bl_depth_diag.F90 b/src/common/turb/mode_bl_depth_diag.F90
index 8b6980a81..73c472275 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 43403935f..93c7fd5c7 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 31a56a5af..2df64d997 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 7e73c302f..95392487a 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
-- 
GitLab