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