From 2646cee77ee367f929026a5b91657493722faa12 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Mon, 7 Dec 2020 14:22:21 +0100
Subject: [PATCH] Philippe 07/12/2020: add CLEANLIST1D_ll subroutine + use it
 to correctly deallocate associated memory

---
 src/LIB/SURCOUCHE/src/mode_argslist_ll.f90 | 34 ++++++++++++++++++++--
 src/MNH/mode_gridcart.f90                  |  5 ++--
 src/MNH/mode_gridproj.f90                  |  6 ++--
 3 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/mode_argslist_ll.f90 b/src/LIB/SURCOUCHE/src/mode_argslist_ll.f90
index b42ab1c2a..2e1214f64 100644
--- a/src/LIB/SURCOUCHE/src/mode_argslist_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_argslist_ll.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-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 for details. version 1.
@@ -15,7 +15,7 @@
 !
 !    SUBROUTINES : ADD1DFIELD_ll, ADD2DFIELD_ll, ADD3DFIELD_ll
 !                  DEL1DFIELD_ll, DEL2DFIELD_ll, DEL3DFIELD_ll
-!                  CLEANLIST_ll
+!                  CLEANLIST_ll, CLEANLIST1D_ll
 !
 !!    Purpose
 !!    -------
@@ -49,7 +49,7 @@
 !     Original    May 19, 1998
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!
+!  P. Wautelet 07/12/2020: add CLEANLIST1D_ll subroutine
 !-------------------------------------------------------------------------------
 !
 ! Implicit arguments
@@ -705,6 +705,7 @@ end subroutine add4dfield_ll
 !
       END SUBROUTINE DEL3DFIELD_ll
 !
+!
 !!    ###############################
       SUBROUTINE CLEANLIST_ll(TPLIST)
 !!    ###############################
@@ -770,4 +771,31 @@ end subroutine add4dfield_ll
 !
       END SUBROUTINE CLEANLIST_ll
 !
+!!    ###############################
+      SUBROUTINE CLEANLIST1D_ll(TPLIST)
+!!    ###############################
+  IMPLICIT NONE
+!
+  TYPE(LIST1D_ll), POINTER :: TPLIST ! List of fields
+!
+  TYPE(LIST1D_ll), POINTER :: TZTEMP
+!
+!------------------------------------------------------------------------------
+!
+!*       1.    Deallocate one by one the elements of TPLIST
+!              --------------------------------------------
+!
+  IF (ASSOCIATED(TPLIST)) THEN
+    DO WHILE(ASSOCIATED(TPLIST))
+      TZTEMP => TPLIST
+      TPLIST => TPLIST%NEXT
+      DEALLOCATE(TZTEMP)
+    END DO
+    NULLIFY(TPLIST)
+  END IF
+!
+!------------------------------------------------------------------------------
+!
+      END SUBROUTINE CLEANLIST1D_ll
+
 END MODULE MODE_ARGSLIST_ll
diff --git a/src/MNH/mode_gridcart.f90 b/src/MNH/mode_gridcart.f90
index 65981a6f6..46fcf2656 100644
--- a/src/MNH/mode_gridcart.f90
+++ b/src/MNH/mode_gridcart.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 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 for details. version 1.
@@ -35,6 +35,7 @@
 !!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
+!  P. Wautelet 07/12/2020: bugfix: deallocate correctly TZHALO1_ll
 !--------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -204,7 +205,7 @@ PDYHAT(:)  = EOSHIFT(PYHAT(:) ,1,ZBOUNDY)      - PYHAT(:)
 CALL ADD1DFIELD_ll( 'X', TZHALO1_ll, PDXHAT, 'SM_GRIDCART::PDXHAT')
 CALL ADD1DFIELD_ll( 'Y', TZHALO1_ll, PDYHAT, 'SM_GRIDCART::PDYHAT')
 CALL UPDATE_1DHALO_ll(TZHALO1_ll,IINFO_ll)
-DEALLOCATE(TZHALO1_ll)
+CALL CLEANLIST1D_ll( TZHALO1_ll )
 !
 ZDZ(:,:,1:IKU-1) =  PZZ(:,:,2:IKU) - PZZ(:,:,1:IKU-1)
 ZDZ(:,:,IKU)     =  ZBOUNDZ(:,:)  - PZZ(:,:,IKU)
diff --git a/src/MNH/mode_gridproj.f90 b/src/MNH/mode_gridproj.f90
index 30abee4f3..d907e6801 100644
--- a/src/MNH/mode_gridproj.f90
+++ b/src/MNH/mode_gridproj.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 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 for details. version 1.
@@ -39,7 +39,7 @@
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!
+!  P. Wautelet 07/12/2020: bugfix: deallocate correctly TZHALO1_ll
 !------------------------------------------------------------------------------
 !
 !*                0.  DECLARATIONS
@@ -370,7 +370,7 @@ ZDZ(:,:,IKU)     = ZDZ(:,:,IKU-1)
 CALL ADD1DFIELD_ll( 'X', TZHALO1_ll, PDXHAT, 'SM_GRIDPROJ::PDXHAT' )
 CALL ADD1DFIELD_ll( 'Y', TZHALO1_ll, PDYHAT, 'SM_GRIDPROJ::PDYHAT' )
 CALL UPDATE_1DHALO_ll(TZHALO1_ll,IINFO_ll)
-DEALLOCATE(TZHALO1_ll)
+call CLEANLIST1D_ll( TZHALO1_ll )
 CALL MPPDB_CHECK3D(ZDZ,"GRIDPROJ:ZDZ",PRECISION)
 !
 !-----------------------------------------------------------------------------
-- 
GitLab