From c44e9258069243bedadfe6f1d56f411f6d82cdb1 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Tue, 30 May 2023 10:27:54 +0200
Subject: [PATCH] Philippe 30/05/2023: add CNAME field to HALO2LIST_ll and set
 it in INIT_HALO2_ll

---
 src/LIB/SURCOUCHE/src/modd_argslist_ll.f90  |  7 +++++--
 src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90 | 13 +++++++++----
 src/MNH/advecuvw_rk.f90                     |  8 ++++----
 src/MNH/contrav.f90                         | 16 ++++++++--------
 src/MNH/get_halo.f90                        |  2 +-
 src/MNH/modeln.f90                          | 12 ++++++------
 src/MNH/zdiffusetup.f90                     |  6 +++---
 7 files changed, 36 insertions(+), 28 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/modd_argslist_ll.f90 b/src/LIB/SURCOUCHE/src/modd_argslist_ll.f90
index 5eafaed27..232041b2d 100644
--- a/src/LIB/SURCOUCHE/src/modd_argslist_ll.f90
+++ b/src/LIB/SURCOUCHE/src/modd_argslist_ll.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-2023 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 for details. version 1.
@@ -35,6 +35,7 @@
 !     -------------
 !!    Original 04/05/98
 !  P. Wautelet 20/05/2019: add cname field + set initial values
+!  P. Wautelet 23/05/2023: add cname field to HALO2LIST_ll
 !
 !-------------------------------------------------------------------------------
 !
@@ -115,7 +116,9 @@ TYPE HALO2LIST_ll
 !-------------------------------------------------------------------------------
 !
   INTEGER :: NCARD = 0
-!
+
+  character(len=NLISTTYPENAMESIZE) :: cname = 'UNKNOWN'
+
   TYPE(HALO2_ll),     POINTER :: HALO2 => null()
 !
   TYPE(HALO2LIST_ll), POINTER :: NEXT => null()
diff --git a/src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90 b/src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90
index e124cb81e..6b83f235b 100644
--- a/src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1998-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-2023 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 for details. version 1.
@@ -75,9 +75,9 @@ implicit none
 !
 !-----------------------------------------------------------------------
 !
-!     ######################################################################
-      SUBROUTINE INIT_HALO2_ll(TPHALO2LIST, KNBVAR, KDIMX, KDIMY, KDIMZ)
-!     ######################################################################
+!     ##########################################################################
+      SUBROUTINE INIT_HALO2_ll(TPHALO2LIST, KNBVAR, KDIMX, KDIMY, KDIMZ, HNAME )
+!     ##########################################################################
 !
 !!****  *INIT_HALO2_ll* initialise the second layer of the halo
 !!
@@ -99,6 +99,8 @@ implicit none
 !!    Author
 !!    ------
 !     P. Kloos                 * CERFACS - CNRM *
+! Modifications:
+!  P. Wautelet 23/05/2023: add HNAME dummy argument
 ! 
 !-------------------------------------------------------------------------------
 !
@@ -114,6 +116,7 @@ implicit none
   TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST ! list of HALO2_lls
   INTEGER                     :: KNBVAR      ! number of HALO2_lls to allocate
   INTEGER        :: KDIMX, KDIMY, KDIMZ      ! dimensions of the HALO2_lls
+  CHARACTER(LEN=*), INTENT(IN) :: HNAME
 !
 !
 !*       0.2   Declarations of local variables :
@@ -153,6 +156,8 @@ implicit none
     ZNORTH=0.
     !$acc end kernels
 
+    WRITE( TZHALO2LIST%CNAME, FMT = '( A, " ", I0 )' ) HNAME, KNBVAR
+
     ALLOCATE(TZHALO2LIST%NEXT)
 !
 !*       1.2   Go to the next HALO2_ll, or terminate the list
diff --git a/src/MNH/advecuvw_rk.f90 b/src/MNH/advecuvw_rk.f90
index 18bbbffa4..0189d6039 100644
--- a/src/MNH/advecuvw_rk.f90
+++ b/src/MNH/advecuvw_rk.f90
@@ -459,7 +459,7 @@ CALL ADD3DFIELD_ll( TZFIELDMT_ll, ZVT, 'ADVECUVW_RK::ZVT' )
 CALL ADD3DFIELD_ll( TZFIELDMT_ll, ZWT, 'ADVECUVW_RK::ZWT' )
 INBVAR = 3
 #ifndef MNH_OPENACC
-CALL INIT_HALO2_ll(TZHALO2MT_ll,INBVAR,SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3))
+CALL INIT_HALO2_ll( TZHALO2MT_ll, INBVAR, SIZE(PUT,1), SIZE(PUT,2), SIZE(PWT,3), 'ADVECUVW_RK' )
 #endif
 !
 !$acc kernels present_cr(ZRUS,ZRVS,ZRWS)
@@ -492,9 +492,9 @@ RKLOOP: DO JS = 1, ISPL
   IF (GFIRST_CALL_ADVECUVW_RK) THEN
     GFIRST_CALL_ADVECUVW_RK = .FALSE.
     NULLIFY(TZHALO2_UT,TZHALO2_VT,TZHALO2_WT)
-    CALL INIT_HALO2_ll(TZHALO2_UT,1,IIU,IJU,IKU)
-    CALL INIT_HALO2_ll(TZHALO2_VT,1,IIU,IJU,IKU)
-    CALL INIT_HALO2_ll(TZHALO2_WT,1,IIU,IJU,IKU)
+    CALL INIT_HALO2_ll( TZHALO2_UT, 1, IIU, IJU, IKU, 'ADVECUVW_RK::ZUT' )
+    CALL INIT_HALO2_ll( TZHALO2_VT, 1, IIU, IJU, IKU, 'ADVECUVW_RK::ZVT' )
+    CALL INIT_HALO2_ll( TZHALO2_WT, 1, IIU, IJU, IKU, 'ADVECUVW_RK::ZWT' )
   END IF
 
   CALL GET_HALO2_DF(ZUT,TZHALO2_UT,HNAME='ADVECUVW_RK::ZUT')
diff --git a/src/MNH/contrav.f90 b/src/MNH/contrav.f90
index 3c16c7e64..8d41cbf3d 100644
--- a/src/MNH/contrav.f90
+++ b/src/MNH/contrav.f90
@@ -217,10 +217,10 @@ IF (KADV_ORDER == 4 ) THEN
   NULLIFY(TZHALO2_V)
   NULLIFY(TZHALO2_DZX)
   NULLIFY(TZHALO2_DZY)
-  CALL INIT_HALO2_ll(TZHALO2_U,1,IIU,IJU,IKU)
-  CALL INIT_HALO2_ll(TZHALO2_V,1,IIU,IJU,IKU)
-  CALL INIT_HALO2_ll(TZHALO2_DZX,1,IIU,IJU,IKU)
-  CALL INIT_HALO2_ll(TZHALO2_DZY,1,IIU,IJU,IKU)
+  CALL INIT_HALO2_ll( TZHALO2_U,   1, IIU, IJU, IKU, 'CONTRAV::U'   )
+  CALL INIT_HALO2_ll( TZHALO2_V,   1, IIU, IJU, IKU, 'CONTRAV::V'   )
+  CALL INIT_HALO2_ll( TZHALO2_DZX, 1, IIU, IJU, IKU, 'CONTRAV::DZX' )
+  CALL INIT_HALO2_ll( TZHALO2_DZY, 1, IIU, IJU, IKU, 'CONTRAV::DZY' )
   CALL UPDATE_HALO2_ll(TZFIELD_U, TZHALO2_U, IINFO_ll)
   CALL UPDATE_HALO2_ll(TZFIELD_V, TZHALO2_V, IINFO_ll)
   CALL UPDATE_HALO2_ll(TZFIELD_DZX, TZHALO2_DZX, IINFO_ll)
@@ -621,10 +621,10 @@ IF (KADV_ORDER == 4 ) THEN
          NULLIFY(TZHALO2_V)
          NULLIFY(TZHALO2_DZX)
          NULLIFY(TZHALO2_DZY)
-         CALL INIT_HALO2_ll(TZHALO2_U,1,IIU,IJU,IKU)
-         CALL INIT_HALO2_ll(TZHALO2_V,1,IIU,IJU,IKU)
-         CALL INIT_HALO2_ll(TZHALO2_DZX,1,IIU,IJU,IKU)
-         CALL INIT_HALO2_ll(TZHALO2_DZY,1,IIU,IJU,IKU)
+         CALL INIT_HALO2_ll( TZHALO2_U,  1, IIU, IJU, IKU, 'CONTRAV::U'   )
+         CALL INIT_HALO2_ll( TZHALO2_V,  1, IIU, IJU, IKU, 'CONTRAV::V'   )
+         CALL INIT_HALO2_ll( TZHALO2_DZX,1, IIU, IJU, IKU, 'CONTRAV::DZX' )
+         CALL INIT_HALO2_ll( TZHALO2_DZY,1, IIU, IJU, IKU, 'CONTRAV::DZY' )
     END IF
     ZU_EAST => TZHALO2_U%HALO2%EAST
     ZDZX_EAST => TZHALO2_DZX%HALO2%EAST
diff --git a/src/MNH/get_halo.f90 b/src/MNH/get_halo.f90
index bc3491ba4..eab1bc956 100644
--- a/src/MNH/get_halo.f90
+++ b/src/MNH/get_halo.f90
@@ -228,7 +228,7 @@ else
 end if
 
 NULLIFY( TZ_PSRC_ll,TP_PSRC_HALO2_ll)
-CALL INIT_HALO2_ll(TP_PSRC_HALO2_ll,1,IIU,IJU,IKU)
+CALL INIT_HALO2_ll( TP_PSRC_HALO2_ll, 1, IIU, IJU, IKU, 'GET_HALO2::' // TRIM( yname ) )
 !
 CALL ADD3DFIELD_ll( TZ_PSRC_ll, PSRC, 'GET_HALO2::'//trim( yname ) )
 CALL UPDATE_HALO_ll(TZ_PSRC_ll,IERROR)
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index ab883121e..9dcd0490b 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -725,8 +725,8 @@ IF (KTCOUNT == 1) THEN
   !
     INBVAR = 4+NRR+NSV
     IF (SIZE(XRTKES,1) /= 0) INBVAR=INBVAR+1
-    CALL INIT_HALO2_ll(THALO2T_ll,INBVAR,IIU,IJU,IKU)
-    CALL INIT_HALO2_ll(TLSHALO2_ll,4+MIN(1,NRR),IIU,IJU,IKU)
+    CALL INIT_HALO2_ll (THALO2T_ll,  INBVAR,       IIU, IJU, IKU, 'MODEL_n::HALO2T'  )
+    CALL INIT_HALO2_ll (TLSHALO2_ll, 4+MIN(1,NRR), IIU, IJU, IKU, 'MODEL_n::LSHALO2' )
   !
   !*       1.6   Initialise the 2nd layer of the halo of the LS fields
   !
@@ -1721,16 +1721,16 @@ IF ((CUVW_ADV_SCHEME(1:3)=='CEN') .AND. (CTEMP_SCHEME == 'LEFR')) THEN
       CALL ADD3DFIELD_ll( TZFIELDC_ll, XVT, 'MODEL_n::XVT' )
       CALL ADD3DFIELD_ll( TZFIELDC_ll, XWT, 'MODEL_n::XWT' )
 #ifndef MNH_OPENACC
-      CALL INIT_HALO2_ll(TZHALO2C_ll,3,IIU,IJU,IKU)
+      CALL INIT_HALO2_ll( TZHALO2C_ll, 3, IIU, IJU, IKU, 'MODEL_n::HALO2C' )
       CALL UPDATE_HALO_ll(TZFIELDC_ll,IINFO_ll)
       CALL UPDATE_HALO2_ll(TZFIELDC_ll, TZHALO2C_ll, IINFO_ll)
 #else
   IF (GFIRST_CALL_MODELN) THEN
     GFIRST_CALL_MODELN = .FALSE.
     NULLIFY(TZHALO2_UT,TZHALO2_VT,TZHALO2_WT)
-    CALL INIT_HALO2_ll(TZHALO2_UT,1,IIU,IJU,IKU)
-    CALL INIT_HALO2_ll(TZHALO2_VT,1,IIU,IJU,IKU)
-    CALL INIT_HALO2_ll(TZHALO2_WT,1,IIU,IJU,IKU)
+    CALL INIT_HALO2_ll( TZHALO2_UT, 1, IIU, IJU, IKU, 'MODEL_n::XUT' )
+    CALL INIT_HALO2_ll( TZHALO2_VT, 1, IIU, IJU, IKU, 'MODEL_n::XVT' )
+    CALL INIT_HALO2_ll( TZHALO2_WT, 1, IIU, IJU, IKU, 'MODEL_n::XWT' )
   END IF
 
   CALL GET_HALO2_DF(XUT,TZHALO2_UT,HNAME='XUT')
diff --git a/src/MNH/zdiffusetup.f90 b/src/MNH/zdiffusetup.f90
index 41e271e21..1dee69db7 100644
--- a/src/MNH/zdiffusetup.f90
+++ b/src/MNH/zdiffusetup.f90
@@ -41,14 +41,14 @@ END MODULE MODI_ZDIFFUSETUP
 !!    REFERENCE
 !!    ---------
 !!
-!!      Z�ngl, G., 2002: An improved method for computing horizontal diffusion in a
+!!      Zangl, G., 2002: An improved method for computing horizontal diffusion in a
 !!                       sigma-coordinate model and its application to simulations
 !!                       over mountainous topography. Mon. Wea. Rev. 130, 1423-1432.
 !!
 !!    AUTHOR
 !!    ------
 !!
-!!      G. Z�ngl       * University of Munich*
+!!      G. Zangl       * University of Munich*
 !
 ! Modifications:
 !  J. Escobar  07/10/2015: remove print
@@ -153,7 +153,7 @@ NULLIFY(TZHGTMASS_ll,TZHGTHALO2_ll)
 ! Compute height field at mass points
 ZZMASS = MZF(PZZ)
 
-CALL INIT_HALO2_ll(TZHGTHALO2_ll,1,IIU,IJU,IKU)
+CALL INIT_HALO2_ll( TZHGTHALO2_ll, 1, IIU, IJU, IKU, 'ZDIFFSETUP::HGTHALO2' )
 CALL ADD3DFIELD_ll( TZHGTMASS_ll, ZZMASS, 'ZDIFFUSETUP::ZZMASS' )
 
 CALL UPDATE_HALO2_ll(TZHGTMASS_ll,TZHGTHALO2_ll,IERROR)
-- 
GitLab