From 57664e9027303cb2f29308ca3e2064e242ba4b4c Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Thu, 18 Jan 2018 16:26:20 +0100
Subject: [PATCH] Philippe 18/01/2018: IO: correct 2 problems in PREP_SURFEX

---
 src/LIB/SURCOUCHE/src/mode_netcdf.f90 |  6 ++++--
 src/MNH/prep_surfex.f90               | 25 ++++++++++++-------------
 2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
index 4e12b6b4a..9609697ee 100644
--- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90
+++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
@@ -163,7 +163,8 @@ PIOCDF => TPFILE%TNCDIMS
 INCID = TPFILE%NNCID
 
 IF (TPFILE%LMASTER) THEN
-  IF (TRIM(CPROGRAM)/='PGD') THEN
+  IF ( TRIM(CPROGRAM)/='PGD' &
+      .AND. .NOT.(TRIM(CPROGRAM)=='REAL'.AND. .NOT.ASSOCIATED(XXHAT)) ) THEN !condition to detect PREP_SURFEX
     IIU = SIZE(XXHAT)
     IJU = SIZE(XYHAT)
     ALLOCATE(ZXHATM(IIU),ZYHATM(IJU))
@@ -193,7 +194,8 @@ IF (TPFILE%LMASTER) THEN
     CALL WRITE_HOR_COORD(PIOCDF%DIM_NJ_V,'y-dimension of the grid at v location','y_grid_index_at_v_location','Y',-0.5,JPHEXT)
   ENDIF
   !
-  IF (TRIM(CPROGRAM)/='PGD' .AND. TRIM(CPROGRAM)/='NESPGD') THEN
+  IF (TRIM(CPROGRAM)/='PGD' .AND. TRIM(CPROGRAM)/='NESPGD' &
+      .AND. .NOT.(TRIM(CPROGRAM)=='REAL'.AND. .NOT.ASSOCIATED(XXHAT)) ) THEN !condition to detect PREP_SURFEX
     IKU = SIZE(XZHAT)
     ALLOCATE(ZZHATM(IKU))
     ZZHATM(1:IKU-1) = 0.5 * (XZHAT(2:IKU)+XZHAT(1:IKU-1))
diff --git a/src/MNH/prep_surfex.f90 b/src/MNH/prep_surfex.f90
index e3ab44721..f3200a838 100644
--- a/src/MNH/prep_surfex.f90
+++ b/src/MNH/prep_surfex.f90
@@ -40,7 +40,7 @@ USE MODD_CONF,        ONLY : CPROGRAM,NMASDEV,NBUGFIX,CBIBUSER,&
 USE MODD_CONF_n,      ONLY : CSTORAGE_TYPE
 USE MODD_IO_ll,       ONLY : TFILEDATA, LIOCDF4, LLFIOUT, NIO_VERB, NVERB_DEBUG, TFILE_SURFEX
 USE MODD_LUNIT,       ONLY : CLUOUT0, TPGDFILE, TLUOUT0
-USE MODD_LUNIT_n,     ONLY : CINIFILE
+USE MODD_LUNIT_n,     ONLY : CINIFILE, TINIFILE
 USE MODD_MNH_SURFEX_n
 USE MODD_PARAMETERS,  ONLY : JPMODELMAX,JPHEXT,JPVEXT, NUNDEF, XUNDEF
 USE MODD_TIME_n,      ONLY : TDTCUR
@@ -85,7 +85,6 @@ INTEGER               :: IINFO_ll        ! return code of // routines
 CHARACTER (LEN=100)   :: HCOMMENT
 INTEGER               :: II, IJ, IGRID, ILENGTH
 !
-TYPE(TFILEDATA),POINTER :: TZFILE    => NULL()
 TYPE(TFILEDATA),POINTER :: TZATMFILE => NULL()
 TYPE(TFILEDATA),POINTER :: TZPGDFILE => NULL()
 TYPE(TFILEDATA),POINTER :: TZPRE_REAL1FILE => NULL()
@@ -116,10 +115,6 @@ ILUOUT0 = TLUOUT0%NLU
 !
 TPGDFILE => TZPGDFILE
 !
-CALL IO_FILE_ADD2LIST(TZFILE,TRIM(CINIFILE),'PREPSURFEX','WRITE',KLFITYPE=1,KLFIVERB=1)
-!
-CALL IO_FILE_OPEN_ll(TZFILE)
-!
 !-------------------------------------------------------------------------------
 !
 !*       3.    INITIALIZATION OF PHYSICAL CONSTANTS
@@ -184,17 +179,21 @@ YSURF_CUR => YSURF_LIST(1)
 CALL READ_ALL_NAMELISTS(YSURF_CUR,'MESONH','PRE',.FALSE.)
 CALL GOTO_SURFEX(1)
 !
-TFILE_SURFEX => TZFILE
+CALL IO_FILE_ADD2LIST(TINIFILE,TRIM(CINIFILE),'PREPSURFEX','WRITE',KLFITYPE=1,KLFIVERB=1)
+!
+CALL IO_FILE_OPEN_ll(TINIFILE)
+!
+TFILE_SURFEX => TINIFILE
 CALL PREP_SURF_MNH(YATMFILE,YATMFILETYPE)
 NULLIFY(TFILE_SURFEX)
 !
 !-------------------------------------------------------------------------------
 !
-CALL IO_WRITE_HEADER(TZFILE)
-CALL IO_WRITE_FIELD(TZFILE,'SURF','EXTE')
-CALL IO_WRITE_FIELD(TZFILE,'L1D', L1D)
-CALL IO_WRITE_FIELD(TZFILE,'L2D', L2D)
-CALL IO_WRITE_FIELD(TZFILE,'PACK',LPACK)
+CALL IO_WRITE_HEADER(TINIFILE)
+CALL IO_WRITE_FIELD(TINIFILE,'SURF','EXTE')
+CALL IO_WRITE_FIELD(TINIFILE,'L1D', L1D)
+CALL IO_WRITE_FIELD(TINIFILE,'L2D', L2D)
+CALL IO_WRITE_FIELD(TINIFILE,'PACK',LPACK)
 !
 !-------------------------------------------------------------------------------
 WRITE(ILUOUT0,*) ' '
@@ -203,7 +202,7 @@ WRITE(ILUOUT0,*) '|                                |'
 WRITE(ILUOUT0,*) '|   PREP_SURFEX ends correctly   |'
 WRITE(ILUOUT0,*) '|                                |'
 WRITE(ILUOUT0,*) '----------------------------------'
-CALL IO_FILE_CLOSE_ll(TZFILE)
+CALL IO_FILE_CLOSE_ll(TINIFILE)
 !
 IF(NIO_VERB>=NVERB_DEBUG) CALL IO_FILE_PRINT_LIST()
 !
-- 
GitLab