From d12f51837c6df491da5d42ab65145e23e449568c Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Tue, 24 Jul 2018 13:46:56 +0200
Subject: [PATCH] Philippe 24/07/2018: SPAWNING: bug correction: model top
 (XZTOP) was not spawned

---
 src/MNH/modd_spawn.f90   | 1 +
 src/MNH/spawn_grid2.f90  | 7 +++++--
 src/MNH/spawn_model2.f90 | 7 ++++---
 src/MNH/spawning.f90     | 1 +
 4 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/MNH/modd_spawn.f90 b/src/MNH/modd_spawn.f90
index c4a8c1a23..41f83c8a1 100644
--- a/src/MNH/modd_spawn.f90
+++ b/src/MNH/modd_spawn.f90
@@ -65,6 +65,7 @@ CHARACTER (LEN=28) :: CDADSPAFILE ! DAD fm-file for spawning file
 REAL,DIMENSION(:),    SAVE,POINTER :: XXHAT1  => NULL()
 REAL,DIMENSION(:),    SAVE,POINTER :: XYHAT1  => NULL()
 REAL,DIMENSION(:),    SAVE,POINTER :: XZHAT1  => NULL()
+REAL,                 SAVE,POINTER :: XZTOP1  => NULL()
 REAL,DIMENSION(:,:),  SAVE,POINTER :: XZS1    => NULL()
 REAL,DIMENSION(:,:),  SAVE,POINTER :: XZSMT1  => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XZZ1    => NULL()
diff --git a/src/MNH/spawn_grid2.f90 b/src/MNH/spawn_grid2.f90
index 25f6aa1b4..c1e938c6a 100644
--- a/src/MNH/spawn_grid2.f90
+++ b/src/MNH/spawn_grid2.f90
@@ -10,7 +10,7 @@ MODULE MODI_SPAWN_GRID2
 INTERFACE
 !
      SUBROUTINE SPAWN_GRID2 (KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,         &
-                             PLONOR,PLATOR,PXHAT,PYHAT,PZHAT,                 &
+                             PLONOR,PLATOR,PXHAT,PYHAT,PZHAT,PZTOP,           &
                              OSLEVE,PLEN1,PLEN2,                              &
                              PZS,PZSMT,PZS_LS,PZSMT_LS,                       &
                              TPDTMOD,TPDTCUR                                  )
@@ -27,6 +27,7 @@ REAL,                 INTENT(INOUT) :: PLATOR            ! Latitude of the origi
 REAL,                 INTENT(INOUT) :: PLONOR            ! Longitude of the origine point
 REAL, DIMENSION(:),   INTENT(INOUT) :: PXHAT,PYHAT,PZHAT ! positions x,y,z in the
                                      ! conformal plane or on the cartesian plane
+REAL,                 INTENT(OUT)   :: PZTOP             ! model top (m)
 LOGICAL,              INTENT(OUT)   :: OSLEVE            ! flag for SLEVE coordinate
 REAL,                 INTENT(OUT)   :: PLEN1             ! Decay scale for smooth topography
 REAL,                 INTENT(OUT)   :: PLEN2             ! Decay scale for small-scale topography deviation
@@ -48,7 +49,7 @@ END MODULE MODI_SPAWN_GRID2
 !
 !     #########################################################################
      SUBROUTINE SPAWN_GRID2 (KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,         &
-                             PLONOR,PLATOR,PXHAT,PYHAT,PZHAT,                 &
+                             PLONOR,PLATOR,PXHAT,PYHAT,PZHAT,PZTOP,           &
                              OSLEVE,PLEN1,PLEN2,                              &
                              PZS,PZSMT,PZS_LS,PZSMT_LS,                       &
                              TPDTMOD,TPDTCUR                                  )
@@ -188,6 +189,7 @@ REAL,                 INTENT(INOUT) :: PLATOR            ! Latitude of the origi
 REAL,                 INTENT(INOUT) :: PLONOR            ! Longitude of the origine point
 REAL, DIMENSION(:),   INTENT(INOUT) :: PXHAT,PYHAT,PZHAT ! positions x,y,z in the
                                      ! conformal plane or on the cartesian plane
+REAL,                 INTENT(OUT)   :: PZTOP             ! model top (m)
 LOGICAL,              INTENT(OUT)   :: OSLEVE            ! flag for SLEVE coordinate
 REAL,                 INTENT(OUT)   :: PLEN1             ! Decay scale for smooth topography
 REAL,                 INTENT(OUT)   :: PLEN2             ! Decay scale for small-scale topography deviation
@@ -302,6 +304,7 @@ END IF
 !*       2.    INITIALIZATION OF THE GRID OF MODEL 2:
 !              --------------------------------------
 !
+PZTOP    = XZTOP1
 PZHAT(:) = XZHAT1(:) 
 OSLEVE   = LSLEVE1
 PLEN1    = XLEN11
diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90
index 8921287c5..d920dbc0c 100644
--- a/src/MNH/spawn_model2.f90
+++ b/src/MNH/spawn_model2.f90
@@ -728,6 +728,7 @@ END IF
 !*       4.4   Grid variables (module MODD_GRID2 and MODD_METRICS2):
 !
 ALLOCATE(XXHAT(IIU),XYHAT(IJU),XZHAT(IKU))
+ALLOCATE(XZTOP)
 ALLOCATE(XMAP(IIU,IJU))
 ALLOCATE(XLAT(IIU,IJU))
 ALLOCATE(XLON(IIU,IJU))
@@ -1045,9 +1046,9 @@ ELSE
         NYEND_TMP = NYEND
 ENDIF
 XZS=0.
-CALL SPAWN_GRID2 (NXOR,NYOR,NXEND,NYEND,NDXRATIO,NDYRATIO,              &
-                  XLONORI,XLATORI,XXHAT,XYHAT,XZHAT,LSLEVE,XLEN1,XLEN2, &
-                  XZS,XZSMT,ZZS_LS,ZZSMT_LS,TDTMOD,TDTCUR               )
+CALL SPAWN_GRID2 (NXOR,NYOR,NXEND,NYEND,NDXRATIO,NDYRATIO,                    &
+                  XLONORI,XLATORI,XXHAT,XYHAT,XZHAT,XZTOP,LSLEVE,XLEN1,XLEN2, &
+                  XZS,XZSMT,ZZS_LS,ZZSMT_LS,TDTMOD,TDTCUR                     )
 !
 CALL MPPDB_CHECK2D(ZZS_LS,"SPAWN_MOD2:ZZS_LS",PRECISION)
 CALL MPPDB_CHECK2D(ZZSMT_LS,"SPAWN_MOD2:ZZSMT_LS",PRECISION)
diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90
index cbd533417..7ab352665 100644
--- a/src/MNH/spawning.f90
+++ b/src/MNH/spawning.f90
@@ -278,6 +278,7 @@ USE MODD_PRECIP_n
 XXHAT1 => XXHAT
 XYHAT1 => XYHAT
 XZHAT1 => XZHAT
+XZTOP1 => XZTOP
 XZS1 => XZS
 XZSMT1 => XZSMT
 XZZ1 => XZZ
-- 
GitLab