From 0452194c46c2fb656177dc1a6a96a5a654d32142 Mon Sep 17 00:00:00 2001
From: Juan Escobar <escj@aero.obs-mip.fr>
Date: Fri, 17 Feb 2023 15:30:19 +0100
Subject: [PATCH] Juan 17/02/2023:mode_mnh_zwork.f90+modd/n_confz.f90 , put
 size of T1DFLAT buffer = NPMAX_T1DFLAT_R in namelist NAM_CONFZ , for
 augmentaton without recompiling the code

---
 src/LIB/SURCOUCHE/src/modd_confz.f90 |  4 +++-
 src/LIB/SURCOUCHE/src/modn_confz.f90 |  3 ++-
 src/MNH/mode_mnh_zwork.f90           | 14 ++++++++------
 3 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/modd_confz.f90 b/src/LIB/SURCOUCHE/src/modd_confz.f90
index 9712fe2a7..0942f667d 100644
--- a/src/LIB/SURCOUCHE/src/modd_confz.f90
+++ b/src/LIB/SURCOUCHE/src/modd_confz.f90
@@ -54,6 +54,8 @@ LOGICAL,SAVE      :: LMNH_MPI_ALLTOALLV_REMAP = .FALSE. ! default remap with sen
 INTEGER,SAVE      :: NZ_SPLITTING   = 10 ! /!\ setting of NZ_SPLITTING by namelist for 'EXPERT' use only for DEBUG 
                                          ! 'STANDARD' user use LMNH_MPI_ALLTOALLV_REMAP=T/F only !!!
                                          !  IZ=1=flat_inv;  IZ=2=flat_invz ;  IZ=1+2=the two ; IZ=4 alltoall ; +8=P1/P2 splitting
-!JUAN
+
+INTEGER,SAVE      :: NPMAX_T1DFLAT_R = 130 ! Used to determine max size of buffer ZT1DFLAT in mode_mnh_zwork.f90
+                                           ! (3D size of the mesh * NPMAX_T1DFLAT_R)
 !
 END MODULE MODD_CONFZ
diff --git a/src/LIB/SURCOUCHE/src/modn_confz.f90 b/src/LIB/SURCOUCHE/src/modn_confz.f90
index 393815444..232f4e99d 100644
--- a/src/LIB/SURCOUCHE/src/modn_confz.f90
+++ b/src/LIB/SURCOUCHE/src/modn_confz.f90
@@ -43,6 +43,7 @@ USE MODD_CONFZ
 IMPLICIT NONE
 !
 NAMELIST/NAM_CONFZ/ NZ_VERB,NZ_PROC,NB_PROCIO_R,NB_PROCIO_W,MPI_BUFFER_SIZE,LMNH_MPI_BSEND & 
-                   ,LMNH_MPI_ALLTOALLV_REMAP,NZ_SPLITTING !JUAN Z_SPLITTING
+                   ,LMNH_MPI_ALLTOALLV_REMAP,NZ_SPLITTING &
+                   ,NPMAX_T1DFLAT_R 
 !
 END MODULE MODN_CONFZ
diff --git a/src/MNH/mode_mnh_zwork.f90 b/src/MNH/mode_mnh_zwork.f90
index 38b5e1c72..73fb5b2f0 100644
--- a/src/MNH/mode_mnh_zwork.f90
+++ b/src/MNH/mode_mnh_zwork.f90
@@ -17,6 +17,8 @@ MODULE MODE_MNH_ZWORK
 
   use mode_msg
 
+  USE  MODD_CONFZ, ONLY : NPMAX_T1DFLAT_R
+
   IMPLICIT NONE
 
   INTEGER, SAVE :: IIB,IJB,IKB  ! Begining useful area in x,y,z directions
@@ -40,8 +42,6 @@ MODULE MODE_MNH_ZWORK
   INTEGER , ALLOCATABLE, DIMENSION (:)      :: NT3D_POOL
   INTEGER                                   :: NT3D_TOP , NT3D_TOP_MAX = 0
   INTEGER                                   :: NT3D_TOP_CURRENT(JPMAX_T3D+1) ,  NT3D_TOP_CURRENT_INDEX = 0
-  !REAL    , ALLOCATABLE, DIMENSION(:,:,:,:) , TARGET :: ZT3D_A1,ZT3D_A2,ZT3D_A3,ZT3D_A4
-  !REAL    , POINTER    , DIMENSION(:,:,:,:)          :: ZT3D
   REAL,SAVE    , ALLOCATABLE, TARGET , DIMENSION(:,:,:,:)          :: ZT3D
 
   REAL,SAVE    , ALLOCATABLE, TARGET , DIMENSION(:)                :: ZT1D_OSIZE
@@ -149,8 +149,8 @@ MODULE MODE_MNH_ZWORK
 
 
 !------ Real 1DFLAT pool
-  INTEGER, PARAMETER                                 :: JPMAX_T1DFLAT_R = 300      !Used to determine max size of buffer ZT1DFLAT
-                                                                                   !(3D size of the mesh * JPMAX_T1DFLAT_R)
+!!$  INTEGER,                SAVE                       :: NPMAX_T1DFLAT_R = 300      !Used to determine max size of buffer ZT1DFLAT
+!!$                                                                                   !(3D size of the mesh * NPMAX_T1DFLAT_R)
   INTEGER,                SAVE                       :: NPMAX_POOL_T1DFLAT_R = 250 !Maximum size of the pool (max number of arrays)
   INTEGER(KIND=MNHINT64), ALLOCATABLE, DIMENSION (:) :: NT1DFLAT_POOL_R   !Position in ZT1DFLAT of the beginning of each array
   INTEGER(KIND=MNHINT64), ALLOCATABLE, DIMENSION (:) :: NT1DFLAT_SIZE_R   !Size of each array
@@ -347,7 +347,7 @@ CONTAINS
 
 !------ Real 1DFLAT pool
 
-       NT1DFLAT_MAXSIZE_R = INT( IIU, KIND=MNHINT64 ) * IJU * IKU * JPMAX_T1DFLAT_R
+       NT1DFLAT_MAXSIZE_R = INT( IIU, KIND=MNHINT64 ) * IJU * IKU * NPMAX_T1DFLAT_R
        ALLOCATE( ZT1DFLAT(NT1DFLAT_MAXSIZE_R) )
        !$acc enter data create( ZT1DFLAT )
 
@@ -1539,7 +1539,9 @@ CONTAINS
     NTOT_GETSIZE_ZT1DFLAT  = NTOT_GETSIZE_ZT1DFLAT + KSIZE
 
     IF ( NT1DFLAT_POS_R + KSIZE > NT1DFLAT_MAXSIZE_R ) THEN
-      print*,"MNH_GET_ZT1DFLAT ZT1DFLAT too small, JPMAX_T1DFLAT_R =" , JPMAX_T1DFLAT_R
+      print*,"MNH_GET_ZT1DFLAT:: ZT1DFLAT too small, NPMAX_T1DFLAT_R =" , NPMAX_T1DFLAT_R
+      print*,"MNH_GET_ZT1DFLAT:: augmente NPMAX_T1DFLAT_R in NAM_CONFZ"
+      flush(6)
       WRITE( YSIZE,  '( I0 )' ) KSIZE
       WRITE( YAVAIL, '( I0 )' ) NT1DFLAT_MAXSIZE_R - NT1DFLAT_POS_R
       WRITE( YMAX,   '( I0 )' ) NT1DFLAT_MAXSIZE_R
-- 
GitLab