diff --git a/src/MNH/lima_meyers_nucleation.f90 b/src/MNH/lima_meyers_nucleation.f90 index 8f20189526e24357bd33718f151bd5b604d3052a..74638faefbf64dc3f78c0f8f415bc777eb1a4739 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 ec9f230b389c068143eb582f76c50ebbbb6d59ea..7eb04adace2e4d0b9a98f7e9129c12901a049b37 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 053422c951156e2cdb883407ab4ca29c86b1930c..f16a52c5f6b7712d3a48eceacb421deb6bbaea03 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 !