From bfb03daa14b837c6202f1e1cc7c896b7ff9a715e Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Tue, 2 Feb 2021 11:31:42 +0100 Subject: [PATCH] Philippe 02/02/2021: budgets: add missing source terms for SV budgets in LIMA (cherry picked from commit 1630ee46448f3c94d10da5554c3d8a7b092df73b) --- src/MNH/ini_budget.f90 | 40 +++++++++++++++++++++++++-- src/MNH/lima_meyers.f90 | 17 +++++++----- src/MNH/lima_mixed.f90 | 4 +-- src/MNH/lima_mixed_slow_processes.f90 | 17 ++++++++++-- src/MNH/lima_phillips.f90 | 30 ++++++++++++-------- src/MNH/lima_warm.f90 | 6 ++-- 6 files changed, 86 insertions(+), 28 deletions(-) diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90 index 917477278..5a18aeef5 100644 --- a/src/MNH/ini_budget.f90 +++ b/src/MNH/ini_budget.f90 @@ -169,6 +169,7 @@ END MODULE MODI_INI_BUDGET ! P. Wautelet 01/02/2021: bugfix: manage correctly MAFL and ADV source for SV budgets ! P. Wautelet 01/02/2021: add missing source: VISC ! P. Wautelet 01/02/2021: bugfix: add missing CEDS source terms for SV budgets +! P. Wautelet 02/02/2021: budgets: add missing source terms for SV budgets in LIMA !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -184,7 +185,9 @@ USE MODD_PARAM_ICE USE MODD_PARAM_C2R2 USE MODD_ELEC_DESCR, ONLY : LINDUCTIVE USE MODD_2D_FRC -USE MODD_PARAM_LIMA, ONLY : OWARM=>LWARM, OCOLD=>LCOLD, OSEDI=>LSEDI, & +USE MODD_NSV +USE MODD_PARAM_LIMA, ONLY : OAERO_MASS=>LAERO_MASS, & + OWARM=>LWARM, OCOLD=>LCOLD, OSEDI=>LSEDI, & OHHONI=>LHHONI, ORAIN=>LRAIN, OSEDC=>LSEDC, & ONUCL=>LNUCL, OACTI=>LACTI, OSNOW=>LSNOW, & OHAIL=>LHAIL, OSCAV=>LSCAV, OMEYERS=>LMEYERS,& @@ -3433,7 +3436,7 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 END IF - IF (OCOLD .AND. ONUCL .AND. OHHONI .AND. NMOD_CCN.GE.1) THEN + IF (OCOLD .AND. ONUCL .AND. OHHONI) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONH_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 @@ -3472,6 +3475,16 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV + IF (OWARM .AND. OACTI .AND. OPTSPLIT) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF + IF (OCOLD .AND. ONUCL .AND. .NOT. OMEYERS .AND. OPTSPLIT) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HINC_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 @@ -3679,6 +3692,24 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV + IF (OCOLD .AND. ONUCL .AND. OMEYERS .AND. JSV == NSV_LIMA_IFN_NUCL .AND. OPTSPLIT) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HIND_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HINC_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF + IF (OCOLD .AND. ONUCL .AND. .NOT. OMEYERS .AND. OPTSPLIT) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HIND_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF + IF (OPTSPLIT .OR. (OCOLD .AND. OWARM)) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'IMLT_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 @@ -3708,6 +3739,11 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV + IF (OCOLD .AND. ONUCL .AND. .NOT. OMEYERS .AND. OPTSPLIT) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HINC_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF IF ( OCOLD ) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_' diff --git a/src/MNH/lima_meyers.f90 b/src/MNH/lima_meyers.f90 index 1dd7bf0ac..df5f065d2 100644 --- a/src/MNH/lima_meyers.f90 +++ b/src/MNH/lima_meyers.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2021 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. @@ -106,21 +106,22 @@ END MODULE MODI_LIMA_MEYERS !! ------------- !! Original ??/??/13 !! C. Barthe * LACy * jan. 2014 add budgets -!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! B.Vie 03/2020 Correction of budgets parallelization -!! +! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 28/05/2019: move COUNTJV function to tools.f90 +! B. Vie 03/2020: correction of budgets parallelization +! P. Wautelet 02/02/2021: budgets: add missing source terms for SV budgets in LIMA !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! -USE MODD_PARAMETERS +USE MODD_BUDGET USE MODD_CST +USE MODD_NSV, ONLY: NSV_LIMA_NC, NSV_LIMA_NI, NSV_LIMA_IFN_NUCL +USE MODD_PARAMETERS USE MODD_PARAM_LIMA USE MODD_PARAM_LIMA_COLD -USE MODD_BUDGET USE MODI_BUDGET -USE MODD_NSV, ONLY : NSV_LIMA_NC, NSV_LIMA_NI ! USE MODI_LIMA_FUNCTIONS, ONLY : COUNTJV ! @@ -357,6 +358,7 @@ IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HIND_BU_RRI') IF (LBUDGET_SV) THEN CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HIND_BU_RSV') + CALL BUDGET (PINS(:,:,:,1)*PRHODJ(:,:,:),12+NSV_LIMA_IFN_NUCL,'HIND_BU_RSV') END IF END IF ! @@ -443,6 +445,7 @@ IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN IF (LBUDGET_SV) THEN CALL BUDGET ( PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'HINC_BU_RSV') CALL BUDGET ( PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HINC_BU_RSV') + CALL BUDGET ( PINS(:,:,:,1)*PRHODJ(:,:,:),12+NSV_LIMA_IFN_NUCL,'HINC_BU_RSV') END IF END IF ! diff --git a/src/MNH/lima_mixed.f90 b/src/MNH/lima_mixed.f90 index c71914ed7..40b73c924 100644 --- a/src/MNH/lima_mixed.f90 +++ b/src/MNH/lima_mixed.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2021 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. @@ -532,7 +532,7 @@ IF( IMICRO >= 0 ) THEN ZLBDAI, ZLBDAG, & ZRHODJ, GMICRO, PRHODJ, KMI, & PTHS, PRVS, PRCS, PRIS, PRGS, & - PCCS, PCIS ) + PCCS, PCIS, PINS ) ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/lima_mixed_slow_processes.f90 b/src/MNH/lima_mixed_slow_processes.f90 index 7c58f4910..f2a23fe75 100644 --- a/src/MNH/lima_mixed_slow_processes.f90 +++ b/src/MNH/lima_mixed_slow_processes.f90 @@ -1,3 +1,8 @@ +!MNH_LIC Copyright 2013-2021 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. +!----------------------------------------------------------------- ! ##################################### MODULE MODI_LIMA_MIXED_SLOW_PROCESSES ! ##################################### @@ -11,7 +16,7 @@ INTERFACE ZLBDAI, ZLBDAG, & ZRHODJ, GMICRO, PRHODJ, KMI, & PTHS, PRVS, PRCS, PRIS, PRGS, & - PCCS, PCIS ) + PCCS, PCIS, PINS ) ! REAL, DIMENSION(:), INTENT(IN) :: ZRHODREF ! RHO Dry REFerence REAL, DIMENSION(:), INTENT(IN) :: ZZT ! Temperature @@ -52,6 +57,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRIS REAL, DIMENSION(:,:,:), INTENT(IN) :: PRGS REAL, DIMENSION(:,:,:), INTENT(IN) :: PCCS REAL, DIMENSION(:,:,:), INTENT(IN) :: PCIS +REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PINS ! END SUBROUTINE LIMA_MIXED_SLOW_PROCESSES END INTERFACE @@ -66,7 +72,7 @@ END MODULE MODI_LIMA_MIXED_SLOW_PROCESSES ZLBDAI, ZLBDAG, & ZRHODJ, GMICRO, PRHODJ, KMI, & PTHS, PRVS, PRCS, PRIS, PRGS, & - PCCS, PCIS ) + PCCS, PCIS, PINS ) ! ####################################################################### ! !! @@ -105,7 +111,7 @@ END MODULE MODI_LIMA_MIXED_SLOW_PROCESSES !! ------------- !! Original ??/??/13 !! C. Barthe * LACy * jan. 2014 add budgets -!! +! P. Wautelet 02/02/2021: budgets: add missing source terms for SV budgets in LIMA !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -165,6 +171,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRIS REAL, DIMENSION(:,:,:), INTENT(IN) :: PRGS REAL, DIMENSION(:,:,:), INTENT(IN) :: PCCS REAL, DIMENSION(:,:,:), INTENT(IN) :: PCIS +REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PINS ! !* 0.2 Declarations of local variables : ! @@ -241,6 +248,10 @@ END IF 12+NSV_LIMA_NC,'IMLT_BU_RSV') CALL BUDGET (UNPACK(ZCIS(:),MASK=GMICRO(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:), & 12+NSV_LIMA_NI,'IMLT_BU_RSV') + DO JMOD_IFN = 1,NMOD_IFN + CALL BUDGET (UNPACK(ZINS(:,JMOD_IFN),MASK=GMICRO(:,:,:),FIELD=PINS(:,:,:,JMOD_IFN))*PRHODJ(:,:,:), & + 12+NSV_LIMA_IFN_NUCL+JMOD_IFN-1,'IMLT_BU_RSV') + ENDDO END IF END IF ! diff --git a/src/MNH/lima_phillips.f90 b/src/MNH/lima_phillips.f90 index 0aa2276d3..4f45b93de 100644 --- a/src/MNH/lima_phillips.f90 +++ b/src/MNH/lima_phillips.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2021 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. @@ -115,18 +115,20 @@ END MODULE MODI_LIMA_PHILLIPS !! ------------- !! Original ??/??/13 !! C. Barthe * LACy * jan. 2014 add budgets -!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! B.Vie 03/2020 Correction of budgets parallelization -!! +! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 28/05/2019: move COUNTJV function to tools.f90 +! B. Vie 03/2020: Correction of budgets parallelization +! P. Wautelet 02/02/2021: budgets: add missing source terms for SV budgets in LIMA !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! -USE MODD_PARAMETERS, ONLY : JPHEXT, JPVEXT USE MODD_CST, ONLY : XP00, XRD, XMV, XMD, XCPD, XCPV, XCL, XCI, & XTT, XLSTT, XLVTT, XALPI, XBETAI, XGAMI, & XALPW, XBETAW, XGAMW, XPI +USE MODD_NSV, ONLY : NSV_LIMA_NC, NSV_LIMA_NI, NSV_LIMA_IFN_FREE, NSV_LIMA_CCN_ACTI, NSV_LIMA_IFN_NUCL, NSV_LIMA_IMM_NUCL +USE MODD_PARAMETERS, ONLY : JPHEXT, JPVEXT USE MODD_PARAM_LIMA, ONLY : NMOD_IFN, NSPECIE, XFRAC, & NMOD_CCN, NMOD_IMM, NIND_SPECIE, NINDICE_CCN_IMM, & XDSI0, XRTMIN, XCTMIN, NPHILLIPS @@ -138,7 +140,6 @@ USE MODI_LIMA_PHILLIPS_INTEG ! USE MODD_BUDGET USE MODI_BUDGET -USE MODD_NSV, ONLY : NSV_LIMA_NC, NSV_LIMA_NI, NSV_LIMA_IFN_FREE ! ! IMPLICIT NONE @@ -482,12 +483,11 @@ IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'HIND_BU_RRV') IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HIND_BU_RRI') IF (LBUDGET_SV) THEN - CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HIND_BU_RSV') - IF (NMOD_IFN.GE.1) THEN - DO JL=1, NMOD_IFN - CALL BUDGET (PIFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'HIND_BU_RSV') - END DO - END IF + CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HIND_BU_RSV') + DO JL=1, NMOD_IFN + CALL BUDGET (PIFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'HIND_BU_RSV') + CALL BUDGET (PINS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_IFN_NUCL+JL-1,'HIND_BU_RSV') + END DO END IF END IF ! @@ -560,6 +560,12 @@ IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN IF (LBUDGET_SV) THEN CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'HINC_BU_RSV') CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HINC_BU_RSV') + DO JL=1, NMOD_CCN + CALL BUDGET (PNAS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_CCN_ACTI+JL-1,'HINC_BU_RSV') + END DO + DO JL=1, NMOD_IMM + CALL BUDGET (PNIS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_IMM_NUCL+JL-1,'HINC_BU_RSV') + END DO END IF END IF ! diff --git a/src/MNH/lima_warm.f90 b/src/MNH/lima_warm.f90 index 01b4c413d..034c38130 100644 --- a/src/MNH/lima_warm.f90 +++ b/src/MNH/lima_warm.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2021 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. @@ -131,6 +131,7 @@ END MODULE MODI_LIMA_WARM ! B. Vié 03/02/2020: correction of activation of water deposition on the ground ! B. Vié 03/03/2020: use DTHRAD instead of dT/dt in Smax diagnostic computation ! P. Wautelet 28/05/2020: bugfix: correct array start for PSVT and PSVS +! P. Wautelet 02/02/2021: budgets: add missing source terms for SV budgets in LIMA !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -367,7 +368,8 @@ IF (LACTI .AND. NMOD_CCN.GE.1) THEN IF (LBUDGET_SV) THEN CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'HENU_BU_RSV') ! RCN DO JL=1, NMOD_CCN - CALL BUDGET ( ZNFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'HENU_BU_RSV') + CALL BUDGET ( ZNFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'HENU_BU_RSV') + CALL BUDGET ( ZNAS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_CCN_ACTI+JL-1,'HENU_BU_RSV') END DO END IF ! -- GitLab