From 250aedbf63014c9ab406da70402b7a1ef4e15b71 Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Wed, 16 Aug 2023 11:48:31 +0200
Subject: [PATCH] Quentin 16/08/2023: PHYEX bugfix LES diag, time dimension was
 not defined properly. Impacts all LES diag on clear/neb/cs1/cs2/cs3 variables
 since 5.6.0

---
 src/common/aux/modd_dimphyexn.F90        |  1 +
 src/mesonh/aux/mode_fill_dimphyexn.F90   |  9 +++++++--
 src/mesonh/turb/les_mean_subgrid_phy.f90 | 12 ++++++------
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/common/aux/modd_dimphyexn.F90 b/src/common/aux/modd_dimphyexn.F90
index a2767fe04..cac698c82 100644
--- a/src/common/aux/modd_dimphyexn.F90
+++ b/src/common/aux/modd_dimphyexn.F90
@@ -76,6 +76,7 @@ TYPE DIMPHYEX_t
   INTEGER :: NIJE  ! Last horizontal inner mass point index
   !
   INTEGER :: NLESMASK ! Number of LES masks
+  INTEGER :: NLES_TIMES ! Number of LES time data storage
 !
 END TYPE DIMPHYEX_t
 !
diff --git a/src/mesonh/aux/mode_fill_dimphyexn.F90 b/src/mesonh/aux/mode_fill_dimphyexn.F90
index 80679f8e1..5f965be18 100644
--- a/src/mesonh/aux/mode_fill_dimphyexn.F90
+++ b/src/mesonh/aux/mode_fill_dimphyexn.F90
@@ -6,7 +6,7 @@
 MODULE MODE_FILL_DIMPHYEX
 IMPLICIT NONE
 CONTAINS
-SUBROUTINE FILL_DIMPHYEX(YDDIMPHYEX, KIT, KJT, KKT, LTURB)
+SUBROUTINE FILL_DIMPHYEX(YDDIMPHYEX, KIT, KJT, KKT, LTURB,KLES_TIMES)
 !     #########################
 !
 !!
@@ -48,6 +48,7 @@ IMPLICIT NONE
 !
 TYPE(DIMPHYEX_t), INTENT(OUT) :: YDDIMPHYEX ! Structure to fill in
 INTEGER, INTENT(IN) :: KIT, KJT, KKT ! Array dimensions
+INTEGER, INTENT(IN), OPTIONAL :: KLES_TIMES  ! Number of LES data storage frequency
 LOGICAL, INTENT(IN), OPTIONAL :: LTURB ! Flag to replace array dimensions I/JB and I/JE to the full array size
                                        ! needed if computation in HALO points (e.g. in turbulence)
 LOGICAL :: YTURB
@@ -97,7 +98,11 @@ ELSE
 END IF
 IF (LHOOK) CALL DR_HOOK('FILL_DIMPHYEX', 1, ZHOOK_HANDLE)
 !
-YDDIMPHYEX%NLESMASK = 1
+YDDIMPHYEX%NLESMASK=1
+YDDIMPHYEX%NLES_TIMES=0
+IF (PRESENT(KLES_TIMES)) THEN
+  YDDIMPHYEX%NLES_TIMES = KLES_TIMES
+END IF
 IF (LLES_MY_MASK) YDDIMPHYEX%NLESMASK = YDDIMPHYEX%NLESMASK + NLES_MASKS_USER
 IF (LLES_NEB_MASK) YDDIMPHYEX%NLESMASK = YDDIMPHYEX%NLESMASK + 2
 IF (LLES_CORE_MASK) YDDIMPHYEX%NLESMASK = YDDIMPHYEX%NLESMASK + 2
diff --git a/src/mesonh/turb/les_mean_subgrid_phy.f90 b/src/mesonh/turb/les_mean_subgrid_phy.f90
index 88a7d2c72..92d062946 100644
--- a/src/mesonh/turb/les_mean_subgrid_phy.f90
+++ b/src/mesonh/turb/les_mean_subgrid_phy.f90
@@ -25,7 +25,7 @@ TYPE(DIMPHYEX_t),          INTENT(IN)    :: D
 TYPE(TLES_t),              INTENT(IN)    :: TLES
 REAL,    DIMENSION(D%NIJT,D%NKT), INTENT(IN)    :: PA
 !
-REAL,    DIMENSION(D%NKLES,TLES%NLES_CURRENT_TCOUNT,D%NLESMASK), INTENT(INOUT) :: PA_MEAN
+REAL,    DIMENSION(D%NKLES,D%NLES_TIMES,D%NLESMASK), INTENT(INOUT) :: PA_MEAN
 !
 LOGICAL, OPTIONAL,         INTENT(IN)    :: OSUM
 !
@@ -41,7 +41,7 @@ TYPE(DIMPHYEX_t),          INTENT(IN)    :: D
 TYPE(TLES_t),              INTENT(IN)    :: TLES
 REAL,    DIMENSION(D%NIJT), INTENT(IN)    :: PA
 !
-REAL,    DIMENSION(TLES%NLES_CURRENT_TCOUNT), INTENT(INOUT) :: PA_MEAN
+REAL,    DIMENSION(D%NLES_TIMES), INTENT(INOUT) :: PA_MEAN
 !
 LOGICAL, OPTIONAL,         INTENT(IN)    :: OSUM
 !
@@ -63,7 +63,7 @@ IMPLICIT NONE
 TYPE(DIMPHYEX_t),          INTENT(IN)    :: D
 TYPE(TLES_t),              INTENT(IN)    :: TLES
 REAL,    DIMENSION(D%NIJT,D%NKT), INTENT(IN)    :: PA
-REAL,    DIMENSION(D%NKLES,TLES%NLES_CURRENT_TCOUNT,D%NLESMASK), INTENT(INOUT) :: PA_MEAN
+REAL,    DIMENSION(D%NKLES,D%NLES_TIMES,D%NLESMASK), INTENT(INOUT) :: PA_MEAN
 LOGICAL, OPTIONAL,         INTENT(IN)    :: OSUM
 !
 CALL LES_MEAN_SUBGRID_unpack3D(D,TLES, PA, PA_MEAN, OSUM)
@@ -85,7 +85,7 @@ IMPLICIT NONE
 TYPE(DIMPHYEX_t),          INTENT(IN)    :: D
 TYPE(TLES_t),              INTENT(IN)    :: TLES
 REAL,    DIMENSION(D%NIJT), INTENT(IN)    :: PA
-REAL,    DIMENSION(TLES%NLES_CURRENT_TCOUNT), INTENT(INOUT) :: PA_MEAN
+REAL,    DIMENSION(D%NLES_TIMES), INTENT(INOUT) :: PA_MEAN
 LOGICAL, OPTIONAL,         INTENT(IN)    :: OSUM
 !
 CALL LES_MEAN_SUBGRID_unpackSURF(D, TLES, PA, PA_MEAN, OSUM)
@@ -105,7 +105,7 @@ IMPLICIT NONE
 TYPE(DIMPHYEX_t),          INTENT(IN)    :: D
 TYPE(TLES_t),              INTENT(IN)    :: TLES
 REAL,    DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    :: PA
-REAL,    DIMENSION(D%NKLES,TLES%NLES_CURRENT_TCOUNT,D%NLESMASK), INTENT(INOUT) :: PA_MEAN
+REAL,    DIMENSION(D%NKLES,D%NLES_TIMES,D%NLESMASK), INTENT(INOUT) :: PA_MEAN
 LOGICAL, OPTIONAL,         INTENT(IN)    :: OSUM
 !
 CALL LES_MEAN_SUBGRID_3D(PA, PA_MEAN, OSUM)
@@ -128,7 +128,7 @@ IMPLICIT NONE
 TYPE(DIMPHYEX_t),          INTENT(IN)    :: D
 TYPE(TLES_t),              INTENT(IN)    :: TLES
 REAL,    DIMENSION(D%NIT,D%NJT), INTENT(IN)    :: PA
-REAL,    DIMENSION(TLES%NLES_CURRENT_TCOUNT), INTENT(INOUT) :: PA_MEAN
+REAL,    DIMENSION(D%NLES_TIMES), INTENT(INOUT) :: PA_MEAN
 LOGICAL, OPTIONAL,         INTENT(IN)    :: OSUM
 !
 CALL LES_MEAN_SUBGRID_SURF(PA, PA_MEAN, OSUM)
-- 
GitLab