From 9c185eac2c3e3fe25daab09e7141881f359f8c9d Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Mon, 15 Feb 2021 16:12:50 +0100 Subject: [PATCH] Philippe 15/02/2021: budgets: correct electricity budgets (cherry picked from commit efa327ed951e640c43d1827e6a8e2c76d4de9071) --- src/MNH/ini_budget.f90 | 244 +++++++++++++++++++++++++++++----------- src/MNH/modd_budget.f90 | 9 ++ 2 files changed, 186 insertions(+), 67 deletions(-) diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90 index 0bdaadb6d..8eaf500f3 100644 --- a/src/MNH/ini_budget.f90 +++ b/src/MNH/ini_budget.f90 @@ -173,6 +173,7 @@ END MODULE MODI_INI_BUDGET ! P. Wautelet 03/02/2021: budgets: add new source if LIMA splitting: CORR2 ! P. Wautelet 10/02/2021: budgets: add missing sources for NSV_C2R2BEG+3 budget ! P. Wautelet 11/02/2021: budgets: add missing term SCAV for NSV_LIMA_SCAVMASS budget +! P. Wautelet 15/02/2021: budgets: correct electricity budgets !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -880,11 +881,11 @@ IF (LBU_RTH) THEN IPROACTV(4,IPROC) = NCEDSTH IPROC=IPROC+1 ELSE - IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) IPROACTV(4,IPROC) = NADJUTH + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE .AND. CELEC == 'NONE' ) IPROACTV(4,IPROC) = NADJUTH IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE' .OR. (HCLOUD == 'C2R2' .AND. (.NOT. LSUPSAT)) & .OR. ( HCLOUD == 'KHKO' .AND. (.NOT. LSUPSAT)) ) & - IPROACTV(4,IPROC) = NHENUTH + IPROACTV(4,IPROC) = NHENUTH IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NHONTH IPROC=IPROC+1 @@ -912,7 +913,7 @@ IF (LBU_RTH) THEN IPROC=IPROC+1 IF (HCLOUD == 'ICE4') IPROACTV(4,IPROC) = NWETHTH IPROC=IPROC+1 - IF (HCLOUD == 'ICE4'.AND. LRED) IPROACTV(4,IPROC) = NDRYHTH + IF (HCLOUD == 'ICE4'.AND. LRED .AND. CELEC == 'NONE') IPROACTV(4,IPROC) = NDRYHTH IPROC=IPROC+1 IF (HCLOUD == 'ICE4') IPROACTV(4,IPROC) = NHMLTTH IPROC=IPROC+1 @@ -920,11 +921,16 @@ IF (LBU_RTH) THEN IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NBERFITH IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(4,IPROC) = NCORRTH - IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) )) & + IF ( CELEC /= 'NONE' ) THEN IPROACTV(4,IPROC) = NCDEPITH + IPROC=IPROC+1 + END IF + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(4,IPROC) = NCORRTH IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) .AND. CELEC=='NONE') THEN + IPROACTV(4,IPROC) = NCDEPITH + IPROC=IPROC+1 + END IF IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' .OR. HCLOUD(1:3) == 'KES' .OR. & HCLOUD == 'REVE') IPROACTV(4,IPROC) = NCONDTH IPROC=IPROC+1 @@ -1062,10 +1068,16 @@ IF (LBU_RTH) THEN IPROC=IPROC+1 YWORK2(4,IPROC) = 'BERFI_' IPROC=IPROC+1 + IF ( CELEC /= 'NONE' ) THEN + YWORK2(4,IPROC) = 'CDEPI_' + IPROC=IPROC+1 + END IF YWORK2(4,IPROC) = 'CORR_' IPROC=IPROC+1 - YWORK2(4,IPROC) = 'CDEPI_' - IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) .AND. CELEC=='NONE') THEN + YWORK2(4,IPROC) = 'CDEPI_' + IPROC=IPROC+1 + END IF YWORK2(4,IPROC) = 'COND_' IPROC=IPROC+1 END IF @@ -1242,7 +1254,7 @@ IF (LBU_RRV) THEN IPROC=IPROC+1 ELSE - IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) & + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE .AND. CELEC == 'NONE' ) & IPROACTV(6,IPROC) = NADJURV IPROC=IPROC+1 IF ((HCLOUD == 'C2R2' .AND. (.NOT. LSUPSAT)) & @@ -1260,11 +1272,16 @@ IF (LBU_RRV) THEN IF (HCLOUD(1:3) == 'KES'.OR. HCLOUD == 'REVE' .OR. & HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' ) IPROACTV(6,IPROC) = NCONDRV IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(6,IPROC) = NCORRRV + IF ( CELEC /= 'NONE' ) THEN + IPROACTV(6,IPROC) = NCDEPIRV + IPROC=IPROC+1 + END IF + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(6,IPROC) = NCORRRV IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) )) & + IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) .AND. CELEC=='NONE') THEN IPROACTV(6,IPROC) = NCDEPIRV - IPROC=IPROC+1 + IPROC=IPROC+1 + END IF END IF IF ( HCLOUD /= 'NONE' .AND. CELEC == 'NONE' ) IPROACTV(6,IPROC) = NNECONRV IPROC=IPROC+1 @@ -1342,10 +1359,16 @@ ELSE YWORK2(6,IPROC) = 'REVA_' IPROC=IPROC+1 YWORK2(6,IPROC) = 'COND_' + IF ( CELEC /= 'NONE' ) THEN + IPROC=IPROC+1 + YWORK2(6,IPROC) = 'CDEPI_' + END IF IPROC=IPROC+1 YWORK2(6,IPROC) = 'CORR_' - IPROC=IPROC+1 - YWORK2(6,IPROC) = 'CDEPI_' + IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) .AND. CELEC=='NONE') THEN + IPROC=IPROC+1 + YWORK2(6,IPROC) = 'CDEPI_' + END IF END IF IPROC=IPROC+1 YWORK2(6,IPROC) = 'NECON_' @@ -1472,11 +1495,11 @@ IF (LBU_RRC) THEN IPROACTV(7,IPROC) = NHENURC IPROC=IPROC+1 ! - IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) & + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE .AND. CELEC == 'NONE' ) & IPROACTV(7,IPROC) = NADJURC IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE' .AND. LSEDIC .AND. & - LRED .AND. (.NOT. LSEDIM_AFTER)) & + LRED .AND. (.NOT. LSEDIM_AFTER) .AND. CELEC == 'NONE') & IPROACTV(7,IPROC) = NSEDIRC IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(7,IPROC) = NHONRC @@ -1490,7 +1513,7 @@ IF (LBU_RRC) THEN IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NRIMRC IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(7,IPROC) = NCMELRC + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. CELEC == 'NONE' ) IPROACTV(7,IPROC) = NCMELRC IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NWETGRC IPROC=IPROC+1 @@ -1498,13 +1521,17 @@ IF (LBU_RRC) THEN IPROC=IPROC+1 IF (HCLOUD == 'ICE4') IPROACTV(7,IPROC) = NWETHRC IPROC=IPROC+1 - IF (HCLOUD == 'ICE4' .AND. LRED) IPROACTV(7,IPROC) = NDRYHRC + IF (HCLOUD == 'ICE4' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(7,IPROC) = NDRYHRC IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(7,IPROC) = NIMLTRC IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NBERFIRC IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(7,IPROC) = NCORRRC + IF ( CELEC/='NONE' ) THEN + IPROACTV(7,IPROC) = NCDEPIRC + IPROC=IPROC+1 + END IF + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(7,IPROC) = NCORRRC IPROC=IPROC+1 IF (((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO').AND. LSEDC) .OR. & (HCLOUD(1:3) == 'ICE' .AND. LSEDIC .AND. .NOT. LRED) .OR. & @@ -1514,9 +1541,10 @@ IF (LBU_RRC) THEN IF (((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO').AND. LDEPOC) .OR. & (HCLOUD(1:3) == 'ICE' .AND. LDEPOSC)) IPROACTV(7,IPROC) = NDEPORC IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) )) & + IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) .AND. CELEC=='NONE') THEN IPROACTV(7,IPROC) = NCDEPIRC - IPROC=IPROC+1 + IPROC=IPROC+1 + END IF IF (HCLOUD == 'C2R2'.OR. HCLOUD == 'KHKO' .OR. & HCLOUD(1:3) == 'KES'.OR. HCLOUD == 'REVE') IPROACTV(7,IPROC) = NCONDRC IPROC=IPROC+1 @@ -1634,14 +1662,20 @@ END IF YWORK2(7,IPROC) = 'IMLT_' IPROC=IPROC+1 YWORK2(7,IPROC) = 'BERFI_' + IF ( CELEC/='NONE' ) THEN + IPROC=IPROC+1 + YWORK2(7,IPROC) = 'CDEPI_' + END IF IPROC=IPROC+1 YWORK2(7,IPROC) = 'CORR_' IPROC=IPROC+1 YWORK2(7,IPROC) = 'SEDI_' IPROC=IPROC+1 YWORK2(7,IPROC) = 'DEPO_' - IPROC=IPROC+1 - YWORK2(7,IPROC) = 'CDEPI_' + IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) .AND. CELEC=='NONE') THEN + IPROC=IPROC+1 + YWORK2(7,IPROC) = 'CDEPI_' + END IF IPROC=IPROC+1 YWORK2(7,IPROC) = 'COND_' END IF @@ -1742,7 +1776,7 @@ IF (LBU_RRR) THEN IF (HCLOUD(1:3) == 'KES' ) IPROACTV(8,IPROC) = NREVARR IPROC=IPROC+1 ! - IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER)) & + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER) .AND. CELEC=='NONE') & IPROACTV(8,IPROC) = NSEDIRR IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(8,IPROC) = NSFRRR @@ -1758,7 +1792,7 @@ IF (LBU_RRR) THEN IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(8,IPROC) = NACCRR IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(8,IPROC) = NCMELRR + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. CELEC=='NONE') IPROACTV(8,IPROC) = NCMELRR IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(8,IPROC) = NCFRZRR IPROC=IPROC+1 @@ -1770,11 +1804,14 @@ IF (LBU_RRR) THEN IPROC=IPROC+1 IF (HCLOUD == 'ICE4') IPROACTV(8,IPROC) = NWETHRR IPROC=IPROC+1 - IF (HCLOUD == 'ICE4' .AND. LRED) IPROACTV(8,IPROC) = NDRYHRR + IF (HCLOUD == 'ICE4' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(8,IPROC) = NDRYHRR IPROC=IPROC+1 IF (HCLOUD == 'ICE4') IPROACTV(8,IPROC) = NHMLTRR IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(8,IPROC) = NCORRRR + IF (CELEC /= 'NONE') & + IPROACTV(8,IPROC) = NSEDIRR + IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(8,IPROC) = NCORRRR IPROC=IPROC+1 IF ((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO') .AND. LRAIN) IPROACTV(8,IPROC) = NAUTORR IPROC=IPROC+1 @@ -1782,9 +1819,9 @@ IF (LBU_RRR) THEN IPROC=IPROC+1 IF ((HCLOUD == 'C2R2'.OR. HCLOUD == 'KHKO') .AND. LRAIN) IPROACTV(8,IPROC) = NREVARR IPROC=IPROC+1 - IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' .OR. & + IF ( CELEC/='NONE' .AND. ( HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' .OR. & (HCLOUD(1:3) == 'ICE' .AND. .NOT. (LRED)) .OR. & - (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) & + (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER))) & IPROACTV(8,IPROC) = NSEDIRR IPROC=IPROC+1 END IF @@ -1884,6 +1921,8 @@ ELSE IPROC=IPROC+1 YWORK2(8,IPROC) = 'HMLT_' IPROC=IPROC+1 + YWORK2(8,IPROC) = 'SEDI_' + IPROC=IPROC+1 YWORK2(8,IPROC) = 'CORR_' IPROC=IPROC+1 YWORK2(8,IPROC) = 'AUTO_' @@ -2002,11 +2041,12 @@ IF (LBU_RRI) THEN IPROACTV(9,IPROC) = NCEDSRI IPROC=IPROC+1 ELSE - IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) IPROACTV(9,IPROC) = NADJURI + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE .AND. CELEC == 'NONE' ) IPROACTV(9,IPROC) = NADJURI IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER)) & + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER).AND. CELEC == 'NONE' ) THEN IPROACTV(9,IPROC) = NSEDIRI - IPROC=IPROC+1 + IPROC=IPROC+1 + END IF IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NHENURI IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NHONRI @@ -2023,19 +2063,25 @@ IF (LBU_RRI) THEN IPROC=IPROC+1 IF( HCLOUD == 'ICE4' ) IPROACTV(9,IPROC) = NWETHRI IPROC=IPROC+1 - IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(9,IPROC) = NDRYHRI + IF( HCLOUD == 'ICE4' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(9,IPROC) = NDRYHRI IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NIMLTRI IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NBERFIRI IPROC=IPROC+1 - IF( HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(9,IPROC) = NCORRRI + IF ( CELEC /= 'NONE' ) THEN + IPROACTV(9,IPROC) = NSEDIRI + IPROC=IPROC+1 + IPROACTV(9,IPROC) = NCDEPIRI + IPROC=IPROC+1 + END IF + IF( HCLOUD(1:3) == 'ICE' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(9,IPROC) = NCORRRI IPROC=IPROC+1 IF ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. & (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) & IPROACTV(9,IPROC) = NSEDIRI IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) )) & + IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) .AND. CELEC=='NONE') & IPROACTV(9,IPROC) = NCDEPIRI IPROC=IPROC+1 END IF @@ -2112,8 +2158,10 @@ IF (LBU_RRI) THEN ELSE YWORK2(9,IPROC) = 'ADJU_' IPROC= IPROC+1 - YWORK2(9,IPROC) = 'SEDI_' - IPROC= IPROC+1 + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER).AND. CELEC == 'NONE' ) THEN + YWORK2(9,IPROC) = 'SEDI_' + IPROC= IPROC+1 + END IF YWORK2(9,IPROC) = 'HENU_' IPROC= IPROC+1 YWORK2(9,IPROC) = 'HON_' @@ -2136,6 +2184,12 @@ IF (LBU_RRI) THEN IPROC= IPROC+1 YWORK2(9,IPROC) = 'BERFI_' IPROC= IPROC+1 + IF ( CELEC /= 'NONE' ) THEN + YWORK2(9,IPROC) = 'SEDI_' + IPROC= IPROC+1 + YWORK2(9,IPROC) = 'CDEPI_' + IPROC= IPROC+1 + END IF YWORK2(9,IPROC) = 'CORR_' IPROC= IPROC+1 YWORK2(9,IPROC) = 'SEDI_' @@ -2225,7 +2279,7 @@ IF (HCLOUD=='LIMA') THEN IF (.NOT.OPTSPLIT .AND. OHAIL) IPROACTV(10,IPROC) = NWETHRS IPROC=IPROC+1 ELSE - IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER)) & + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER) .AND. CELEC=='NONE') & IPROACTV(10,IPROC) = NSEDIRS IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NDEPSRS @@ -2246,12 +2300,15 @@ IF (HCLOUD=='LIMA') THEN IPROC=IPROC+1 IF( HCLOUD == 'ICE4') IPROACTV(10,IPROC) = NWETHRS IPROC=IPROC+1 - IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(10,IPROC) = NDRYHRS + IF( HCLOUD == 'ICE4' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(10,IPROC) = NDRYHRS + IPROC=IPROC+1 + IF (CELEC/='NONE') & + IPROACTV(10,IPROC) = NSEDIRS IPROC=IPROC+1 - IF( HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(10,IPROC) = NCORRRS + IF( HCLOUD(1:3) == 'ICE' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(10,IPROC) = NCORRRS IPROC=IPROC+1 - IF ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. & - (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) & + IF (CELEC=='NONE' .AND. ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. & + (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER))) & IPROACTV(10,IPROC) = NSEDIRS IPROC=IPROC+1 END IF @@ -2330,6 +2387,8 @@ ELSE IPROC=IPROC+1 YWORK2(10,IPROC) = 'DRYH_' IPROC=IPROC+1 + YWORK2(10,IPROC) = 'SEDI_' + IPROC= IPROC+1 YWORK2(10,IPROC) = 'CORR_' IPROC=IPROC+1 YWORK2(10,IPROC) = 'SEDI_' @@ -2416,7 +2475,7 @@ IF (HCLOUD=='LIMA') THEN IF (.NOT.OPTSPLIT .AND. OHAIL) IPROACTV(11,IPROC) = NCOHGRG IPROC=IPROC+1 ELSE - IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER)) & + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER) .AND. CELEC=='NONE') & IPROACTV(11,IPROC) = NSEDIRG IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NSFRRG @@ -2433,7 +2492,7 @@ ELSE IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NWETGRG IPROC=IPROC+1 - IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(11,IPROC) = NGHCVRG + IF( HCLOUD == 'ICE4' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(11,IPROC) = NGHCVRG IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NDRYGRG IPROC=IPROC+1 @@ -2441,14 +2500,17 @@ ELSE IPROC=IPROC+1 IF( HCLOUD == 'ICE4' ) IPROACTV(11,IPROC) = NWETHRG IPROC=IPROC+1 - IF( HCLOUD == 'ICE4' .AND. LRED ) IPROACTV(11,IPROC) = NHGCVRG + IF( HCLOUD == 'ICE4' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(11,IPROC) = NHGCVRG IPROC=IPROC+1 - IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(11,IPROC) = NDRYHRG + IF( HCLOUD == 'ICE4' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(11,IPROC) = NDRYHRG IPROC=IPROC+1 - IF( HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(11,IPROC) = NCORRRG + IF (CELEC/='NONE') & + IPROACTV(11,IPROC) = NSEDIRG IPROC=IPROC+1 - IF ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. & - (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) & + IF( HCLOUD(1:3) == 'ICE' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(11,IPROC) = NCORRRG + IPROC=IPROC+1 + IF (CELEC=='NONE' .AND. ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. & + (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER))) & IPROACTV(11,IPROC) = NSEDIRG IPROC=IPROC+1 END IF @@ -2533,6 +2595,8 @@ ELSE IPROC=IPROC+1 YWORK2(11,IPROC) = 'DRYH_' IPROC=IPROC+1 + YWORK2(11,IPROC) = 'SEDI_' + IPROC=IPROC+1 YWORK2(11,IPROC) = 'CORR_' IPROC=IPROC+1 YWORK2(11,IPROC)= 'SEDI_' @@ -2619,25 +2683,28 @@ IF (LBU_RRH) THEN IPROC=IPROC+1 IF (.NOT.OPTSPLIT) IPROACTV(12,IPROC) = NHMLTRH ELSE - IF( HCLOUD == 'ICE4' .AND. LRED .AND. .NOT. LSEDIM_AFTER) & + IF( HCLOUD == 'ICE4' .AND. LRED .AND. .NOT. LSEDIM_AFTER .AND. CELEC=='NONE') & IPROACTV(12,IPROC) = NSEDIRH IPROC=IPROC+1 - IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(12,IPROC) = NGHCVRH + IF( HCLOUD == 'ICE4' .AND. LRED .AND. CELEC=='NONE') IPROACTV(12,IPROC) = NGHCVRH IPROC=IPROC+1 - IF( HCLOUD == 'ICE4' .AND. .NOT. LRED) IPROACTV(12,IPROC) = NWETGRH + IF( HCLOUD == 'ICE4' .AND. (.NOT. LRED .OR. CELEC/='NONE')) IPROACTV(12,IPROC) = NWETGRH IPROC=IPROC+1 IF( HCLOUD == 'ICE4') IPROACTV(12,IPROC) = NWETHRH IPROC=IPROC+1 - IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(12,IPROC) = NHGCVRH + IF( HCLOUD == 'ICE4' .AND. LRED .AND. CELEC=='NONE') IPROACTV(12,IPROC) = NHGCVRH IPROC=IPROC+1 - IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(12,IPROC) = NDRYHRH + IF( HCLOUD == 'ICE4' .AND. LRED .AND. CELEC=='NONE') IPROACTV(12,IPROC) = NDRYHRH IPROC=IPROC+1 IF( HCLOUD == 'ICE4' ) IPROACTV(12,IPROC) = NHMLTRH IPROC=IPROC+1 - IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(12,IPROC) = NCORRRH + IF( CELEC/='NONE' ) & + IPROACTV(12,IPROC) = NSEDIRH IPROC=IPROC+1 - IF ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. & - (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) & + IF( HCLOUD == 'ICE4' .AND. LRED .AND. CELEC == 'NONE') IPROACTV(12,IPROC) = NCORRRH + IPROC=IPROC+1 + IF (CELEC=='NONE' .AND. ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. & + (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER))) & IPROACTV(12,IPROC) = NSEDIRH END IF IPROC=IPROC+1 @@ -2693,6 +2760,8 @@ IF (LBU_RRH) THEN IPROC=IPROC+1 YWORK2(12,IPROC) = 'HMLT_' IPROC=IPROC+1 + YWORK2(12,IPROC) = 'SEDI_' + IPROC=IPROC+1 YWORK2(12,IPROC) = 'CORR_' IPROC=IPROC+1 YWORK2(12,IPROC) = 'SEDI_' @@ -3987,17 +4056,17 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN YWORK2(12+JSV,ILAST_PROC_NBR) = 'BERFI_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NBERFIQI ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR) = 'CDEPI_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NCDEPIQI - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR) = 'NIIS_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NNIISQI - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQI ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'CDEPI_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NCDEPIQI + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQI + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'NIIS_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNIISQI CASE(5) ! volumetric charge of snow ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' @@ -4027,14 +4096,14 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN YWORK2(12+JSV,ILAST_PROC_NBR) = 'DRYG_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDRYGQS ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR) = 'NIIS_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NNIISQS - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQS ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQS + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'NIIS_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNIISQS CASE(6) ! volumetric charge of graupel ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' @@ -4069,11 +4138,52 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQG - CASE(7) ! volumetric charge of hail + CASE(7) ! volumetric charge of hail (if ICE4) or ion- (if ICE3) + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV + IF ( HCLOUD == 'ICE3' ) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPS_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPSNI + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPG_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPGNI + IF (LWARM) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'REVA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NREVANI + END IF + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'CDEPI_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NCDEPINI + ELSE ! add budget for hail volumetric charge + END IF + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTNI + CASE(8) ! volumetric charge of ion- (if ICE4) ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPS_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPSNI + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPG_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPGNI + IF (LWARM) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'REVA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NREVANI + END IF + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'CDEPI_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NCDEPINI + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTNI END SELECT ! ELSE IF (JSV >= NSV_CHEMBEG .AND. JSV <= NSV_CHEMEND) THEN diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90 index 7f7d64494..bebf8dd88 100644 --- a/src/MNH/modd_budget.f90 +++ b/src/MNH/modd_budget.f90 @@ -47,6 +47,7 @@ ! P. Wautelet 30/06/2020: add NNETURSV, NNEADVSV and NNECONSV variables ! P. Wautelet 01/02/2021: add missing source: VISC ! P. Wautelet 03/02/2021: budgets: add new source if LIMA splitting: CORR2 +! P. Wautelet 15/02/2021: budgets: correct electricity budgets !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -670,6 +671,14 @@ INTEGER, SAVE :: NGMLTQG INTEGER, SAVE :: NSEDIQG INTEGER, SAVE :: NNEUTQG ! +! Allowed processes for the budget of electric charge carried by negative ions +INTEGER, SAVE :: NDEPSNI +INTEGER, SAVE :: NDEPGNI +INTEGER, SAVE :: NREVANI +INTEGER, SAVE :: NCDEPINI +INTEGER, SAVE :: NNEUTNI +#endif +! ! must add processes for electric charge carried by hail ! ! -- GitLab