From e1652efba4db6091ac60233787c7e8c342977c18 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Tue, 16 Feb 2021 15:04:46 +0100 Subject: [PATCH] Philippe 16/02/2021: budgets: add terms for hail budget in electricity + add missing terms (cherry picked from commit 5ac1a43183da663826e36b2093709a10618af5c2) --- src/MNH/ini_budget.f90 | 68 ++++++++++++++++++++++-- src/MNH/modd_budget.f90 | 105 ++++++++++++++++++++++---------------- src/MNH/modn_budget.f90 | 34 ++++++------ src/MNH/rain_ice_elec.f90 | 77 +++++++++++++++++++++++----- 4 files changed, 207 insertions(+), 77 deletions(-) diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90 index 8eaf500f3..27cb901e7 100644 --- a/src/MNH/ini_budget.f90 +++ b/src/MNH/ini_budget.f90 @@ -3960,6 +3960,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN 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)= 'HON_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NHONQC IF (LWARM) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTO_' @@ -3978,6 +3981,14 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN YWORK2(12+JSV,ILAST_PROC_NBR) = 'DRYG_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDRYGQC ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'INCG_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NINCGQC + IF ( KRR >= 7 ) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'WETH_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NWETHQC + END IF + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'IMLT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NIMLTQC ILAST_PROC_NBR = ILAST_PROC_NBR + 1 @@ -3998,6 +4009,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN 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)= 'SFR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NSFRQR IF (LWARM) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTO_' @@ -4024,6 +4038,14 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'GMLT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NGMLTQR + IF ( KRR >= 7 ) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'WETH_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NWETHQR + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'HMLT_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NHMLTQR + END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQR @@ -4035,6 +4057,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN 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)= 'HON_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NHONQI + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'AGGS_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NAGGSQI ILAST_PROC_NBR = ILAST_PROC_NBR + 1 @@ -4049,6 +4074,11 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'DRYG_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDRYGQI + IF ( KRR >= 7 ) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'WETH_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NWETHQI + END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'IMLT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NIMLTQI @@ -4095,6 +4125,11 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'DRYG_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDRYGQS + IF ( KRR >= 7 ) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'WETH_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NWETHQS + END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQS @@ -4109,6 +4144,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN 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)= 'SFR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NSFRQG + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPG_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPGQG ILAST_PROC_NBR = ILAST_PROC_NBR + 1 @@ -4130,8 +4168,16 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN YWORK2(12+JSV,ILAST_PROC_NBR) = 'DRYG_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDRYGQG ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'INCG_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NINCGQG + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'GMLT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NGMLTQG + IF ( KRR >= 7 ) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'WETH_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NWETHQG + END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQG @@ -4157,12 +4203,26 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN 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 ELSE -! add budget for hail volumetric charge + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'WETG_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NWETGQH + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'WETH_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NWETHQH + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'HMLT_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NHMLTQH + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQH + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQH 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_' diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90 index bebf8dd88..d1b16cbc7 100644 --- a/src/MNH/modd_budget.f90 +++ b/src/MNH/modd_budget.f90 @@ -189,17 +189,17 @@ INTEGER, SAVE :: NADVU ! advection INTEGER, SAVE :: NFRCU ! forcing INTEGER, SAVE :: NNUDU ! nudging INTEGER, SAVE :: NCURVU ! curvature -INTEGER, SAVE :: NCORU ! Coriolis terms +INTEGER, SAVE :: NCORU ! Coriolis terms INTEGER, SAVE :: NDIFU ! numerical diffusion INTEGER, SAVE :: NRELU ! relaxation INTEGER, SAVE :: NHTURBU ! horizontal TURBulence -INTEGER, SAVE :: NVTURBU ! vertical turbulence -INTEGER, SAVE :: NDRAGU ! vegetation drag -INTEGER, SAVE :: NMAFLU ! mass flux +INTEGER, SAVE :: NVTURBU ! vertical turbulence +INTEGER, SAVE :: NDRAGU ! vegetation drag +INTEGER, SAVE :: NMAFLU ! mass flux INTEGER, SAVE :: NPRESU ! pressure term -! +! ! Allowed processes for the budget of RV (wind component along y) -! +! ! Courant namelist: NAM_BURV ! LOGICAL, SAVE :: LBU_RV ! True when the budget of RV is performed @@ -211,21 +211,21 @@ INTEGER, SAVE :: NADVV ! advection INTEGER, SAVE :: NFRCV ! forcing INTEGER, SAVE :: NNUDV ! nudging INTEGER, SAVE :: NCURVV ! curvature -INTEGER, SAVE :: NCORV ! Coriolis terms +INTEGER, SAVE :: NCORV ! Coriolis terms INTEGER, SAVE :: NDIFV ! numerical diffusion INTEGER, SAVE :: NRELV ! relaxation INTEGER, SAVE :: NHTURBV ! horizontal turbulence -INTEGER, SAVE :: NVTURBV ! vertical turbulence -INTEGER, SAVE :: NDRAGV ! vegetation drag -INTEGER, SAVE :: NMAFLV ! mass flux +INTEGER, SAVE :: NVTURBV ! vertical turbulence +INTEGER, SAVE :: NDRAGV ! vegetation drag +INTEGER, SAVE :: NMAFLV ! mass flux INTEGER, SAVE :: NPRESV ! pressure term ! ! Allowed processes for the budget of RW (wind vertical component) -! +! ! Courant namelist: NAM_BURW ! -LOGICAL, SAVE :: LBU_RW ! True when the budget of RW is performed -! +LOGICAL, SAVE :: LBU_RW ! True when the budget of RW is performed +! INTEGER, SAVE :: NASSEW ! time filter INTEGER, SAVE :: NNESTW ! Efffect of 2way nesting on W INTEGER, SAVE :: NVISCW ! viscosity @@ -233,16 +233,16 @@ INTEGER, SAVE :: NADVW ! advection INTEGER, SAVE :: NFRCW ! forcing INTEGER, SAVE :: NNUDW ! nudging INTEGER, SAVE :: NCURVW ! curvature -INTEGER, SAVE :: NCORW ! Coriolis terms +INTEGER, SAVE :: NCORW ! Coriolis terms INTEGER, SAVE :: NGRAVW ! gravity term INTEGER, SAVE :: NDIFW ! numerical diffusion INTEGER, SAVE :: NRELW ! relaxation -INTEGER, SAVE :: NHTURBW ! horizontal turbulence -INTEGER, SAVE :: NVTURBW ! vertical turbulence +INTEGER, SAVE :: NHTURBW ! horizontal turbulence +INTEGER, SAVE :: NVTURBW ! vertical turbulence INTEGER, SAVE :: NPRESW ! pressure term ! ! Allowed processes for the budget of RTH (potential temperature) -! +! ! Courant namelist: NAM_BURTH ! LOGICAL, SAVE :: LBU_RTH ! True when the budget of RTH is performed @@ -261,7 +261,7 @@ INTEGER, SAVE :: NDIFTH ! numerical diffusion INTEGER, SAVE :: NRELTH ! relaxation INTEGER, SAVE :: NRADTH ! RADiation INTEGER, SAVE :: NDCONVTH ! KAFR CONVection -INTEGER, SAVE :: NMAFLTH ! Mass flux +INTEGER, SAVE :: NMAFLTH ! Mass flux INTEGER, SAVE :: NHTURBTH ! horizontal turbulence INTEGER, SAVE :: NVTURBTH ! vertical turbulence INTEGER, SAVE :: NDISSHTH ! dissipative heating @@ -299,7 +299,7 @@ INTEGER, SAVE :: NCEDSTH ! adjustment INTEGER, SAVE :: NSEDITH ! Temperature transport by hydrometeors sedimentation ! ! Allowed processes for the budget of RTKE (kinetic energy) -! +! ! Courant namelist: NAM_BURTKE ! LOGICAL, SAVE :: LBU_RTKE ! True when the budget of RTKE is performed @@ -311,13 +311,13 @@ INTEGER, SAVE :: NDIFTKE ! numerical diffusion INTEGER, SAVE :: NRELTKE ! relaxation INTEGER, SAVE :: NDPTKE ! dynamic production of TKE INTEGER, SAVE :: NTPTKE ! thermal production of TKE -INTEGER, SAVE :: NDRAGTKE ! vegetation drag +INTEGER, SAVE :: NDRAGTKE ! vegetation drag INTEGER, SAVE :: NDISSTKE ! dissipation of TKE INTEGER, SAVE :: NTRTKE ! turbulent transport of TKE ! ! ! Allowed processes for the budget of moist variable RRV (water vapor) -! +! ! Courant namelist: NAM_BURRV ! LOGICAL, SAVE :: LBU_RRV ! true when the budget of RRV is performed @@ -333,13 +333,13 @@ INTEGER, SAVE :: NNUDRV ! nudging INTEGER, SAVE :: NDIFRV ! numerical diffusion INTEGER, SAVE :: NRELRV ! relaxation INTEGER, SAVE :: NDCONVRV ! KAFR CONVection -INTEGER, SAVE :: NMAFLRV ! Mass flux -INTEGER, SAVE :: NHTURBRV ! horizontal turbulence +INTEGER, SAVE :: NMAFLRV ! Mass flux +INTEGER, SAVE :: NHTURBRV ! horizontal turbulence INTEGER, SAVE :: NVTURBRV ! vertical turbulence -INTEGER, SAVE :: NNEGARV ! negative correction -INTEGER, SAVE :: NNETURRV ! negative correction -INTEGER, SAVE :: NNECONRV ! negative correction -INTEGER, SAVE :: NNEADVRV ! negative correction +INTEGER, SAVE :: NNEGARV ! negative correction +INTEGER, SAVE :: NNETURRV ! negative correction +INTEGER, SAVE :: NNECONRV ! negative correction +INTEGER, SAVE :: NNEADVRV ! negative correction INTEGER, SAVE :: NREVARV ! rain evaporation INTEGER, SAVE :: NCONDRV ! evaporation/condensation INTEGER, SAVE :: NHENURV ! HEterogenous NUcleation ICE3 @@ -350,11 +350,11 @@ INTEGER, SAVE :: NADJURV ! adjustement before rain_ice ICE3 INTEGER, SAVE :: NCORRRV ! tendencies correction after ICE3 INTEGER, SAVE :: NHINDRV ! Heterogeneous Nucleation by Deposition LIMA INTEGER, SAVE :: NHONHRV ! Haze Homogeneous Nucleation LIMA -INTEGER, SAVE :: NCEDSRV ! adjustement +INTEGER, SAVE :: NCEDSRV ! adjustement INTEGER, SAVE :: NCORR2RV ! Correction in LIMA splitting ! ! Allowed processes for the budget of moist variable RRC (cloud water) -! +! ! Courant namelist: NAM_BURRC ! LOGICAL, SAVE :: LBU_RRC ! True when the budget of RRC is performed @@ -367,12 +367,12 @@ INTEGER, SAVE :: NFRCRC ! forcing INTEGER, SAVE :: NDIFRC ! numerical diffusion INTEGER, SAVE :: NRELRC ! relaxation INTEGER, SAVE :: NDCONVRC ! Deep CONVection -INTEGER, SAVE :: NHTURBRC ! horizontal turbulence +INTEGER, SAVE :: NHTURBRC ! horizontal turbulence INTEGER, SAVE :: NVTURBRC ! vertical turbulence -INTEGER, SAVE :: NNEGARC ! negative correction -INTEGER, SAVE :: NNETURRC ! negative correction -INTEGER, SAVE :: NNECONRC ! negative correction -INTEGER, SAVE :: NNEADVRC ! negative correction +INTEGER, SAVE :: NNEGARC ! negative correction +INTEGER, SAVE :: NNETURRC ! negative correction +INTEGER, SAVE :: NNECONRC ! negative correction +INTEGER, SAVE :: NNEADVRC ! negative correction INTEGER, SAVE :: NACCRRC ! accretion INTEGER, SAVE :: NAUTORC ! autoconversion INTEGER, SAVE :: NCONDRC ! evaporation/condensation @@ -386,7 +386,7 @@ INTEGER, SAVE :: NBERFIRC ! BERgeron-FIndeisen gth. ICE3 INTEGER, SAVE :: NCDEPIRC ! Cond./DEPosition on ice ICE3 INTEGER, SAVE :: NHENURC ! CCN Activation C2R2 INTEGER, SAVE :: NSEDIRC ! sedimentation C2R2 -INTEGER, SAVE :: NDEPORC ! ground deposition +INTEGER, SAVE :: NDEPORC ! ground deposition INTEGER, SAVE :: NDEPOTRRC ! deposition on tree INTEGER, SAVE :: NWETHRC ! wet growth of hail INTEGER, SAVE :: NDRYHRC ! dry growth of hail ICE4 @@ -413,7 +413,7 @@ INTEGER, SAVE :: NADVRR ! Total advection for PPM INTEGER, SAVE :: NFRCRR ! forcing INTEGER, SAVE :: NDIFRR ! numerical diffusion INTEGER, SAVE :: NRELRR ! relaxation -INTEGER, SAVE :: NNEGARR ! negative correction +INTEGER, SAVE :: NNEGARR ! negative correction INTEGER, SAVE :: NNETURRR ! negative correction INTEGER, SAVE :: NNEADVRR ! negative correction INTEGER, SAVE :: NNECONRR ! negative correction @@ -453,7 +453,7 @@ INTEGER, SAVE :: NRELRI ! relaxation INTEGER, SAVE :: NDCONVRI ! Deep CONVection INTEGER, SAVE :: NHTURBRI ! horizontal turbulence INTEGER, SAVE :: NVTURBRI ! vertical turbulence -INTEGER, SAVE :: NNEGARI ! negative correction +INTEGER, SAVE :: NNEGARI ! negative correction INTEGER, SAVE :: NNETURRI ! negative correction INTEGER, SAVE :: NNEADVRI ! negative correction INTEGER, SAVE :: NNECONRI ! negative correction @@ -496,7 +496,7 @@ INTEGER, SAVE :: NADVRS ! Total advection for PPM INTEGER, SAVE :: NFRCRS ! forcing INTEGER, SAVE :: NDIFRS ! numerical diffusion INTEGER, SAVE :: NRELRS ! relaxation -INTEGER, SAVE :: NNEGARS ! negative correction +INTEGER, SAVE :: NNEGARS ! negative correction INTEGER, SAVE :: NNETURRS ! negative correction INTEGER, SAVE :: NNEADVRS ! negative correction INTEGER, SAVE :: NNECONRS ! negative correction @@ -529,7 +529,7 @@ INTEGER, SAVE :: NADVRG ! Total advection for PPM INTEGER, SAVE :: NFRCRG ! forcing INTEGER, SAVE :: NDIFRG ! numerical diffusion INTEGER, SAVE :: NRELRG ! relaxation -INTEGER, SAVE :: NNEGARG ! negative correction +INTEGER, SAVE :: NNEGARG ! negative correction INTEGER, SAVE :: NNETURRG ! negative correction INTEGER, SAVE :: NNEADVRG ! negative correction INTEGER, SAVE :: NNECONRG ! negative correction @@ -565,7 +565,7 @@ INTEGER, SAVE :: NADVRH ! Total advection for PPM INTEGER, SAVE :: NFRCRH ! forcing INTEGER, SAVE :: NDIFRH ! numerical diffusion INTEGER, SAVE :: NRELRH ! relaxation -INTEGER, SAVE :: NNEGARH ! negative correction +INTEGER, SAVE :: NNEGARH ! negative correction INTEGER, SAVE :: NNETURRH ! negative correction INTEGER, SAVE :: NNEADVRH ! negative correction INTEGER, SAVE :: NNECONRH ! negative correction @@ -574,7 +574,7 @@ INTEGER, SAVE :: NWETGRH ! wet growth of graupel INTEGER, SAVE :: NWETHRH ! wet growth of hail INTEGER, SAVE :: NCOHGRH ! reconversion from hail to graupel LIMA INTEGER, SAVE :: NDRYHRH ! dry growth of hail ICE4 -INTEGER, SAVE :: NHMLTRH ! melting +INTEGER, SAVE :: NHMLTRH ! melting INTEGER, SAVE :: NCORRRH ! tendencies correction after ICE3 INTEGER, SAVE :: NHGCVRH ! Hail to Graupel ConVersion ICE4 INTEGER, SAVE :: NGHCVRH ! Graupel to Hail ConVersion ICE4 @@ -591,8 +591,8 @@ INTEGER, SAVE :: NFRCSV ! forcing INTEGER, SAVE :: NDIFSV ! numerical diffusion INTEGER, SAVE :: NRELSV ! relaxation INTEGER, SAVE :: NDCONVSV ! Deep CONVection -INTEGER, SAVE :: NMAFLSV ! mass flux -INTEGER, SAVE :: NDEPOTRSV ! deposition on tree +INTEGER, SAVE :: NMAFLSV ! mass flux +INTEGER, SAVE :: NDEPOTRSV ! deposition on tree INTEGER, SAVE :: NHTURBSV ! horizontal turbulence INTEGER, SAVE :: NVTURBSV ! vertical turbulence INTEGER, SAVE :: NCHEMSV ! chemistry activity @@ -610,11 +610,14 @@ INTEGER, SAVE :: NCDEPIQV INTEGER, SAVE :: NNEUTQV ! ! Allowed processes for the budget of electric charge carried by cloud droplets +INTEGER, SAVE :: NHONQC INTEGER, SAVE :: NAUTOQC INTEGER, SAVE :: NACCRQC INTEGER, SAVE :: NRIMQC INTEGER, SAVE :: NWETGQC INTEGER, SAVE :: NDRYGQC +INTEGER, SAVE :: NINCGQC +INTEGER, SAVE :: NWETHQC INTEGER, SAVE :: NIMLTQC INTEGER, SAVE :: NBERFIQC INTEGER, SAVE :: NCDEPIQC @@ -622,6 +625,7 @@ INTEGER, SAVE :: NSEDIQC INTEGER, SAVE :: NNEUTQC ! ! Allowed processes for the budget of electric charge carried by rain drops +INTEGER, SAVE :: NSFRQR INTEGER, SAVE :: NAUTOQR INTEGER, SAVE :: NACCRQR INTEGER, SAVE :: NREVAQR @@ -629,16 +633,20 @@ INTEGER, SAVE :: NACCQR INTEGER, SAVE :: NCFRZQR INTEGER, SAVE :: NWETGQR INTEGER, SAVE :: NDRYGQR +INTEGER, SAVE :: NWETHQR +INTEGER, SAVE :: NHMLTQR INTEGER, SAVE :: NGMLTQR INTEGER, SAVE :: NSEDIQR INTEGER, SAVE :: NNEUTQR ! ! Allowed processes for the budget of electric charge carried by ice crystals +INTEGER, SAVE :: NHONQI INTEGER, SAVE :: NAGGSQI INTEGER, SAVE :: NAUTSQI INTEGER, SAVE :: NCFRZQI INTEGER, SAVE :: NWETGQI INTEGER, SAVE :: NDRYGQI +INTEGER, SAVE :: NWETHQI INTEGER, SAVE :: NIMLTQI INTEGER, SAVE :: NBERFIQI INTEGER, SAVE :: NCDEPIQI @@ -655,11 +663,13 @@ INTEGER, SAVE :: NACCQS INTEGER, SAVE :: NCMELQS INTEGER, SAVE :: NWETGQS INTEGER, SAVE :: NDRYGQS +INTEGER, SAVE :: NWETHQS INTEGER, SAVE :: NNIISQS ! non-inductive I-S INTEGER, SAVE :: NSEDIQS INTEGER, SAVE :: NNEUTQS ! ! Allowed processes for the budget of electric charge carried by graupel +INTEGER, SAVE :: NSFRQG INTEGER, SAVE :: NDEPGQG INTEGER, SAVE :: NRIMQG INTEGER, SAVE :: NACCQG @@ -667,10 +677,19 @@ INTEGER, SAVE :: NCMELQG INTEGER, SAVE :: NCFRZQG INTEGER, SAVE :: NWETGQG INTEGER, SAVE :: NDRYGQG +INTEGER, SAVE :: NINCGQG +INTEGER, SAVE :: NWETHQG INTEGER, SAVE :: NGMLTQG INTEGER, SAVE :: NSEDIQG INTEGER, SAVE :: NNEUTQG ! +! Allowed processes for the budget of electric charge carried by hail +INTEGER, SAVE :: NSEDIQH +INTEGER, SAVE :: NWETGQH +INTEGER, SAVE :: NWETHQH +INTEGER, SAVE :: NHMLTQH +INTEGER, SAVE :: NNEUTQH +! ! Allowed processes for the budget of electric charge carried by negative ions INTEGER, SAVE :: NDEPSNI INTEGER, SAVE :: NDEPGNI diff --git a/src/MNH/modn_budget.f90 b/src/MNH/modn_budget.f90 index 79fc64032..68d609d54 100644 --- a/src/MNH/modn_budget.f90 +++ b/src/MNH/modn_budget.f90 @@ -274,7 +274,7 @@ NAMELIST/NAM_BU_RRC/LBU_RRC, NASSERC, NNESTRC, NVISCRC, NADVRC, NFRCRC, & NNEADVRC,NNECONRC, NDRYHRC, NADJURC, NCORRRC, NCMELRC, & NHINCRC, NHONCRC, NCEDSRC, NREVARC, NDEPORC,NDEPOTRRC, & NCORRRC, NR2C1RC, NCVRCRC, NCORR2RC -! +! NAMELIST/NAM_BU_RRR/LBU_RRR, NASSERR, NNESTRR, NVISCRR, NADVRR, NFRCRR, & NDIFRR, NRELRR, NNEGARR, NACCRRR, NAUTORR, NREVARR, NSEDIRR, & NSFRRR, NACCRR, NCFRZRR, NWETGRR, NDRYGRR, NGMLTRR, NWETHRR, & @@ -306,22 +306,22 @@ NAMELIST/NAM_BU_RRH/LBU_RRH, NASSERH, NNESTRH, NVISCRH, NADVRH, NFRCRH, & NCORRRH, NHGCVRH, NGHCVRH, NCOHGRH, NHMLTRH, & NNETURRH, NNEADVRH, NNECONRH ! -NAMELIST/NAM_BU_RSV/ LBU_RSV, NASSESV, NNESTSV, NVISCSV, NADVSV, NFRCSV, & - NDIFSV, NRELSV, NDCONVSV, NVTURBSV, NHTURBSV, NCHEMSV, NMAFLSV, & - NNEGASV, NNETURSV, NNEADVSV, NNECONSV, & - NDEPSQV, NDEPGQV, NREVAQV, NCDEPIQV, NNEUTQV, & - NAUTOQC, NACCRQC, NRIMQC, NWETGQC, NDRYGQC, NIMLTQC, NBERFIQC, & - NCDEPIQC, NSEDIQC, NNEUTQC, & - NAUTOQR, NACCRQR, NREVAQR, NACCQR, NCFRZQR, NWETGQR, NDRYGQR, & - NGMLTQR, NSEDIQR, NNEUTQR, & - NAGGSQI, NAUTSQI, NCFRZQI, NWETGQI, NDRYGQI, NIMLTQI, NBERFIQI, & - NCDEPIQI, NNIISQI, NSEDIQI, NNEUTQI, & - NDEPSQS, NAGGSQS, NAUTSQS, NRIMQS, NACCQS, NCMELQS, NWETGQS, & - NDRYGQS, NNIISQS, NSEDIQS, NNEUTQS, & - NDEPGQG, NRIMQG, NACCQG, NCMELQG, NCFRZQG, NWETGQG, NDRYGQG, & - NGMLTQG, NSEDIQG, NNEUTQG, & - NDEPSNI, NDEPGNI, NREVANI, NCDEPINI, NNEUTNI, & +NAMELIST/NAM_BU_RSV/ LBU_RSV, NASSESV, NNESTSV, NVISCSV, NADVSV, NFRCSV, & + NDIFSV, NRELSV, NDCONVSV, NVTURBSV, NHTURBSV, NCHEMSV, NMAFLSV, & + NNEGASV, NNETURSV, NNEADVSV, NNECONSV, & + NDEPSQV, NDEPGQV, NREVAQV, NCDEPIQV, NNEUTQV, & + NHONQC, NAUTOQC, NACCRQC, NRIMQC, NWETGQC, NDRYGQC, NINCGQC, & + NWETHQC, NIMLTQC, NBERFIQC, NCDEPIQC, NSEDIQC, NNEUTQC, & + NSFRQR, NAUTOQR, NACCRQR, NREVAQR, NACCQR, NCFRZQR, NWETGQR, & + NDRYGQR, NWETHQR, NHMLTQR, NGMLTQR, NSEDIQR, NNEUTQR, & + NHONQI, NAGGSQI, NAUTSQI, NCFRZQI, NWETGQI, NDRYGQI, NWETHQI, & + NIMLTQI, NBERFIQI, NCDEPIQI, NNIISQI, NSEDIQI, NNEUTQI, & + NDEPSQS, NAGGSQS, NAUTSQS, NRIMQS, NACCQS, NCMELQS, NWETGQS, & + NDRYGQS, NWETHQS, NNIISQS, NSEDIQS, NNEUTQS, & + NSFRQG, NDEPGQG, NRIMQG, NACCQG, NCMELQG, NCFRZQG, NWETGQG, & + NDRYGQG, NINCGQG, NWETHQG, NGMLTQG, NSEDIQG, NNEUTQG, & + NSEDIQH, NWETGQH, NWETHQH, NHMLTQH, NNEUTQH, & + NDEPSNI, NDEPGNI, NREVANI, NCDEPINI, NNEUTNI, & NDEPOTRSV -! must add budget for hail ! END MODULE MODN_BUDGET diff --git a/src/MNH/rain_ice_elec.f90 b/src/MNH/rain_ice_elec.f90 index f6aa9f30b..824a3122e 100644 --- a/src/MNH/rain_ice_elec.f90 +++ b/src/MNH/rain_ice_elec.f90 @@ -225,7 +225,8 @@ END MODULE MODI_RAIN_ICE_ELEC !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! J.Escobar : 10/2017 : for real*4 , limit exp() in RAIN_ICE_ELEC_SLOW with XMNH_HUGE_12_LOG !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! +! P .Wautelet 16/02/2021: add missing budgets for electricity +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -1189,6 +1190,10 @@ ELSE ! IF (LBUDGET_SV) THEN ! rain_ice_slow + CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'HON_BU_RSV') + CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+3,'HON_BU_RSV') + CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'SFR_BU_RSV') + CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+5,'SFR_BU_RSV') CALL BUDGET (PQPIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG, 'DEPS_BU_RSV') CALL BUDGET (PQNIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND, 'DEPS_BU_RSV') CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'DEPS_BU_RSV') @@ -1214,29 +1219,45 @@ ELSE ! rain_ice_fast_rs CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'RIM_BU_RSV') CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'RIM_BU_RSV') - CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND, 'RIM_BU_RSV') + CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+5,'RIM_BU_RSV') CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'ACC_BU_RSV') CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'ACC_BU_RSV') - CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND, 'ACC_BU_RSV') + CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+5,'ACC_BU_RSV') CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'CMEL_BU_RSV') - CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND, 'CMEL_BU_RSV') + CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+5,'CMEL_BU_RSV') ! ! rain_ice_fast_rg CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'CFRZ_BU_RSV') CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+3,'CFRZ_BU_RSV') - CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND, 'CFRZ_BU_RSV') + CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+5,'CFRZ_BU_RSV') CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'WETG_BU_RSV') CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'WETG_BU_RSV') CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+3,'WETG_BU_RSV') CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'WETG_BU_RSV') - CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND, 'WETG_BU_RSV') + CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+5,'WETG_BU_RSV') + IF ( KRR == 7 ) & + CALL BUDGET (PQHS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+6,'WETG_BU_RSV') CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'DRYG_BU_RSV') CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'DRYG_BU_RSV') CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+3,'DRYG_BU_RSV') CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'DRYG_BU_RSV') - CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND, 'DRYG_BU_RSV') + CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+5,'DRYG_BU_RSV') + CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'INCG_BU_RSV') + CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+5,'INCG_BU_RSV') CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'GMLT_BU_RSV') - CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND, 'GMLT_BU_RSV') + CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+5,'GMLT_BU_RSV') +! +! rain_ice_fast_rh + IF(KRR==7) THEN + CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'WETH_BU_RSV') + CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'WETH_BU_RSV') + CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+3,'WETH_BU_RSV') + CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'WETH_BU_RSV') + CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+5,'WETH_BU_RSV') + CALL BUDGET (PQHS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+6,'WETH_BU_RSV') + CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'HMLT_BU_RSV') + CALL BUDGET (PQHS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+6,'HMLT_BU_RSV') + ENDIF ! ! rain_ice_fast_ri CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'IMLT_BU_RSV') @@ -1986,6 +2007,8 @@ REAL :: ZVR, ZVI, ZVS, ZVG, ZETA0, ZK, ZRE0 CALL BUDGET (PQIS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+3,'SEDI_BU_RSV') CALL BUDGET (PQSS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+4,'SEDI_BU_RSV') CALL BUDGET (PQGS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+5,'SEDI_BU_RSV') + IF ( KRR == 7 ) & + CALL BUDGET (PQHS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+6,'SEDI_BU_RSV') END IF ! END SUBROUTINE RAIN_ICE_ELEC_SEDIMENTATION_SPLIT @@ -2374,7 +2397,16 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZCONC3D ! IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'SEDI_BU_RRG') IF (KRR == 7 .AND. LBUDGET_RH) & CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'SEDI_BU_RRH') - +! + IF (LBUDGET_SV) THEN + IF (OSEDIC) CALL BUDGET (PQCS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+1,'SEDI_BU_RSV') + CALL BUDGET (PQRS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+2,'SEDI_BU_RSV') + CALL BUDGET (PQIS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+3,'SEDI_BU_RSV') + CALL BUDGET (PQSS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+4,'SEDI_BU_RSV') + CALL BUDGET (PQGS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+5,'SEDI_BU_RSV') + IF ( KRR == 7 ) & + CALL BUDGET (PQHS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+6,'SEDI_BU_RSV') + END IF ! END SUBROUTINE RAIN_ICE_SEDIMENTATION_STAT ! @@ -3770,6 +3802,9 @@ IMPLICIT NONE 12+NSV_ELECBEG+4,'WETG_BU_RSV') CALL BUDGET (UNPACK(ZQGS(:), MASK=GMICRO(:,:,:), FIELD=PQGS)*PRHODJ(:,:,:), & 12+NSV_ELECBEG+5,'WETG_BU_RSV') + IF ( KRR == 7 ) & + CALL BUDGET (UNPACK(ZQHS(:), MASK=GMICRO(:,:,:), FIELD=PQHS)*PRHODJ(:,:,:), & + 12+NSV_ELECBEG+6,'WETG_BU_RSV') END IF ! WHERE (ZRGT(:) > XRTMIN(6) .AND. ZZT(:) < XTT .AND. & ! Dry @@ -3809,8 +3844,6 @@ IMPLICIT NONE UNPACK(ZRGS(:),MASK=GMICRO(:,:,:),FIELD=PRGS)*PRHODJ(:,:,:), & 11,'DRYG_BU_RRG') IF (LBUDGET_SV) THEN - CALL BUDGET (UNPACK(ZQPIS(:), MASK=GMICRO(:,:,:), FIELD=PQPIS) & - *PRHODJ(:,:,:), 12+NSV_ELECBEG ,'DEPS_BU_RSV') CALL BUDGET (UNPACK(ZQCS(:), MASK=GMICRO(:,:,:), FIELD=PQCS)*PRHODJ(:,:,:), & 12+NSV_ELECBEG+1,'DRYG_BU_RSV') CALL BUDGET (UNPACK(ZQRS(:), MASK=GMICRO(:,:,:), FIELD=PQRS)*PRHODJ(:,:,:), & @@ -3821,8 +3854,6 @@ IMPLICIT NONE 12+NSV_ELECBEG+4,'DRYG_BU_RSV') CALL BUDGET (UNPACK(ZQGS(:), MASK=GMICRO(:,:,:), FIELD=PQGS)*PRHODJ(:,:,:), & 12+NSV_ELECBEG+5,'DRYG_BU_RSV') - CALL BUDGET (UNPACK(ZQNIS(:), MASK=GMICRO(:,:,:), FIELD=PQNIS) & - *PRHODJ(:,:,:), 12+NSV_ELECEND ,'DEPS_BU_RSV') END IF ! ! @@ -4140,6 +4171,20 @@ IMPLICIT NONE IF (LBUDGET_RH) CALL BUDGET ( & UNPACK(ZRHS(:),MASK=GMICRO(:,:,:),FIELD=PRHS)*PRHODJ(:,:,:), & 12,'WETH_BU_RRH') + IF (LBUDGET_SV) THEN + CALL BUDGET (UNPACK(ZQCS(:), MASK=GMICRO(:,:,:), FIELD=PQCS)*PRHODJ(:,:,:), & + 12+NSV_ELECBEG+1,'WETH_BU_RSV') + CALL BUDGET (UNPACK(ZQRS(:), MASK=GMICRO(:,:,:), FIELD=PQRS)*PRHODJ(:,:,:), & + 12+NSV_ELECBEG+2,'WETH_BU_RSV') + CALL BUDGET (UNPACK(ZQIS(:), MASK=GMICRO(:,:,:), FIELD=PQIS)*PRHODJ(:,:,:), & + 12+NSV_ELECBEG+3,'WETH_BU_RSV') + CALL BUDGET (UNPACK(ZQSS(:), MASK=GMICRO(:,:,:), FIELD=PQSS)*PRHODJ(:,:,:), & + 12+NSV_ELECBEG+4,'WETH_BU_RSV') + CALL BUDGET (UNPACK(ZQGS(:), MASK=GMICRO(:,:,:), FIELD=PQGS)*PRHODJ(:,:,:), & + 12+NSV_ELECBEG+5,'WETH_BU_RSV') + CALL BUDGET (UNPACK(ZQHS(:), MASK=GMICRO(:,:,:), FIELD=PQHS)*PRHODJ(:,:,:), & + 12+NSV_ELECBEG+6,'WETH_BU_RSV') + END IF ! IF (IHAIL > 0) THEN ! @@ -4187,6 +4232,12 @@ IMPLICIT NONE IF (LBUDGET_RH) CALL BUDGET ( & UNPACK(ZRHS(:),MASK=GMICRO(:,:,:),FIELD=PRHS)*PRHODJ(:,:,:), & 12,'HMLT_BU_RRH') + IF (LBUDGET_SV) THEN + CALL BUDGET (UNPACK(ZQRS(:), MASK=GMICRO(:,:,:), FIELD=PQRS)*PRHODJ(:,:,:), & + 12+NSV_ELECBEG+2,'HMLT_BU_RSV') + CALL BUDGET (UNPACK(ZQHS(:), MASK=GMICRO(:,:,:), FIELD=PQHS)*PRHODJ(:,:,:), & + 12+NSV_ELECBEG+6,'HMLT_BU_RSV') + END IF ! END SUBROUTINE RAIN_ICE_ELEC_FAST_RH ! -- GitLab