From 89e51012bcf40ea6d39e35abc609166dda462ee6 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Thu, 27 Feb 2020 13:39:03 +0100 Subject: [PATCH] Philippe 27/02/2020: bugfix: P_TH_HIND was not accumulated (will affect budgets) + add P_TH_HINC dummy argument + change intent of *_HIND and *_HINC dummy arguments (INOUT->OUT) --- src/MNH/lima_meyers_nucleation.f90 | 36 ++++++++++--------- src/MNH/lima_nucleation_procs.f90 | 7 ++-- src/MNH/lima_phillips_ifn_nucleation.f90 | 45 ++++++++++++++---------- 3 files changed, 51 insertions(+), 37 deletions(-) diff --git a/src/MNH/lima_meyers_nucleation.f90 b/src/MNH/lima_meyers_nucleation.f90 index 8f2018952..74638faef 100644 --- a/src/MNH/lima_meyers_nucleation.f90 +++ b/src/MNH/lima_meyers_nucleation.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. +!----------------------------------------------------------------- ! ################################## MODULE MODI_LIMA_MEYERS_NUCLEATION ! ################################## @@ -12,7 +13,7 @@ INTERFACE PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & PCCT, PCIT, PINT, & P_TH_HIND, P_RI_HIND, P_CI_HIND, & - P_RC_HINC, P_CC_HINC ) + P_TH_HINC, P_RC_HINC, P_CC_HINC ) ! REAL, INTENT(IN) :: PTSTEP ! @@ -32,11 +33,12 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PCCT ! Cloud water C. at t REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PCIT ! Ice crystal C. source REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PINT ! Activated ice nuclei C. ! -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_TH_HIND -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_RI_HIND -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_CI_HIND -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_RC_HINC -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_CC_HINC +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_TH_HIND +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_RI_HIND +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_CI_HIND +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_TH_HINC +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_RC_HINC +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_CC_HINC ! END SUBROUTINE LIMA_MEYERS_NUCLEATION END INTERFACE @@ -48,7 +50,7 @@ END MODULE MODI_LIMA_MEYERS_NUCLEATION PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & PCCT, PCIT, PINT, & P_TH_HIND, P_RI_HIND, P_CI_HIND, & - P_RC_HINC, P_CC_HINC ) + P_TH_HINC, P_RC_HINC, P_CC_HINC ) ! ############################################################################# !! !! PURPOSE @@ -67,7 +69,7 @@ END MODULE MODI_LIMA_MEYERS_NUCLEATION !! MODIFICATIONS !! ------------- !! Original 15/03/2018 -!! +! P. Wautelet 27/02/2020: add P_TH_HINC dummy argument + change intent of *_HIND and *_HINC dummy arguments (INOUT->OUT) !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -105,11 +107,12 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PCCT ! Cloud water C. at t REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PCIT ! Ice crystal C. source REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PINT ! Activated ice nuclei C. ! -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_TH_HIND -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_RI_HIND -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_CI_HIND -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_RC_HINC -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_CC_HINC +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_TH_HIND +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_RI_HIND +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_CI_HIND +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_TH_HINC +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_RC_HINC +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_CC_HINC ! ! !* 0.2 Declarations of local variables : @@ -299,7 +302,8 @@ IF( INEGT >= 1 ) THEN ! P_RC_HINC(:,:,:) = - UNPACK( ZZW(:), MASK=GNEGT(:,:,:), FIELD=0. ) P_CC_HINC(:,:,:) = - UNPACK( ZZX(:), MASK=GNEGT(:,:,:), FIELD=0. ) - PTHT(:,:,:) = PTHT(:,:,:) + UNPACK( ZZW(:)*(ZLSFACT(:)-ZLVFACT(:)), MASK=GNEGT(:,:,:), FIELD=0. ) + P_TH_HINC(:,:,:) = UNPACK( ZZW(:)*(ZLSFACT(:)-ZLVFACT(:)), MASK=GNEGT(:,:,:), FIELD=0. ) + PTHT(:,:,:) = PTHT(:,:,:) + P_TH_HINC(:,:,:) PRCT(:,:,:) = PRCT(:,:,:) + P_RC_HINC(:,:,:) PRIT(:,:,:) = PRIT(:,:,:) - P_RC_HINC(:,:,:) PCCT(:,:,:) = PCCT(:,:,:) + P_CC_HINC(:,:,:) diff --git a/src/MNH/lima_nucleation_procs.f90 b/src/MNH/lima_nucleation_procs.f90 index ec9f230b3..7eb04adac 100644 --- a/src/MNH/lima_nucleation_procs.f90 +++ b/src/MNH/lima_nucleation_procs.f90 @@ -70,6 +70,7 @@ SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ, !! ------------- !! Original 15/03/2018 ! P. Wautelet 27/02/2020: bugfix: PNFT was not updated after LIMA_CCN_HOM_FREEZING +! P. Wautelet 27/02/2020: add Z_TH_HINC variable (for budgets) !------------------------------------------------------------------------------- ! USE MODD_PARAM_LIMA, ONLY : LCOLD, LNUCL, LMEYERS, LSNOW, LWARM, LACTI, LRAIN, LHHONI, & @@ -125,7 +126,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PNHT ! CCN hom. freezing ! !------------------------------------------------------------------------------- ! -REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3)) :: Z_TH_HIND, Z_RI_HIND, Z_CI_HIND, Z_RC_HINC, Z_CC_HINC +REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3)) :: Z_TH_HIND, Z_RI_HIND, Z_CI_HIND, Z_TH_HINC, Z_RC_HINC, Z_CC_HINC REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3)) :: ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3)) :: ZCCT, ZCRT, ZCIT REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3),NMOD_CCN) :: ZNFT, ZNAT @@ -189,7 +190,7 @@ IF (LCOLD .AND. LNUCL .AND. .NOT.LMEYERS .AND. NMOD_IFN.GE.1) THEN ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, & ZCCT, ZCIT, ZNAT, ZIFT, ZINT, ZNIT, & Z_TH_HIND, Z_RI_HIND, Z_CI_HIND, & - Z_RC_HINC, Z_CC_HINC ) + Z_TH_HINC, Z_RC_HINC, Z_CC_HINC ) ! ! Call budgets ! @@ -235,7 +236,7 @@ IF (LCOLD .AND. LNUCL .AND. LMEYERS) THEN ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, & ZCCT, ZCIT, ZINT, & Z_TH_HIND, Z_RI_HIND, Z_CI_HIND, & - Z_RC_HINC, Z_CC_HINC ) + Z_TH_HINC, Z_RC_HINC, Z_CC_HINC ) ! ! Call budgets ! diff --git a/src/MNH/lima_phillips_ifn_nucleation.f90 b/src/MNH/lima_phillips_ifn_nucleation.f90 index 053422c95..f16a52c5f 100644 --- a/src/MNH/lima_phillips_ifn_nucleation.f90 +++ b/src/MNH/lima_phillips_ifn_nucleation.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. +!----------------------------------------------------------------- ! ######################################## MODULE MODI_LIMA_PHILLIPS_IFN_NUCLEATION ! ######################################## @@ -12,7 +13,7 @@ INTERFACE PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & PCCT, PCIT, PNAT, PIFT, PINT, PNIT, & P_TH_HIND, P_RI_HIND, P_CI_HIND, & - P_RC_HINC, P_CC_HINC ) + P_TH_HINC, P_RC_HINC, P_CC_HINC ) ! REAL, INTENT(IN) :: PTSTEP ! @@ -35,11 +36,12 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PIFT ! Free IFN conc. REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PINT ! Nucleated IFN conc. REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNIT ! Nucleated (by immersion) CCN conc. ! -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_TH_HIND -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_RI_HIND -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_CI_HIND -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_RC_HINC -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_CC_HINC +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_TH_HIND +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_RI_HIND +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_CI_HIND +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_TH_HINC +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_RC_HINC +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_CC_HINC ! END SUBROUTINE LIMA_PHILLIPS_IFN_NUCLEATION END INTERFACE @@ -51,7 +53,7 @@ END MODULE MODI_LIMA_PHILLIPS_IFN_NUCLEATION PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & PCCT, PCIT, PNAT, PIFT, PINT, PNIT, & P_TH_HIND, P_RI_HIND, P_CI_HIND, & - P_RC_HINC, P_CC_HINC ) + P_TH_HINC, P_RC_HINC, P_CC_HINC ) ! ################################################################################# !! !! PURPOSE @@ -101,7 +103,8 @@ END MODULE MODI_LIMA_PHILLIPS_IFN_NUCLEATION !! MODIFICATIONS !! ------------- !! Original 15/03/2018 -!! +! P. Wautelet 27/02/2020: bugfix: P_TH_HIND was not accumulated (will affect budgets) + add P_TH_HINC dummy argument +! + change intent of *_HIND and *_HINC dummy arguments (INOUT->OUT) !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -150,11 +153,12 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PIFT ! Free IFN conc. REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PINT ! Nucleated IFN conc. REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNIT ! Nucleated (by immersion) CCN conc. ! -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_TH_HIND -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_RI_HIND -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_CI_HIND -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_RC_HINC -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: P_CC_HINC +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_TH_HIND +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_RI_HIND +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_CI_HIND +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_TH_HINC +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_RC_HINC +REAL, DIMENSION(:,:,:), INTENT(OUT) :: P_CC_HINC ! ! !* 0.2 Declarations of local variables : @@ -217,6 +221,7 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZTCELSIUS, ZZT_SI0_BC P_TH_HIND(:,:,:) = 0. P_RI_HIND(:,:,:) = 0. P_CI_HIND(:,:,:) = 0. +P_TH_HINC(:,:,:) = 0. P_RC_HINC(:,:,:) = 0. P_CC_HINC(:,:,:) = 0. ! @@ -407,8 +412,9 @@ IF (INEGT > 0) THEN PRVT(:,:,:) = PRVT(:,:,:) - ZW(:,:,:) PRIT(:,:,:) = PRIT(:,:,:) + ZW(:,:,:) ! - P_TH_HIND(:,:,:) = UNPACK( ZZW(:)*ZLSFACT(:), MASK=GNEGT(:,:,:), FIELD=0. ) - PTHT(:,:,:) = PTHT(:,:,:) + P_TH_HIND(:,:,:) + ZW(:,:,:) = UNPACK( ZZW(:)*ZLSFACT(:), MASK=GNEGT(:,:,:), FIELD=0. ) + P_TH_HIND(:,:,:) = P_TH_HIND(:,:,:) + ZW(:,:,:) + PTHT(:,:,:) = PTHT(:,:,:) + ZW(:,:,:) END DO ! ! @@ -452,7 +458,10 @@ IF (INEGT > 0) THEN P_RC_HINC(:,:,:) = P_RC_HINC(:,:,:) - ZW(:,:,:) PRCT(:,:,:) = PRCT(:,:,:) - ZW(:,:,:) PRIT(:,:,:) = PRIT(:,:,:) + ZW(:,:,:) - PTHT(:,:,:) = PTHT(:,:,:) + UNPACK( ZZY(:)*ZLSFACT(:), MASK=GNEGT(:,:,:), FIELD=0. ) +! + ZW(:,:,:) = UNPACK( ZZY(:)*ZLSFACT(:), MASK=GNEGT(:,:,:), FIELD=0. ) + P_TH_HINC(:,:,:) = P_TH_HINC(:,:,:) + ZW(:,:,:) + PTHT(:,:,:) = PTHT(:,:,:) + ZW(:,:,:) END IF END DO ! -- GitLab