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