From dce38acf08df9a998eb9199f803b8d954bf202a0 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Mon, 9 Mar 2020 17:09:58 +0100 Subject: [PATCH] Philippe 09/03/2020: budgets: add missing budgets for electricity --- src/MNH/ini_budget.f90 | 119 ++++++++++++++++++++++++++++++++++++++ src/MNH/modd_budget.f90 | 36 ++++++++++-- src/MNH/modn_budget.f90 | 32 +++++----- src/MNH/rain_ice_elec.f90 | 54 +++++++++++++++++ 4 files changed, 221 insertions(+), 20 deletions(-) diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90 index 3cebf2ed4..c226c7121 100644 --- a/src/MNH/ini_budget.f90 +++ b/src/MNH/ini_budget.f90 @@ -105,6 +105,7 @@ contains ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg ! P. Wautelet 15/11/2019: remove unused CBURECORD variable ! P. Wautelet 02-03/2020: use the new data structures and subroutines for budgets +! P .Wautelet 09/03/2020: add missing budgets for electricity !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -3105,6 +3106,11 @@ SV_BUDGETS: do jsv = 1, ksv case ( 2 ) SV_ELEC ! volumetric charge of cloud droplets + gcond = .true. + tzsource%cmnhname = 'HON' + tzsource%clongname = 'homogeneous nucleation' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nhonqc ) + gcond = lwarm_ice tzsource%cmnhname = 'AUTO' tzsource%clongname = 'autoconversion into rain' @@ -3130,6 +3136,16 @@ SV_BUDGETS: do jsv = 1, ksv tzsource%clongname = 'dry growth of graupel' call Budget_source_add( tbudgets(ibudget), tzsource, gcond, ndrygqc ) + gcond = linductive + tzsource%cmnhname = 'INCG' + tzsource%clongname = 'inductive charge transfer between cloud droplets and graupel' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nincgqc ) + + gcond = hcloud == 'ICE4' + tzsource%cmnhname = 'WETH' + tzsource%clongname = 'wet growth of hail' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nwethqc ) + gcond = .true. tzsource%cmnhname = 'IMLT' tzsource%clongname = 'ice melting' @@ -3158,6 +3174,11 @@ SV_BUDGETS: do jsv = 1, ksv case ( 3 ) SV_ELEC ! volumetric charge of rain drops + gcond = .true. + tzsource%cmnhname = 'SFR' + tzsource%clongname = 'spontaneous freezing' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nsfrqr ) + gcond = lwarm_ice tzsource%cmnhname = 'AUTO' tzsource%clongname = 'autoconversion into rain' @@ -3198,6 +3219,16 @@ SV_BUDGETS: do jsv = 1, ksv tzsource%clongname = 'graupel melting' call Budget_source_add( tbudgets(ibudget), tzsource, gcond, ngmltqr ) + gcond = hcloud == 'ICE4' + tzsource%cmnhname = 'WETH' + tzsource%clongname = 'wet growth of hail' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nwethqr ) + + gcond = hcloud == 'ICE4' + tzsource%cmnhname = 'HMLT' + tzsource%clongname = 'melting of hail' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nhmltqr ) + gcond = .true. tzsource%cmnhname = 'SEDI' tzsource%clongname = 'sedimentation' @@ -3210,6 +3241,11 @@ SV_BUDGETS: do jsv = 1, ksv case ( 4 ) SV_ELEC ! volumetric charge of ice crystals + gcond = .true. + tzsource%cmnhname = 'HON' + tzsource%clongname = 'homogeneous nucleation' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nhonqi ) + gcond = .true. tzsource%cmnhname = 'AGGS' tzsource%clongname = 'aggregation of snow' @@ -3235,6 +3271,11 @@ SV_BUDGETS: do jsv = 1, ksv tzsource%clongname = 'dry growth of graupel' call Budget_source_add( tbudgets(ibudget), tzsource, gcond, ndrygqi ) + gcond = hcloud == 'ICE4' + tzsource%cmnhname = 'WETH' + tzsource%clongname = 'wet growth of hail' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nwethqi ) + gcond = .true. tzsource%cmnhname = 'IMLT' tzsource%clongname = 'ice melting' @@ -3313,6 +3354,11 @@ SV_BUDGETS: do jsv = 1, ksv tzsource%clongname = 'non-inductive charge separation due to ice-snow collisions' call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nniisqs ) + gcond = hcloud == 'ICE4' + tzsource%cmnhname = 'WETH' + tzsource%clongname = 'wet growth of hail' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nwethqs ) + gcond = .true. tzsource%cmnhname = 'SEDI' tzsource%clongname = 'sedimentation' @@ -3326,6 +3372,11 @@ SV_BUDGETS: do jsv = 1, ksv case ( 6 ) SV_ELEC ! volumetric charge of graupel + gcond = .true. + tzsource%cmnhname = 'SFR' + tzsource%clongname = 'spontaneous freezing' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nsfrqg ) + gcond = .true. tzsource%cmnhname = 'DEPG' tzsource%clongname = 'deposition on graupel' @@ -3361,11 +3412,21 @@ SV_BUDGETS: do jsv = 1, ksv tzsource%clongname = 'dry growth of graupel' call Budget_source_add( tbudgets(ibudget), tzsource, gcond, ndrygqg ) + gcond = linductive + tzsource%cmnhname = 'INCG' + tzsource%clongname = 'inductive charge transfer between cloud droplets and graupel' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nincgqg ) + gcond = .true. tzsource%cmnhname = 'GMLT' tzsource%clongname = 'graupel melting' call Budget_source_add( tbudgets(ibudget), tzsource, gcond, ngmltqg ) + gcond = hcloud == 'ICE4' + tzsource%cmnhname = 'WETH' + tzsource%clongname = 'wet growth of hail' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nwethqg ) + gcond = .true. tzsource%cmnhname = 'SEDI' tzsource%clongname = 'sedimentation' @@ -3378,6 +3439,64 @@ SV_BUDGETS: do jsv = 1, ksv case ( 7: ) SV_ELEC + if ( ( hcloud == 'ICE4' .and. ( jsv - nsv_elecbeg + 1 ) == 7 ) ) then + ! volumetric charge of hail + gcond = .true. + tzsource%cmnhname = 'WETG' + tzsource%clongname = 'wet growth of graupel' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nwetgqh ) + + gcond = .true. + tzsource%cmnhname = 'WETH' + tzsource%clongname = 'wet growth of hail' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nwethqh ) + + gcond = .true. + tzsource%cmnhname = 'HMLT' + tzsource%clongname = 'melting of hail' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nhmltqh ) + + gcond = .true. + tzsource%cmnhname = 'SEDI' + tzsource%clongname = 'sedimentation' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nsediqh ) + + gcond = .true. + tzsource%cmnhname = 'NEUT' + tzsource%clongname = 'NEUT' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nneutqh ) + + else if ( ( hcloud == 'ICE3' .and. ( jsv - nsv_elecbeg + 1 ) == 7 ) & + .or. ( hcloud == 'ICE4' .and. ( jsv - nsv_elecbeg + 1 ) == 8 ) ) then + ! Negative ions (NSV_ELECEND case) + gcond = .true. + tzsource%cmnhname = 'DEPS' + tzsource%clongname = 'deposition on snow' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, ndepsni ) + + gcond = .true. + tzsource%cmnhname = 'DEPG' + tzsource%clongname = 'deposition on graupel' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, ndepgni ) + + gcond = lwarm_ice + tzsource%cmnhname = 'REVA' + tzsource%clongname = 'rain evaporation' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nrevani ) + + gcond = .true. + tzsource%cmnhname = 'CDEPI' + tzsource%clongname = 'condensation/deposition on ice' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, ncdepini ) + + gcond = .true. + tzsource%cmnhname = 'NEUT' + tzsource%clongname = 'NEUT' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nneutni ) + + else + call Print_msg( NVERB_FATAL, 'BUD', 'Ini_budget', 'unknown electricity budget' ) + end if end select SV_ELEC diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90 index 83aa43896..d472e2ebd 100644 --- a/src/MNH/modd_budget.f90 +++ b/src/MNH/modd_budget.f90 @@ -49,6 +49,8 @@ ! P. Wautelet 27/01/2020: use the tfield_metadata_base abstract datatype ! P. Wautelet 28/01/2020: add missing budgets for viscosity ! P. Wautelet 28/01/2020: add trhodj in tbudgetdata datatype +! P. Wautelet 09/03/2020: add tburhodj variable +! P .Wautelet 09/03/2020: add missing budgets for electricity !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -645,23 +647,26 @@ INTEGER, SAVE :: NNEGASV INTEGER, SAVE :: NDEPSQV INTEGER, SAVE :: NDEPGQV INTEGER, SAVE :: NREVAQV -INTEGER, SAVE :: NDEPIQV +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 :: NDEPIQC -INTEGER, SAVE :: NINDQC ! inductive process INTEGER, SAVE :: NSEDIQC +INTEGER, SAVE :: NCDEPIQC 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 @@ -670,20 +675,24 @@ INTEGER, SAVE :: NCFRZQR INTEGER, SAVE :: NWETGQR INTEGER, SAVE :: NDRYGQR INTEGER, SAVE :: NGMLTQR +INTEGER, SAVE :: NWETHQR +INTEGER, SAVE :: NHMLTQR 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 :: NDEPIQI INTEGER, SAVE :: NNIISQI ! non-inductive I-S INTEGER, SAVE :: NSEDIQI +INTEGER, SAVE :: NCDEPIQI INTEGER, SAVE :: NNEUTQI ! ! Allowed processes for the budget of electric charge carried by snow @@ -696,10 +705,12 @@ INTEGER, SAVE :: NCMELQS INTEGER, SAVE :: NWETGQS INTEGER, SAVE :: NDRYGQS INTEGER, SAVE :: NNIISQS ! non-inductive I-S +INTEGER, SAVE :: NWETHQS 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 @@ -707,12 +718,25 @@ INTEGER, SAVE :: NCMELQG INTEGER, SAVE :: NCFRZQG INTEGER, SAVE :: NWETGQG INTEGER, SAVE :: NDRYGQG +INTEGER, SAVE :: NINCGQG INTEGER, SAVE :: NGMLTQG -INTEGER, SAVE :: NINDQG ! inductive process +INTEGER, SAVE :: NWETHQG INTEGER, SAVE :: NSEDIQG INTEGER, SAVE :: NNEUTQG ! -! must add processes for electric charge carried by hail +! Allowed processes for the budget of electric charge carried by hail +INTEGER, SAVE :: NWETGQH +INTEGER, SAVE :: NWETHQH +INTEGER, SAVE :: NHMLTQH +INTEGER, SAVE :: NSEDIQH +INTEGER, SAVE :: NNEUTQH +! +! 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 ! ! REAL :: XTIME_BU ! budget time in this time-step diff --git a/src/MNH/modn_budget.f90 b/src/MNH/modn_budget.f90 index e35f1eff8..56157206a 100644 --- a/src/MNH/modn_budget.f90 +++ b/src/MNH/modn_budget.f90 @@ -226,6 +226,7 @@ !! C.Lac 10/2016 Add droplet deposition !! S. Riette 11/2016 New budgets for ICE3/ICE4 ! P. Wautelet 28/01/2020: add missing budgets for viscosity +! P .Wautelet 09/03/2020: add missing budgets for electricity !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -298,19 +299,22 @@ NAMELIST/NAM_BU_RRH/LBU_RRH, NASSERH, NNESTRH, NADVRH, NFRCRH, & NDIFRH, NRELRH, NNEGARH, NSEDIRH, NWETGRH, NWETHRH, NDRYHRH, NHMLTRH, & NCORRRH, NHGCVRH, NGHCVRH, NCOHGRH, NHMLTRH, NVISCRH ! -NAMELIST/NAM_BU_RSV/ LBU_RSV, NASSESV, NNESTSV, NADVSV, NFRCSV, & - NDIFSV, NRELSV, NDCONVSV, NVTURBSV, NHTURBSV, NCHEMSV, NMAFLSV, & - NVISCSV, NNEGASV, & - NAUTOQC, NACCRQC, NRIMQC, NWETGQC, NDRYGQC, NIMLTQC, NBERFIQC, & - NDEPIQC, NINDQC, NSEDIQC, NNEUTQC, & - NAUTOQR, NACCRQR, NREVAQR, NACCQR, NCFRZQR, NWETGQR, NDRYGQR, & - NGMLTQR, NSEDIQR, NNEUTQR, & - NAGGSQI, NAUTSQI, NCFRZQI, NWETGQI, NDRYGQI, NIMLTQI, NBERFIQI, & - NDEPIQI, NNIISQI, NSEDIQI, NNEUTQI, & - NDEPSQS, NAGGSQS, NAUTSQS, NRIMQS, NACCQS, NCMELQS, NWETGQS, & - NDRYGQS, NNIISQS, NSEDIQS, NNEUTQS, & - NDEPGQG, NRIMQG, NACCQG, NCMELQG, NCFRZQG, NWETGQG, NDRYGQG, & - NGMLTQG, NINDQG, NSEDIQG, NNEUTQG, NDEPOTRSV -! must add budget for hail +NAMELIST/NAM_BU_RSV/ LBU_RSV, NASSESV, NNESTSV, NADVSV, NFRCSV, & + NDIFSV, NRELSV, NDCONVSV, NVTURBSV, NHTURBSV, NCHEMSV, NMAFLSV, & + NVISCSV, NNEGASV, & + NDEPSQV, NDEPGQV, NREVAQV, NCDEPIQV, NNEUTQV, & + NHONQC, NAUTOQC, NACCRQC, NRIMQC, NWETGQC, NDRYGQC, NINCGQC, NWETHQC, & + NIMLTQC, NBERFIQC, NSEDIQC, NCDEPIQC, NNEUTQC, & + NSFRQR, NAUTOQR, NACCRQR, NREVAQR, NACCQR, NCFRZQR, NWETGQR, NDRYGQR, & + NGMLTQR, NWETHQR, NHMLTQR, NSEDIQR, NNEUTQR, & + NHONQI, NAGGSQI, NAUTSQI, NCFRZQI, NWETGQI, NDRYGQI, NWETHQI, & + NIMLTQI, NBERFIQI, NNIISQI, NSEDIQI, NCDEPIQI, NNEUTQI, & + NDEPSQS, NAGGSQS, NAUTSQS, NRIMQS, NACCQS, NCMELQS, NWETGQS, & + NDRYGQS, NNIISQS, NWETHQS, NSEDIQS, NNEUTQS, & + NSFRQG, NDEPGQG, NRIMQG, NACCQG, NCMELQG, NCFRZQG, NWETGQG, NDRYGQG, & + NINCGQG, NGMLTQG, NWETHQG, NSEDIQG, NNEUTQG, & + NWETGQH, NWETHQH, NHMLTQH, NSEDIQH, NNEUTQH, & + NDEPSNI, NDEPGNI, NREVANI, NCDEPINI, NNEUTNI, & + NDEPOTRSV ! END MODULE MODN_BUDGET diff --git a/src/MNH/rain_ice_elec.f90 b/src/MNH/rain_ice_elec.f90 index a80086f59..45a43609c 100644 --- a/src/MNH/rain_ice_elec.f90 +++ b/src/MNH/rain_ice_elec.f90 @@ -197,6 +197,7 @@ END MODULE MODI_RAIN_ICE_ELEC ! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function ! P. Wautelet 28/05/2019: move COUNTJV function to tools.f90 ! P. Wautelet 03/2020: use the new data structures and subroutines for budgets +! P .Wautelet 09/03/2020: add missing budgets for electricity !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -1159,7 +1160,10 @@ REAL :: ZVR, ZVI, ZVS, ZVG, ZETA0, ZK, ZRE0 call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 3 ), 'SEDI', pqis(:, :, :) * prhodj(:, :, :) ) call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 4 ), 'SEDI', pqss(:, :, :) * prhodj(:, :, :) ) call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 5 ), 'SEDI', pqgs(:, :, :) * prhodj(:, :, :) ) + if ( krr == 7 ) & + call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 6 ), 'SEDI', pqhs(:, :, :) * prhodj(:, :, :) ) end if + IF (OSEDIC) PINPRC (:,:) = 0. PINPRR (:,:) = 0. PINPRR3D (:,:,:) = 0. @@ -1829,6 +1833,8 @@ REAL :: ZVR, ZVI, ZVS, ZVG, ZETA0, ZK, ZRE0 call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 3 ), 'SEDI', pqis(:, :, :) * prhodj(:, :, :) ) call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 4 ), 'SEDI', pqss(:, :, :) * prhodj(:, :, :) ) call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 5 ), 'SEDI', pqgs(:, :, :) * prhodj(:, :, :) ) + if ( krr == 7 ) & + call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 6 ), 'SEDI', pqhs(:, :, :) * prhodj(:, :, :) ) end if ! END SUBROUTINE RAIN_ICE_ELEC_SEDIMENTATION_SPLIT @@ -1859,6 +1865,16 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZCONC3D ! if ( lbudget_rs ) call Budget_store_init( tbudgets(NBUDGET_RS), 'SEDI', prss(:, :, :) * prhodj(:, :, :) ) if ( lbudget_rg ) call Budget_store_init( tbudgets(NBUDGET_RG), 'SEDI', prgs(:, :, :) * prhodj(:, :, :) ) if ( lbudget_rh ) call Budget_store_init( tbudgets(NBUDGET_RH), 'SEDI', prhs(:, :, :) * prhodj(:, :, :) ) + if ( lbudget_sv ) then + if ( osedic ) & + call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 1 ), 'SEDI', pqcs(:, :, :) * prhodj(:, :, :) ) + call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 2 ), 'SEDI', pqrs(:, :, :) * prhodj(:, :, :) ) + call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 3 ), 'SEDI', pqis(:, :, :) * prhodj(:, :, :) ) + call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 4 ), 'SEDI', pqss(:, :, :) * prhodj(:, :, :) ) + call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 5 ), 'SEDI', pqgs(:, :, :) * prhodj(:, :, :) ) + if ( krr == 7 ) & + call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 6 ), 'SEDI', pqhs(:, :, :) * prhodj(:, :, :) ) + end if ! !* 1. Parameters for cloud sedimentation ! @@ -2223,6 +2239,16 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZCONC3D ! if ( lbudget_rs ) call Budget_store_end( tbudgets(NBUDGET_RS), 'SEDI', prss(:, :, :) * prhodj(:, :, :) ) if ( lbudget_rg ) call Budget_store_end( tbudgets(NBUDGET_RG), 'SEDI', prgs(:, :, :) * prhodj(:, :, :) ) if ( lbudget_rh ) call Budget_store_end( tbudgets(NBUDGET_RH), 'SEDI', prhs(:, :, :) * prhodj(:, :, :) ) + if ( lbudget_sv ) then + if ( osedic ) & + call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 1 ), 'SEDI', pqcs(:, :, :) * prhodj(:, :, :) ) + call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 2 ), 'SEDI', pqrs(:, :, :) * prhodj(:, :, :) ) + call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 3 ), 'SEDI', pqis(:, :, :) * prhodj(:, :, :) ) + call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 4 ), 'SEDI', pqss(:, :, :) * prhodj(:, :, :) ) + call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 5 ), 'SEDI', pqgs(:, :, :) * prhodj(:, :, :) ) + if ( krr == 7 ) & + call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 6 ), 'SEDI', pqhs(:, :, :) * prhodj(:, :, :) ) + end if ! END SUBROUTINE RAIN_ICE_SEDIMENTATION_STAT ! @@ -4112,12 +4138,34 @@ IMPLICIT NONE Unpack( zrgs(:) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) if ( lbudget_rh ) call Budget_store_end( tbudgets(NBUDGET_RH), 'WETH', & Unpack( zrhs(:) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) + if ( lbudget_sv ) then + call Budget_store_add( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 1 ), 'WETH', & + Unpack( -zwq1(:, 1) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) + call Budget_store_add( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 2 ), 'WETH', & + Unpack( -zwq1(:, 4) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) + call Budget_store_add( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 3 ), 'WETH', & + Unpack( -zwq1(:, 2) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) + call Budget_store_add( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 4 ), 'WETH', & + Unpack( -zwq1(:, 3) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) + call Budget_store_add( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 5 ), 'WETH', & + Unpack( -zwq1(:, 5) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) + call Budget_store_add( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 6 ), 'WETH', & + Unpack( ( zwq1(:, 1) + zwq1(:, 2) + zwq1(:, 3) + zwq1(:, 4) + zwq1(:, 5) ) & + * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) + end if END IF ! IF (IHAIL > 0) THEN ! !* 7.5 Melting of the hailstones ! + if ( lbudget_sv ) then + call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 2 ), 'HMLT', & + Unpack( zqrs(:) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) + call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 6 ), 'HMLT', & + Unpack( zqhs(:) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) + end if + ZZW(:) = 0.0 ZWQ1(:,7) = 0. ! @@ -4154,6 +4202,12 @@ IMPLICIT NONE Unpack( zzw(:) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) if ( lbudget_rh ) call Budget_store_add( tbudgets(NBUDGET_RH), 'HMLT', & Unpack( -zzw(:) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) + if ( lbudget_sv ) then + call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 2 ), 'HMLT', & + Unpack( zqrs(:) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) + call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg + 6 ), 'HMLT', & + Unpack( zqhs(:) * zrhodj(:), mask = gmicro(:, :, :), field = 0. ) ) + end if END IF ! DEALLOCATE(GHAIL) -- GitLab