From 466a18329f5cad997df148801e80694143a78c3c Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Thu, 5 Apr 2018 14:08:39 +0200
Subject: [PATCH] Philippe 05/04/2018: IO: PREP_SURFEX: open output file later
 when domain dimensions are known

---
 src/MNH/prep_surf_mnh.f90 | 23 +++++++++++++++--------
 src/MNH/prep_surfex.f90   |  6 +++---
 src/MNH/write_hgrid.f90   |  2 +-
 3 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/MNH/prep_surf_mnh.f90 b/src/MNH/prep_surf_mnh.f90
index 41b2517e8..452a44938 100644
--- a/src/MNH/prep_surf_mnh.f90
+++ b/src/MNH/prep_surf_mnh.f90
@@ -12,19 +12,20 @@
       MODULE MODI_PREP_SURF_MNH
 !     #############################
 INTERFACE
-      SUBROUTINE PREP_SURF_MNH(HATMFILE,HATMFILETYPE)
+      SUBROUTINE PREP_SURF_MNH(HATMFILE,HATMFILETYPE,OINIFILEOPEN)
 !
-CHARACTER(LEN=28), INTENT(IN)    :: HATMFILE    ! name of the Atmospheric file
-CHARACTER(LEN=6),  INTENT(IN)    :: HATMFILETYPE! type of the Atmospheric file
+CHARACTER(LEN=28),INTENT(IN) :: HATMFILE    ! name of the Atmospheric file
+CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! type of the Atmospheric file
+LOGICAL, OPTIONAL,INTENT(IN) :: OINIFILEOPEN! Open the INI file here (or not)
 !
 END SUBROUTINE PREP_SURF_MNH
 !
 END INTERFACE
 END MODULE MODI_PREP_SURF_MNH
 !
-!     #######################################################
-      SUBROUTINE PREP_SURF_MNH(HATMFILE,HATMFILETYPE)
-!     #######################################################
+!     ############################################################
+      SUBROUTINE PREP_SURF_MNH(HATMFILE,HATMFILETYPE,OINIFILEOPEN)
+!     ############################################################
 !
 !!****  *PREP_SURF_MNH* - calls surface field preparation
 !!
@@ -56,6 +57,7 @@ USE MODD_LUNIT_n,     ONLY : CINIFILE, TINIFILE
 USE MODD_MNH_SURFEX_n
 USE MODD_TIME_n,      ONLY : TDTCUR
 !
+USE MODE_FM,       ONLY : IO_FILE_OPEN_ll
 USE MODE_PREP_CTL, ONLY : PREP_CTL
 !
 USE MODI_INIT_PGD_SURF_ATM
@@ -68,8 +70,9 @@ IMPLICIT NONE
 !*       0.1   Declarations of arguments
 !              -------------------------
 !
-CHARACTER(LEN=28), INTENT(IN)   :: HATMFILE    ! name of the Atmospheric file
-CHARACTER(LEN=6),  INTENT(IN)   :: HATMFILETYPE! type of the Atmospheric file
+CHARACTER(LEN=28),INTENT(IN) :: HATMFILE    ! name of the Atmospheric file
+CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! type of the Atmospheric file
+LOGICAL, OPTIONAL,INTENT(IN) :: OINIFILEOPEN! Open the INI file here (or not)
 !
 !*       0.2   Declarations of local variables
 !              -------------------------------
@@ -99,6 +102,10 @@ CALL INIT_PGD_SURF_ATM(YSURF_CUR,'MESONH','PRE',HATMFILE,YATMFILETYPE,  &
                        TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, &
                        TDTCUR%TDATE%DAY, TDTCUR%TIME          )
 CALL PREP_SURF_ATM(YSURF_CUR,'MESONH',HATMFILE,YATMFILETYPE,HATMFILE,YATMFILETYPE,YLCTL)
+IF (PRESENT(OINIFILEOPEN)) THEN
+  !This is done here because model dimensions were not known before this call (for PREP_SURFEX)
+  IF (OINIFILEOPEN) CALL IO_FILE_OPEN_ll(TINIFILE)
+END IF
 CALL WRITE_SURF_ATM_n(YSURF_CUR,'MESONH','PRE',.FALSE.)
 CALL WRITE_DIAG_SURF_ATM_n(YSURF_CUR,'MESONH','PRE')
 !
diff --git a/src/MNH/prep_surfex.f90 b/src/MNH/prep_surfex.f90
index 9e98c8a66..f588034fb 100644
--- a/src/MNH/prep_surfex.f90
+++ b/src/MNH/prep_surfex.f90
@@ -57,6 +57,7 @@ USE MODE_MODELN_HANDLER
 USE MODE_SPLITTINGZ_ll
 !
 USE MODI_OPEN_PRC_FILES
+USE MODI_PREP_SURF_MNH
 USE MODI_READ_ALL_NAMELISTS
 USE MODI_VERSION
 !
@@ -180,11 +181,10 @@ CALL READ_ALL_NAMELISTS(YSURF_CUR,'MESONH','PRE',.FALSE.)
 CALL GOTO_SURFEX(1)
 !
 CALL IO_FILE_ADD2LIST(TINIFILE,TRIM(CINIFILE),'PREPSURFEX','WRITE',KLFITYPE=1,KLFIVERB=1)
-!
-CALL IO_FILE_OPEN_ll(TINIFILE)
+!The open is done later in PREP_SURF_MNH when domain dimensions are known
 !
 TFILE_SURFEX => TINIFILE
-CALL PREP_SURF_MNH(YATMFILE,YATMFILETYPE)
+CALL PREP_SURF_MNH(YATMFILE,YATMFILETYPE,OINIFILEOPEN=.TRUE.)
 NULLIFY(TFILE_SURFEX)
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/write_hgrid.f90 b/src/MNH/write_hgrid.f90
index 27ae4046d..86fbeaea8 100644
--- a/src/MNH/write_hgrid.f90
+++ b/src/MNH/write_hgrid.f90
@@ -87,7 +87,7 @@ TYPE(TFILEDATA), INTENT(IN)  :: TPFILE    ! File to write
 !*       1.     TEST ON MODEL INDEX
 !	        -------------------
 ! KMI may be 0
-IF (KMI<0 .OR. KMI>JPMODELMAX) CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_HGRID_n','KMI<0 .OR. KMI>JPMODELMAX')
+IF (KMI<0 .OR. KMI>JPMODELMAX) CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_HGRID','KMI<0 .OR. KMI>JPMODELMAX')
 IF (KMI/=0) THEN
   CALL WRITE_HGRID_n(TPFILE)
   RETURN
-- 
GitLab