From 86af003640e69f72ea1260a9b7c0293fe2b13e74 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Thu, 5 Nov 2020 14:16:41 +0100
Subject: [PATCH] Philippe 05/11/2020: correct I/O of MNH2LPDM

---
 src/MNH/mnh2lpdm.f90     | 31 ++++++++++++++----
 src/MNH/mnh2lpdm_ech.f90 | 69 +++++++++++++++++++++++++++++++++-------
 src/MNH/mnh2lpdm_ini.f90 | 21 +++++++++---
 3 files changed, 99 insertions(+), 22 deletions(-)

diff --git a/src/MNH/mnh2lpdm.f90 b/src/MNH/mnh2lpdm.f90
index 0392d5c3b..f6e686689 100644
--- a/src/MNH/mnh2lpdm.f90
+++ b/src/MNH/mnh2lpdm.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 2002-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2002-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------------
 !     ######spl
         PROGRAM MNH2LPDM
 !	##############
@@ -12,8 +13,8 @@
 !	Creation :   16.07.2002
 !       Modification  : 07.01.2006 (T.LAUVAUX, adaptation LPDM)
 !       Modification  : 04.01.2009 (F. BONNARDOT, DP/SER/ENV )
-!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 05/11/2020: correct I/O of MNH2LPDM
 !-----------------------------------------------------------------------------
 !
 !
@@ -24,17 +25,22 @@
 !*	0.1 Modules.
 !
 USE MODD_CONF,             ONLY : CPROGRAM
-USE MODD_IO_ll,            ONLY : TFILEDATA,TPTR2FILE
+USE MODD_IO_ll,            ONLY : TFILEDATA, TFILE_OUTPUTLISTING, TPTR2FILE
+use modd_lunit
+use modd_lunit_n
 USE MODD_MNH2LPDM
 !
+USE MODE_FIELD,            ONLY: INI_FIELD_LIST, INI_FIELD_SCALARS
 USE MODE_FM,               ONLY: IO_FILE_OPEN_ll,IO_FILE_CLOSE_ll
 USE MODE_IO_ll,            ONLY: INITIO_ll,SET_CONFIO_ll
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST
 USE MODE_MODELN_HANDLER
 USE MODE_POS
 !
+USE MODI_INI_CST
 USE MODI_MNH2LPDM_ECH
 USE MODI_MNH2LPDM_INI
+USE MODI_VERSION
 !
 USE MODN_CONFIO
 !
@@ -65,6 +71,19 @@ TYPE(TFILEDATA),POINTER :: TZNMLFILE   => NULL() ! Namelist file
 !
 CPROGRAM='M2LPDM'
 CALL GOTO_MODEL(1)
+CALL VERSION()
+CALL INITIO_ll()
+CALL INI_CST()
+CALL INI_FIELD_LIST(1)
+CALL INI_FIELD_SCALARS()
+!
+CLUOUT  = 'OUTPUT_LISTING1'
+CLUOUT0 = CLUOUT
+CALL IO_FILE_ADD2LIST(TLUOUT0,CLUOUT0,'OUTPUTLISTING','WRITE')
+CALL IO_FILE_OPEN_ll(TLUOUT0)
+!Set output files for PRINT_MSG
+TLUOUT              => TLUOUT0
+TFILE_OUTPUTLISTING => TLUOUT0
 !
 !*	1.1 Variables generales.
 !
@@ -73,7 +92,7 @@ CALL GOTO_MODEL(1)
 !
 !*	1.2 Initialisation routines LL.
 !
-CALL INITIO_ll()
+! CALL INITIO_ll()
 !
 !
 !*	1.3 Ouverture du fichier log.
diff --git a/src/MNH/mnh2lpdm_ech.f90 b/src/MNH/mnh2lpdm_ech.f90
index e7b334e84..1f549e91d 100644
--- a/src/MNH/mnh2lpdm_ech.f90
+++ b/src/MNH/mnh2lpdm_ech.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 2009-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2009-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------------
 !     ######spl
@@ -12,8 +12,9 @@
 ! Auteur   : Francois Bonnardot, DP/SERV/ENV
 ! Creation : 07.01.2009
 ! Modifications:
-!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!  Philippe Wautelet 28/05/2018: corrected truncated integer division (1/3 -> 1./3.)
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 28/05/2018: corrected truncated integer division (1/3 -> 1./3.)
+!  P. Wautelet 05/11/2020: correct I/O of MNH2LPDM
 !-----------------------------------------------------------------------
 !
 !*	0.  DECLARATIONS.
@@ -34,6 +35,7 @@ USE MODD_TIME
 !
 USE MODD_MNH2LPDM
 !
+use mode_field,            only: tfielddata, TYPEREAL
 USE MODE_FM,               ONLY: IO_FILE_CLOSE_ll,IO_FILE_OPEN_ll
 USE MODE_FMREAD
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST
@@ -58,6 +60,7 @@ INTEGER              :: ICURAA,ICURMM,ICURJJ         ! Date  courante.
 INTEGER              :: ICURHH,ICURMN,ICURSS         ! Heure courante.
 INTEGER              :: JI,JJ,JK
 TYPE(DATE_TIME)      :: TZDTCUR
+type(tfielddata)        :: tzfield
 TYPE(TFILEDATA),POINTER :: TZFILE
 !
 !
@@ -105,13 +108,57 @@ CALL IO_READ_FIELD(TPFILE,'VT',     XVT)
 CALL IO_READ_FIELD(TPFILE,'WT',     XWT)
 CALL IO_READ_FIELD(TPFILE,'THT',    XTHT)
 CALL IO_READ_FIELD(TPFILE,'TKET',   XTKET)
-!PW:TODO: where are these fields (LM,THW_FLX,DISS,FMU,FMV) written?
-!Warning: not in fieldlist => won't be found
-CALL IO_READ_FIELD(TPFILE,'LM',     XLM)
-CALL IO_READ_FIELD(TPFILE,'THW_FLX',XWPTHP)
-CALL IO_READ_FIELD(TPFILE,'DISS',   XDISSIP)
-CALL IO_READ_FIELD(TPFILE,'FMU',    XSFU)
-CALL IO_READ_FIELD(TPFILE,'FMV',    XSFV)
+
+tzfield%cmnhname  = 'LM'
+tzfield%clongname = ''
+tzfield%cunits    = 'm'
+tzfield%cdir      = 'XY'
+tzfield%ccomment  = 'Mixing length'
+tzfield%ngrid     = 1
+tzfield%ntype     = TYPEREAL
+tzfield%ndims     = 3
+CALL IO_READ_FIELD(TPFILE, tzfield, XLM)
+
+tzfield%cmnhname  = 'THW_FLX'
+tzfield%clongname = ''
+tzfield%cunits    = 'K s-1' !correct?
+tzfield%cdir      = 'XY'
+tzfield%ccomment  = 'Conservative potential temperature vertical flux'
+tzfield%ngrid     = 4
+tzfield%ntype     = TYPEREAL
+tzfield%ndims     = 3
+CALL IO_READ_FIELD(TPFILE, tzfield, XWPTHP)
+
+tzfield%cmnhname  = 'DISS'
+tzfield%clongname = ''
+tzfield%cunits    = '' !TODO: set units
+tzfield%cdir      = 'XY'
+tzfield%ccomment  = 'X_Y_Z_DISS'
+tzfield%ngrid     = 1
+tzfield%ntype     = TYPEREAL
+tzfield%ndims     = 3
+CALL IO_READ_FIELD(TPFILE, tzfield, XDISSIP)
+
+tzfield%cmnhname  = 'FMU'
+tzfield%clongname = ''
+tzfield%cunits    = 'kg m-1 s-2'
+tzfield%cdir      = 'XY'
+tzfield%ccomment  = 'X_Y_FMU'
+tzfield%ngrid     = 4
+tzfield%ntype     = TYPEREAL
+tzfield%ndims     = 2
+CALL IO_READ_FIELD(TPFILE, tzfield, XSFU)
+
+tzfield%cmnhname  = 'FMV'
+tzfield%clongname = ''
+tzfield%cunits    = 'kg m-1 s-2'
+tzfield%cdir      = 'XY'
+tzfield%ccomment  = 'X_Y_FMV'
+tzfield%ngrid     = 4
+tzfield%ntype     = TYPEREAL
+tzfield%ndims     = 2
+CALL IO_READ_FIELD(TPFILE, tzfield, XSFV)
+
 CALL IO_READ_FIELD(TPFILE,'INPRT',  XINRT)
 CALL IO_READ_FIELD(TPFILE,'RVT',    XRMVT)
 CALL IO_READ_FIELD(TPFILE,'RCT',    XRMCT)
diff --git a/src/MNH/mnh2lpdm_ini.f90 b/src/MNH/mnh2lpdm_ini.f90
index f7d71da91..4e057923c 100644
--- a/src/MNH/mnh2lpdm_ini.f90
+++ b/src/MNH/mnh2lpdm_ini.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------------
 !     ######spl
         SUBROUTINE MNH2LPDM_INI(TPFILE1,TPFILE2,TPLOGFILE,TPGRIDFILE,TPDATEFILE)
 !--------------------------------------------------------------------------
@@ -19,7 +20,8 @@
 ! TPDATEFILE      Date file
 !
 ! Modifications:
-!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 05/11/2020: correct I/O of MNH2LPDM
 !--------------------------------------------------------------------------
 !
 !
@@ -41,6 +43,7 @@ USE MODD_TIME
 USE MODD_TIME_n
 !
 USE MODE_DATETIME
+use mode_field, only: tfielddata, TYPEREAL
 USE MODE_FM
 USE MODE_FMREAD
 USE MODE_GRIDPROJ
@@ -80,6 +83,7 @@ INTEGER, DIMENSION(:),   ALLOCATABLE   :: TAB1D
 INTEGER, DIMENSION(:,:), ALLOCATABLE   :: TAB2D
 TYPE(DATE_TIME)         :: TZDTCUR1,TZDTCUR2,TZDTEXP1
 INTEGER                :: IFDAT,IFGRI,IFLOG
+type(tfielddata)       :: tzfield
 !
 !
 !
@@ -203,8 +207,15 @@ CALL IO_READ_FIELD(TPFILE1,'ZS',XZS)
 !
 !*	2.8 Rugosite Z0. 
 !
-!PW:TODO: where is this field written? Warning: not in fieldlist => won't be found
-CALL IO_READ_FIELD(TPFILE1,'Z0',XZ0)
+tzfield%cmnhname  = 'Z0'
+tzfield%clongname = ''
+tzfield%cunits    = 'm'
+tzfield%cdir      = 'XY'
+tzfield%ccomment  = 'X_Y_Z0'
+tzfield%ngrid     = 4
+tzfield%ntype     = TYPEREAL
+tzfield%ndims     = 2
+CALL IO_READ_FIELD(TPFILE1,tzfield,XZ0)
 !
 XXPTSOMNH=XXHAT(1)+(XXHAT(2)-XXHAT(1))/2
 XYPTSOMNH=XYHAT(1)+(XYHAT(2)-XYHAT(1))/2
-- 
GitLab