From 24b9308214544442a95344fb6e6f3342bf83c4b3 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@cnrs.fr>
Date: Tue, 24 Sep 2024 16:04:29 +0200
Subject: [PATCH] Philippe 24/09/2024: IO: OUTPUT_LISTING0: remove it at the
 end if empty (+ remove some unnecessary writes if MESONH)

---
 src/MNH/finalize_mnh.f90 | 28 +++++++++++++++++++++++++++-
 src/MNH/init_mnh.f90     | 13 ++++++++++---
 2 files changed, 37 insertions(+), 4 deletions(-)

diff --git a/src/MNH/finalize_mnh.f90 b/src/MNH/finalize_mnh.f90
index e6000a55b..61838dd86 100644
--- a/src/MNH/finalize_mnh.f90
+++ b/src/MNH/finalize_mnh.f90
@@ -36,7 +36,11 @@ SUBROUTINE FINALIZE_MNH
 
   IMPLICIT NONE
 
+  CHARACTER(LEN=:),ALLOCATABLE :: YPREFILENAME !To store the directory + filename
+  INTEGER :: ILU
   INTEGER :: IRESP
+  INTEGER :: ISIZE
+  INTEGER :: ISTAT
   INTEGER :: JMODEL
 
   !Print the list of all files and some statistics on them
@@ -46,7 +50,29 @@ SUBROUTINE FINALIZE_MNH
   CALL MSG_STATS()
 
   !Close all the opened 'output listing' files
-  IF ( TLUOUT0%LOPENED ) CALL IO_File_close(TLUOUT0)
+  IF ( ASSOCIATED( TLUOUT0) ) THEN
+    IF ( TLUOUT0%LOPENED ) CALL IO_File_close(TLUOUT0)
+
+    ! Remove OUTPUT_LISTING0 if empty
+    IF ( TLUOUT0%LMASTER ) THEN
+      IF (ALLOCATED(TLUOUT0%CDIRNAME)) THEN
+        IF(LEN_TRIM(TLUOUT0%CDIRNAME)>0) THEN
+          YPREFILENAME = TRIM(TLUOUT0%CDIRNAME) // '/' // TRIM(TLUOUT0%CNAME)
+        ELSE
+          YPREFILENAME = TRIM(TLUOUT0%CNAME)
+        END IF
+      ELSE
+        YPREFILENAME = TRIM(TLUOUT0%CNAME)
+      END IF
+      !Get the size of the OUTPUT_LISTING0 file
+      INQUIRE( FILE=YPREFILENAME, SIZE=ISIZE )
+      IF ( ISIZE == 0 ) THEN
+        OPEN( NEWUNIT=ILU, IOSTAT=ISTAT, FILE=YPREFILENAME, STATUS='OLD' )
+        IF ( ISTAT == 0 ) CLOSE( ILU, STATUS='DELETE' )
+      END IF
+    END IF
+  END IF
+
   DO JMODEL = 1, NMODEL
     IF ( ASSOCIATED( LUNIT_MODEL(JMODEL)%TLUOUT ) ) THEN
       IF ( LUNIT_MODEL(JMODEL)%TLUOUT%LOPENED ) CALL IO_File_close( LUNIT_MODEL(JMODEL)%TLUOUT)
diff --git a/src/MNH/init_mnh.f90 b/src/MNH/init_mnh.f90
index 9b9b6b4d9..ee5c60d1f 100644
--- a/src/MNH/init_mnh.f90
+++ b/src/MNH/init_mnh.f90
@@ -78,7 +78,7 @@
 USE MODD_CONF
 USE MODD_DYN,   ONLY: XSEGLEN
 USE MODD_DYN_n, ONLY: CPRESOPT, NITR ! only for spawning purpose
-USE MODD_IO,    ONLY: TFILE_OUTPUTLISTING, TPTR2FILE
+USE MODD_IO,    ONLY: NNULLUNIT, TFILE_OUTPUTLISTING, TPTR2FILE
 USE MODD_LBC_n, ONLY: CLBCX,CLBCY   ! only for spawning purpose
 USE MODD_LUNIT
 USE MODD_LUNIT_n
@@ -126,21 +126,28 @@ CHARACTER(LEN=4), DIMENSION(:), POINTER :: DPTR_CLBCX,DPTR_CLBCY
 !*       1.1   initialize // E/S and open  output-listing file
 !
 !
+!IF ( CPROGRAM/='REAL  ' .AND. CPROGRAM/='MESONH ') THEN
 IF (CPROGRAM/='REAL  ') THEN
   CALL IO_File_add2list(TLUOUT0,'OUTPUT_LISTING0','OUTPUTLISTING','WRITE')
   CALL IO_File_open(TLUOUT0)
   !Set output file for PRINT_MSG
   TFILE_OUTPUTLISTING => TLUOUT0
   ILUOUT0=TLUOUT0%NLU
+!ELSE IF ( CPROGRAM == 'MESONH' ) THEN
+!  ! Do not create OUTPUT_LISTING0 file if main program MESONH
+!  ! If writes to ILUOUT0 => automatically discarded
+!  ILUOUT0 = NNULLUNIT
 ELSE
   ILUOUT0=TLUOUT0%NLU
 END IF
 !
-WRITE(UNIT=ILUOUT0,FMT="(50('*'),/,'*',48X,'*',/,                  &
+IF ( CPROGRAM /= 'MESONH' ) THEN
+  WRITE(UNIT=ILUOUT0,FMT="(50('*'),/,'*',48X,'*',/,                &
                   &  7('*'),10X, ' MESO-NH MODEL ',10X,8('*'),/,   &
                   & '*',48X,'*',/,                                 &
                   & 7('*'),12X,' CNRM - LA ',12X,8('*'),/,         &
                   & '*',48X,'*',/,  50('*'))")
+END IF
 !
 CALL NSV_ASSOCIATE()
 !
@@ -245,7 +252,7 @@ IF ( CPROGRAM == 'MESONH' ) CALL IO_Bakout_struct_prepare( )
 !*       5.    WRITE MESSAGE ON OUTPUT-LISTING
 !              -------------------------------
 !
-IF (NVERB >= 5) THEN
+IF ( CPROGRAM /= 'MESONH' .AND. NVERB>=5 ) THEN
   WRITE(UNIT=ILUOUT0,FMT="(50('*'),/,'*',48X,'*',/,                &
                 & '*',10X,' INITIALIZATION TERMINATED',10X,'*',/,  &
                 & '*',48X,'*',/,50('*'))")
-- 
GitLab