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