From fb085c3b6988425fa389312e5093ff88334b7698 Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Fri, 22 Sep 2023 17:07:52 +0200
Subject: [PATCH] Quentin 22/09/2023: PHYEX v0.6.3 merge fix with POSNAM
 modernization and modd_param_ice_n renamed

---
 src/MNH/mode_sensor.f90                |  4 ++--
 src/PHYEX/aux/mode_posnam_phy.f90      |  8 ++++----
 src/PHYEX/micro/modd_nebn.f90          |  9 +++++----
 src/PHYEX/micro/modd_param_icen.f90    |  9 +++++----
 src/PHYEX/micro/modd_param_lima.f90    |  9 +++++----
 src/PHYEX/turb/modd_param_mfshalln.f90 |  9 +++++----
 src/PHYEX/turb/modd_turbn.f90          | 10 ++++++----
 7 files changed, 32 insertions(+), 26 deletions(-)

diff --git a/src/MNH/mode_sensor.f90 b/src/MNH/mode_sensor.f90
index bd6c86b3b..e3488cbb8 100644
--- a/src/MNH/mode_sensor.f90
+++ b/src/MNH/mode_sensor.f90
@@ -65,7 +65,7 @@ CONTAINS
     USE MODD_CST,              ONLY: XLAM_CRAD, XLIGHTSPEED, XPI, XRHOLW, XTT
     USE MODD_NSV,              ONLY: NSV_LIMA_NC, NSV_LIMA_NR, NSV_LIMA_NI
     USE MODD_PARAMETERS,       ONLY: XUNDEF
-    USE MODD_PARAM_ICE,        ONLY: LSNOW_T_I => LSNOW_T
+    USE MODD_PARAM_ICE_n,        ONLY: LSNOW_T_I => LSNOW_T
     USE MODD_PARAM_LIMA,       ONLY: LSNOW_T_L => LSNOW_T,                                                       &
                                      XALPHAR_L => XALPHAR, XNUR_L => XNUR, XALPHAS_L => XALPHAS, XNUS_L => XNUS, &
                                      XALPHAG_L => XALPHAG, XNUG_L => XNUG, XALPHAI_L => XALPHAI, XNUI_L => XNUI, &
@@ -77,7 +77,7 @@ CONTAINS
     USE MODD_PARAM_LIMA_MIXED, ONLY: XLBEXG_L => XLBEXG, XLBG_L => XLBG, XCCG_L => XCCG, XAG_L => XAG, XBG_L => XBG, XCXG_L => XCXG
     USE MODD_PARAM_LIMA_WARM,  ONLY: XAC_L => XAC, XAR_L => XAR, XBC_L => XBC, XBR_L => XBR
     USE MODD_PARAM_N,          ONLY: CCLOUD, CSURF
-    USE MODD_RAIN_ICE_DESCR,   ONLY: XALPHAR_I => XALPHAR, XNUR_I => XNUR, XLBEXR_I => XLBEXR,                   &
+    USE MODD_RAIN_ICE_DESCR_n,   ONLY: XALPHAR_I => XALPHAR, XNUR_I => XNUR, XLBEXR_I => XLBEXR,                   &
                                      XLBR_I => XLBR, XCCR_I => XCCR, XBR_I => XBR, XAR_I => XAR,                 &
                                      XALPHAC_I => XALPHAC, XNUC_I => XNUC, XBC_I => XBC, XAC_I => XAC,           &
                                      XALPHAC2_I => XALPHAC2, XNUC2_I => XNUC2,                                   &
diff --git a/src/PHYEX/aux/mode_posnam_phy.f90 b/src/PHYEX/aux/mode_posnam_phy.f90
index 692ade326..5f5f47b58 100644
--- a/src/PHYEX/aux/mode_posnam_phy.f90
+++ b/src/PHYEX/aux/mode_posnam_phy.f90
@@ -3,22 +3,22 @@ IMPLICIT NONE
 PRIVATE
 PUBLIC :: POSNAM_PHY
 CONTAINS
-SUBROUTINE POSNAM_PHY(KULNAM, CDNAML, LDNEEDNAM, LDFOUND, KLUOUT)
+SUBROUTINE POSNAM_PHY(TFILENAM, CDNAML, LDNEEDNAM, LDFOUND)
 
 !Wrapper to call the Meso-NH version of posnam
 
 USE MODE_MSG, ONLY: NVERB_FATAL, PRINT_MSG
 USE MODE_POS, ONLY: POSNAM
+USE MODD_IO,  ONLY: TFILEDATA
 
 IMPLICIT NONE
 
-INTEGER,          INTENT(IN)    :: KULNAM    !< Logical unit to access the namelist
+TYPE(TFILEDATA),  INTENT(IN)    :: TFILENAM    !< Namelist file
 CHARACTER(LEN=*), INTENT(IN)    :: CDNAML    !< Namelist name
 LOGICAL,          INTENT(IN)    :: LDNEEDNAM !< True to abort if namelist is absent
 LOGICAL,          INTENT(OUT)   :: LDFOUND   !< True if namelist has been found
-INTEGER,          INTENT(IN)    :: KLUOUT    !< Logical unit for output
 
-CALL POSNAM(KULNAM, CDNAML, LDFOUND, KLUOUT)
+CALL POSNAM(TFILENAM, CDNAML, LDFOUND)
 IF(LDNEEDNAM .AND. .NOT. LDFOUND) CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'POSNAM_PHY', 'CANNOT LOCATE '//CDNAML)
 
 END SUBROUTINE POSNAM_PHY
diff --git a/src/PHYEX/micro/modd_nebn.f90 b/src/PHYEX/micro/modd_nebn.f90
index dce8f1d9a..fdc47f6a3 100644
--- a/src/PHYEX/micro/modd_nebn.f90
+++ b/src/PHYEX/micro/modd_nebn.f90
@@ -98,7 +98,7 @@ IF(.NOT. ASSOCIATED(NEBN, NEB_MODEL(KTO))) THEN
 ENDIF
 END SUBROUTINE NEB_GOTO_MODEL
 !
-SUBROUTINE NEBN_INIT(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, &
+SUBROUTINE NEBN_INIT(HPROGRAM, TFILENAM, LDNEEDNAM, KLUOUT, &
                     &LDDEFAULTVAL, LDREADNAM, LDCHECK, KPRINT)
 !!*** *NEBN_INIT* - Code needed to initialize the MODD_NEB_n module
 !!
@@ -130,6 +130,7 @@ SUBROUTINE NEBN_INIT(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, &
 !
 USE MODE_POSNAM_PHY, ONLY: POSNAM_PHY
 USE MODE_CHECK_NAM_VAL, ONLY: CHECK_NAM_VAL_CHAR
+USE MODD_IO,  ONLY: TFILEDATA
 !
 IMPLICIT NONE
 !
@@ -137,7 +138,7 @@ IMPLICIT NONE
 !       ------------------------
 !
 CHARACTER(LEN=6),  INTENT(IN) :: HPROGRAM     !< Name of the calling program
-INTEGER,           INTENT(IN) :: KUNITNML     !< Logical unit to access the namelist
+TYPE(TFILEDATA),   INTENT(IN) :: TFILENAM     !< Namelist file
 LOGICAL,           INTENT(IN) :: LDNEEDNAM    !< True to abort if namelist is absent
 INTEGER,           INTENT(IN) :: KLUOUT       !< Logical unit for outputs
 LOGICAL, OPTIONAL, INTENT(IN) :: LDDEFAULTVAL !< Must we initialize variables with default values (defaults to .TRUE.)
@@ -197,8 +198,8 @@ ENDIF
 !       -----------
 !
 IF(LLREADNAM) THEN
-  CALL POSNAM_PHY(KUNITNML, 'NAM_NEBN', LDNEEDNAM, LLFOUND, KLUOUT)
-  IF(LLFOUND) READ(UNIT=KUNITNML, NML=NAM_NEBn)
+  CALL POSNAM_PHY(TFILENAM, 'NAM_NEBN', LDNEEDNAM, LLFOUND)
+  IF(LLFOUND) READ(UNIT=TFILENAM%NLU, NML=NAM_NEBn)
 ENDIF
 !
 !*      3. CHECKS
diff --git a/src/PHYEX/micro/modd_param_icen.f90 b/src/PHYEX/micro/modd_param_icen.f90
index 9ea39306b..1113a1d47 100644
--- a/src/PHYEX/micro/modd_param_icen.f90
+++ b/src/PHYEX/micro/modd_param_icen.f90
@@ -229,7 +229,7 @@ IF(.NOT. ASSOCIATED(PARAM_ICEN, PARAM_ICE_MODEL(KTO))) THEN
 ENDIF
 END SUBROUTINE PARAM_ICE_GOTO_MODEL
 !
-SUBROUTINE PARAM_ICEN_INIT(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, &
+SUBROUTINE PARAM_ICEN_INIT(HPROGRAM, TFILENAM, LDNEEDNAM, KLUOUT, &
                           &LDDEFAULTVAL, LDREADNAM, LDCHECK, KPRINT)
 !!*** *PARAM_ICEN_INIT* - Code needed to initialize the MODD_PARAM_ICE_n module
 !!
@@ -262,6 +262,7 @@ SUBROUTINE PARAM_ICEN_INIT(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, &
 USE MODE_POSNAM_PHY, ONLY: POSNAM_PHY
 USE MODE_MSG, ONLY: PRINT_MSG, NVERB_FATAL
 USE MODE_CHECK_NAM_VAL, ONLY: CHECK_NAM_VAL_CHAR, CHECK_NAM_VAL_REAL, CHECK_NAM_VAL_INT
+USE MODD_IO,  ONLY: TFILEDATA
 !
 IMPLICIT NONE
 !
@@ -269,7 +270,7 @@ IMPLICIT NONE
 !       ------------------------
 !
 CHARACTER(LEN=6),  INTENT(IN) :: HPROGRAM     !< Name of the calling program
-INTEGER,           INTENT(IN) :: KUNITNML     !< Logical unit to access the namelist
+TYPE(TFILEDATA),   INTENT(IN) :: TFILENAM     !< Namelist file
 LOGICAL,           INTENT(IN) :: LDNEEDNAM    !< True to abort if namelist is absent
 INTEGER,           INTENT(IN) :: KLUOUT       !< Logical unit for outputs
 LOGICAL, OPTIONAL, INTENT(IN) :: LDDEFAULTVAL !< Must we initialize variables with default values (defaults to .TRUE.)
@@ -392,8 +393,8 @@ ENDIF
 !       -----------
 !
 IF(LLREADNAM) THEN
-  CALL POSNAM_PHY(KUNITNML, 'NAM_PARAM_ICEN', LDNEEDNAM, LLFOUND, KLUOUT)
-  IF(LLFOUND) READ(UNIT=KUNITNML, NML=NAM_PARAM_ICEn)
+  CALL POSNAM_PHY(TFILENAM, 'NAM_PARAM_ICEN', LDNEEDNAM, LLFOUND)
+  IF(LLFOUND) READ(UNIT=TFILENAM%NLU, NML=NAM_PARAM_ICEn)
 ENDIF
 !
 !*      3. CHECKS
diff --git a/src/PHYEX/micro/modd_param_lima.f90 b/src/PHYEX/micro/modd_param_lima.f90
index 3565e1d9a..1ba738383 100644
--- a/src/PHYEX/micro/modd_param_lima.f90
+++ b/src/PHYEX/micro/modd_param_lima.f90
@@ -557,7 +557,7 @@ SUBROUTINE PARAM_LIMA_ALLOCATE(HNAME, KDIM1, KDIM2, KDIM3)
   END SELECT
 END SUBROUTINE PARAM_LIMA_ALLOCATE
 !
-SUBROUTINE PARAM_LIMA_INIT(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, &
+SUBROUTINE PARAM_LIMA_INIT(HPROGRAM, TFILENAM, LDNEEDNAM, KLUOUT, &
                           &LDDEFAULTVAL, LDREADNAM, LDCHECK, KPRINT)
 !!*** *PARAM_ICEN_INIT* - Code needed to initialize the MODD_PARAM_LIMA module
 !!
@@ -590,6 +590,7 @@ SUBROUTINE PARAM_LIMA_INIT(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, &
 USE MODE_POSNAM_PHY, ONLY: POSNAM_PHY
 USE MODE_MSG, ONLY: PRINT_MSG, NVERB_FATAL
 USE MODE_CHECK_NAM_VAL, ONLY: CHECK_NAM_VAL_CHAR
+USE MODD_IO,  ONLY: TFILEDATA
 !
 IMPLICIT NONE
 !
@@ -597,7 +598,7 @@ IMPLICIT NONE
 !       ------------------------
 !
 CHARACTER(LEN=6),  INTENT(IN) :: HPROGRAM     !< Name of the calling program
-INTEGER,           INTENT(IN) :: KUNITNML     !< Logical unit to access the namelist
+TYPE(TFILEDATA),   INTENT(IN) :: TFILENAM     !< Namelist file
 LOGICAL,           INTENT(IN) :: LDNEEDNAM    !< True to abort if namelist is absent
 INTEGER,           INTENT(IN) :: KLUOUT       !< Logical unit for outputs
 LOGICAL, OPTIONAL, INTENT(IN) :: LDDEFAULTVAL !< Must we initialize variables with default values (defaults to .TRUE.)
@@ -700,8 +701,8 @@ ENDIF
 !       -----------
 !
 IF(LLREADNAM) THEN
-  CALL POSNAM_PHY(KUNITNML, 'NAM_PARAM_LIMA', LDNEEDNAM, LLFOUND, KLUOUT)
-  IF(LLFOUND) READ(UNIT=KUNITNML, NML=NAM_PARAM_LIMA)
+  CALL POSNAM_PHY(TFILENAM, 'NAM_PARAM_LIMA', LDNEEDNAM, LLFOUND)
+  IF(LLFOUND) READ(UNIT=TFILENAM%NLU, NML=NAM_PARAM_LIMA)
 ENDIF
 !
 !*      3. CHECKS
diff --git a/src/PHYEX/turb/modd_param_mfshalln.f90 b/src/PHYEX/turb/modd_param_mfshalln.f90
index 664812c58..6c50a6fe6 100644
--- a/src/PHYEX/turb/modd_param_mfshalln.f90
+++ b/src/PHYEX/turb/modd_param_mfshalln.f90
@@ -181,7 +181,7 @@ ENDIF
 !
 END SUBROUTINE PARAM_MFSHALL_GOTO_MODEL
 
-SUBROUTINE PARAM_MFSHALLN_INIT(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, &
+SUBROUTINE PARAM_MFSHALLN_INIT(HPROGRAM, TFILENAM, LDNEEDNAM, KLUOUT, &
                          &LDDEFAULTVAL, LDREADNAM, LDCHECK, KPRINT)
 !!*** *PARAM_MFSHALLN* - Code needed to initialize the MODD_PARAM_MFSHALL_n module
 !!
@@ -213,6 +213,7 @@ SUBROUTINE PARAM_MFSHALLN_INIT(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, &
 !
 USE MODE_POSNAM_PHY, ONLY: POSNAM_PHY
 USE MODE_CHECK_NAM_VAL, ONLY: CHECK_NAM_VAL_CHAR
+USE MODD_IO,  ONLY: TFILEDATA
 !
 IMPLICIT NONE
 !
@@ -220,7 +221,7 @@ IMPLICIT NONE
 !       ------------------------
 !
 CHARACTER(LEN=6),  INTENT(IN) :: HPROGRAM     !< Name of the calling program
-INTEGER,           INTENT(IN) :: KUNITNML     !< Logical unit to access the namelist
+TYPE(TFILEDATA),   INTENT(IN) :: TFILENAM     !< Namelist file
 LOGICAL,           INTENT(IN) :: LDNEEDNAM    !< True to abort if namelist is absent
 INTEGER,           INTENT(IN) :: KLUOUT       !< Logical unit for outputs
 LOGICAL, OPTIONAL, INTENT(IN) :: LDDEFAULTVAL !< Must we initialize variables with default values (defaults to .TRUE.)
@@ -290,8 +291,8 @@ ENDIF
 !       -----------
 !
 IF(LLREADNAM) THEN
-  CALL POSNAM_PHY(KUNITNML, 'NAM_PARAM_MFSHALLN', LDNEEDNAM, LLFOUND, KLUOUT)
-  IF(LLFOUND) READ(UNIT=KUNITNML, NML=NAM_PARAM_MFSHALLn)
+  CALL POSNAM_PHY(TFILENAM, 'NAM_PARAM_MFSHALLN', LDNEEDNAM, LLFOUND)
+  IF(LLFOUND) READ(UNIT=TFILENAM%NLU, NML=NAM_PARAM_MFSHALLn)
 ENDIF
 !
 !*      3. CHECKS
diff --git a/src/PHYEX/turb/modd_turbn.f90 b/src/PHYEX/turb/modd_turbn.f90
index b4c173c55..9c485f2c5 100644
--- a/src/PHYEX/turb/modd_turbn.f90
+++ b/src/PHYEX/turb/modd_turbn.f90
@@ -281,7 +281,7 @@ ENDIF
 !
 END SUBROUTINE TURB_GOTO_MODEL
 
-SUBROUTINE TURBN_INIT(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, &
+SUBROUTINE TURBN_INIT(HPROGRAM, TFILENAM, LDNEEDNAM, KLUOUT, &
                      &LDDEFAULTVAL, LDREADNAM, LDCHECK, KPRINT)
 !!*** *TURBN_INIT* - Code needed to initialize the MODD_TURB_n module
 !!
@@ -314,6 +314,8 @@ SUBROUTINE TURBN_INIT(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, &
 USE MODE_POSNAM_PHY, ONLY: POSNAM_PHY
 USE MODE_CHECK_NAM_VAL, ONLY: CHECK_NAM_VAL_CHAR
 USE MODD_PARAMETERS, ONLY: XUNDEF
+USE MODD_IO,  ONLY: TFILEDATA
+
 !
 IMPLICIT NONE
 !
@@ -321,7 +323,7 @@ IMPLICIT NONE
 !       ------------------------
 !
 CHARACTER(LEN=6),  INTENT(IN) :: HPROGRAM     !< Name of the calling program
-INTEGER,           INTENT(IN) :: KUNITNML     !< Logical unit to access the namelist
+TYPE(TFILEDATA),   INTENT(IN) :: TFILENAM     !< Namelist file
 LOGICAL,           INTENT(IN) :: LDNEEDNAM    !< True to abort if namelist is absent
 INTEGER,           INTENT(IN) :: KLUOUT       !< Logical unit for outputs
 LOGICAL, OPTIONAL, INTENT(IN) :: LDDEFAULTVAL !< Must we initialize variables with default values (defaults to .TRUE.)
@@ -404,8 +406,8 @@ ENDIF
 !       -----------
 !
 IF(LLREADNAM) THEN
-  CALL POSNAM_PHY(KUNITNML, 'NAM_TURBN', LDNEEDNAM, LLFOUND, KLUOUT) 
-  IF(LLFOUND) READ(UNIT=KUNITNML, NML=NAM_TURBn) 
+  CALL POSNAM_PHY(TFILENAM, 'NAM_TURBN', LDNEEDNAM, LLFOUND) 
+  IF(LLFOUND) READ(UNIT=TFILENAM%NLU, NML=NAM_TURBn) 
 ENDIF
 !
 !*      3. CHECKS
-- 
GitLab