From ad348eb2d017dc797dbce3fb242d79d6926708b1 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Wed, 19 Jun 2024 09:54:27 +0200
Subject: [PATCH] Philippe 19/06/2024: outputs: add LOUT_FILESPLIT_DISABLE
 option in namelist to force disabling Z-split files

---
 src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 | 10 +++++++---
 src/MNH/modd_bakout.f90                         |  2 ++
 src/MNH/modn_output.f90                         |  3 ++-
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90
index 7d43dfb81..2b63ec0cf 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90
@@ -1168,9 +1168,11 @@ SUBROUTINE IO_File_add2list( TPFILE, HNAME, HTYPE, HMODE,
   USE NETCDF, ONLY: NF90_QUANTIZE_BITGROOM, NF90_QUANTIZE_BITROUND, NF90_QUANTIZE_GRANULARBR
 !
 #endif
-USE MODD_BAKOUT,         ONLY: LBAK_COMPRESS, NBAK_COMPRESS_LEVEL, LBAK_REDUCE_FLOAT_PRECISION, &
-                               LOUT_COMPRESS, NOUT_COMPRESS_LEVEL, LOUT_REDUCE_FLOAT_PRECISION, &
-                               COUT_COMPRESS_LOSSY_ALGO, LOUT_COMPRESS_LOSSY, NOUT_COMPRESS_LOSSY_NSD
+USE MODD_BAKOUT,         ONLY: LBAK_COMPRESS, NBAK_COMPRESS_LEVEL, LBAK_REDUCE_FLOAT_PRECISION,        &
+                               LOUT_COMPRESS, NOUT_COMPRESS_LEVEL, LOUT_REDUCE_FLOAT_PRECISION,        &
+                               COUT_COMPRESS_LOSSY_ALGO, LOUT_COMPRESS_LOSSY, NOUT_COMPRESS_LOSSY_NSD, &
+                               LOUT_FILESPLIT_DISABLE
+
 USE MODD_CONF,           ONLY: CPROGRAM
 USE MODD_CONFZ,          ONLY: NB_PROCIO_R, NB_PROCIO_W
 USE MODD_DYN_n,          ONLY: DYN_MODEL
@@ -1357,6 +1359,8 @@ else
       ! Disable Z-split files for output files with no write of the main domain
       ! Boxes/subdomains are assumed to be too small to be usefully split vertically
       if ( htype == 'MNHOUTPUT' .and. .not. out_model(imi)%lout_bigbox_write ) gsplit_ioz = .false.
+      ! Force no split if asked in NAM_OUTPUT
+      if ( htype == 'MNHOUTPUT' .and. lout_filesplit_disable(imi) ) gsplit_ioz = .false.
     end if
   end if
 end if
diff --git a/src/MNH/modd_bakout.f90 b/src/MNH/modd_bakout.f90
index 8048bb601..03c203d7d 100644
--- a/src/MNH/modd_bakout.f90
+++ b/src/MNH/modd_bakout.f90
@@ -117,4 +117,6 @@ INTEGER, DIMENSION(:,:), ALLOCATABLE :: NOUT_BOX_JSUP
 INTEGER, DIMENSION(:,:), ALLOCATABLE :: NOUT_BOX_KINF
 INTEGER, DIMENSION(:,:), ALLOCATABLE :: NOUT_BOX_KSUP
 
+! Flag to disable output file splitting (supersedes NB_PROCIO_W option from NAM_CONFZ)
+LOGICAL, DIMENSION(JPMODELMAX) :: LOUT_FILESPLIT_DISABLE = .FALSE.
 END MODULE MODD_BAKOUT
diff --git a/src/MNH/modn_output.f90 b/src/MNH/modn_output.f90
index c76dd2372..76833605c 100644
--- a/src/MNH/modn_output.f90
+++ b/src/MNH/modn_output.f90
@@ -59,7 +59,8 @@ NAMELIST/NAM_OUTPUT/LOUT_BEG,LOUT_END,&
                    LOUT_BOTTOM_ABSORBING_LAYER_REMOVE, LOUT_TOP_ABSORBING_LAYER_REMOVE, &
                    LOUT_UNPHYSICAL_HOR_CELLS_REMOVE, LOUT_UNPHYSICAL_VER_CELLS_REMOVE,  &
                    LOUT_PHYSICAL_SIMPLIFIED, &
-                   NOUT_BOX_IINF, NOUT_BOX_ISUP, NOUT_BOX_JINF, NOUT_BOX_JSUP, NOUT_BOX_KINF, NOUT_BOX_KSUP
+                   NOUT_BOX_IINF, NOUT_BOX_ISUP, NOUT_BOX_JINF, NOUT_BOX_JSUP, NOUT_BOX_KINF, NOUT_BOX_KSUP, &
+                   LOUT_FILESPLIT_DISABLE
 
 LOGICAL, SAVE, PRIVATE :: LOUTPUT_NML_ALLOCATED = .FALSE.
 
-- 
GitLab