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