From 9f15e554d15e64d3d7f7590a4ac3e3a121f59e06 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Wed, 17 Feb 2021 11:22:45 +0100 Subject: [PATCH] Philippe 17/02/2021: budgets: add DRIFT and CORAY terms for electricity --- src/MNH/ini_budget.f90 | 20 ++++++++++++++++++++ src/MNH/modd_budget.f90 | 4 ++++ src/MNH/modn_budget.f90 | 26 +++++++++++++------------- src/MNH/resolved_elecn.f90 | 14 ++++++++++++-- 4 files changed, 49 insertions(+), 15 deletions(-) diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90 index dbb3c5479..fc7d602d6 100644 --- a/src/MNH/ini_budget.f90 +++ b/src/MNH/ini_budget.f90 @@ -3373,6 +3373,16 @@ SV_BUDGETS: do jsv = 1, ksv SV_ELEC: select case( jsv - nsv_elecbeg + 1 ) case ( 1 ) SV_ELEC ! volumetric charge of water vapor + gcond = .true. + tzsource%cmnhname = 'DRIFT' + tzsource%clongname = 'ion drift motion' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, ndriftqv ) + + gcond = .true. + tzsource%cmnhname = 'CORAY' + tzsource%clongname = 'cosmic ray source' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, ncorayqv ) + gcond = .true. tzsource%cmnhname = 'DEPS' tzsource%clongname = 'deposition on snow' @@ -3764,6 +3774,16 @@ SV_BUDGETS: do jsv = 1, ksv 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 = 'DRIFT' + tzsource%clongname = 'ion drift motion' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, ndriftni ) + + gcond = .true. + tzsource%cmnhname = 'CORAY' + tzsource%clongname = 'cosmic ray source' + call Budget_source_add( tbudgets(ibudget), tzsource, gcond, ncorayni ) + gcond = .true. tzsource%cmnhname = 'DEPS' tzsource%clongname = 'deposition on snow' diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90 index 50675484c..9c5b03aba 100644 --- a/src/MNH/modd_budget.f90 +++ b/src/MNH/modd_budget.f90 @@ -638,6 +638,8 @@ INTEGER, SAVE :: NNEADVSV = 0 ! negative correction INTEGER, SAVE :: NNECONSV = 0 ! negative correction ! ! Allowed processes for the budget of electric charge carried by water vapor +INTEGER, SAVE :: NDRIFTQV = 0 +INTEGER, SAVE :: NCORAYQV = 0 INTEGER, SAVE :: NDEPSQV = 0 INTEGER, SAVE :: NDEPGQV = 0 INTEGER, SAVE :: NREVAQV = 0 @@ -726,6 +728,8 @@ INTEGER, SAVE :: NSEDIQH = 0 INTEGER, SAVE :: NNEUTQH = 0 ! ! Allowed processes for the budget of electric charge carried by negative ions +INTEGER, SAVE :: NDRIFTNI = 0 +INTEGER, SAVE :: NCORAYNI = 0 INTEGER, SAVE :: NDEPSNI = 0 INTEGER, SAVE :: NDEPGNI = 0 INTEGER, SAVE :: NREVANI = 0 diff --git a/src/MNH/modn_budget.f90 b/src/MNH/modn_budget.f90 index f5761a3aa..85396d8e0 100644 --- a/src/MNH/modn_budget.f90 +++ b/src/MNH/modn_budget.f90 @@ -308,19 +308,19 @@ NAMELIST/NAM_BU_RRH/LBU_RRH, NASSERH, NNESTRH, NADVRH, NFRCRH, & NAMELIST/NAM_BU_RSV/ LBU_RSV, NASSESV, NNESTSV, NADVSV, NFRCSV, & NDIFSV, NRELSV, NDCONVSV, NVTURBSV, NHTURBSV, NCHEMSV, NMAFLSV, & NVISCSV, NNEGASV, NNETURSV, NNEADVSV, NNECONSV, & - 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, & + NDRIFTQV, NCORAYQV, 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, & + NDRIFTNI, NCORAYNI, NDEPSNI, NDEPGNI, NREVANI, NCDEPINI, NNEUTNI, & NDEPOTRSV ! END MODULE MODN_BUDGET diff --git a/src/MNH/resolved_elecn.f90 b/src/MNH/resolved_elecn.f90 index 23a5f120e..38ca1080b 100644 --- a/src/MNH/resolved_elecn.f90 +++ b/src/MNH/resolved_elecn.f90 @@ -172,12 +172,13 @@ END MODULE MODI_RESOLVED_ELEC_n ! P. Wautelet 14/03/2019: bugfix: correct management of files ! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function ! P. Wautelet 12/02/2021: bugfix: change STATUS for opening files containing flash information (NEW->UNKNOWN) +! P. Wautelet 17/02/2021: budgets: add DRIFT and CORAY terms for electricity !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! -use mode_budget, only: Budget_store_init, Budget_store_end +use mode_budget, only: Budget_store_add, Budget_store_init, Budget_store_end USE MODE_ELEC_ll USE MODE_IO_FILE, ONLY: IO_File_close, IO_File_open USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list, IO_File_find_byname @@ -671,9 +672,13 @@ CALL MYPROC_ELEC_ll (IPROC) ! CALL ION_DRIFT(ZCPH, ZCOR, PSVT, HLBCX, HLBCY) - PSVS(:,:,:,NSV_ELECBEG) = PSVS(:,:,:,NSV_ELECBEG) + ZCPH(:,:,:) PSVS(:,:,:,NSV_ELECEND) = PSVS(:,:,:,NSV_ELECEND) + ZCOR(:,:,:) + +if ( lbudget_sv ) then + call Budget_store_add( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg), 'DRIFT', zcph(:, :, :) * prhodj(:, :, :) ) + call Budget_store_add( tbudgets(NBUDGET_SV1 - 1 + nsv_elecend), 'DRIFT', zcor(:, :, :) * prhodj(:, :, :) ) +end if ! !* 4.3 Add Cosmic Ray source ! @@ -681,6 +686,11 @@ PSVS(:,:,:,NSV_ELECBEG) = PSVS(:,:,:,NSV_ELECBEG) + & XIONSOURCEFW(:,:,:) / PRHODREF(:,:,:) PSVS(:,:,:,NSV_ELECEND) = PSVS(:,:,:,NSV_ELECEND) + & XIONSOURCEFW(:,:,:) / PRHODREF(:,:,:) + +if ( lbudget_sv ) then + call Budget_store_add( tbudgets(NBUDGET_SV1 - 1 + nsv_elecbeg), 'CORAY', xionsourcefw(:,:,:)/prhodref(:,:,:) * prhodj(:, :, :) ) + call Budget_store_add( tbudgets(NBUDGET_SV1 - 1 + nsv_elecend), 'CORAY', xionsourcefw(:,:,:)/prhodref(:,:,:) * prhodj(:, :, :) ) +end if ! !------------------------------------------------------------------------------- ! -- GitLab