diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90 index dbb3c54795d13c64e667bc49500e6c6533272cbd..fc7d602d63e5d6b1f96e0de4bbb4366e479bb632 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 50675484cd40c2a46d70f59b5289bc9b9b44b4de..9c5b03aba683a8280ecc884e8532e8c3f7b9db67 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 f5761a3aae3d22b325b4ce5fa2e5be84ab9b83e5..85396d8e05241411fd24169db8d4581749b9b9f0 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 23a5f120eaae5b7ae7acfd51392eedeffe6e726d..38ca1080bd0cf2ef039f71591c867eca8b7f6b41 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 ! !------------------------------------------------------------------------------- !