- vThe variable that is reacting to create u.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The variable that is reacting to create u.
- variableThe name of the variable that this residual object operates on
C++ Type:NonlinearVariableName
Unit:(no unit assumed)
Controllable:No
Description:The name of the variable that this residual object operates on
ProductFirstOrderRxn
Generic first order reaction source term for u (v is the reactant and densities must be in logarithmic form)
Overview
ProductFirstOrderRxn
is a generic first reaction source term for the products of a reaction in the form of .
The source term of this reaction for the products can be described as
Where is the source term for the products, is the reaction rate coefficient, is the reactant specie. When converting the density to logarithmic form, the strong form for ProductFirstOrderRxn
is defined as
Where is the molar density of the specie in logarithmic form.
When coupling Zapdos with CRANE, ProductFirstOrderRxn
serves the same function as CRANE's ReactionFirstOrderLog
.
Example Input File Syntax
An example of how to use ProductFirstOrderRxn
can be found in the test file mean_en.i
.
[Kernels]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[]
(test/tests/1d_dc/mean_en.i)Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Unit:(no unit assumed)
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- displacementsThe displacements
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The displacements
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Optional Parameters
- absolute_value_vector_tagsThe tags for the vectors this residual object should fill with the absolute value of the residual contribution
C++ Type:std::vector<TagName>
Unit:(no unit assumed)
Controllable:No
Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution
- extra_matrix_tagsThe extra tags for the matrices this Kernel should fill
C++ Type:std::vector<TagName>
Unit:(no unit assumed)
Controllable:No
Description:The extra tags for the matrices this Kernel should fill
- extra_vector_tagsThe extra tags for the vectors this Kernel should fill
C++ Type:std::vector<TagName>
Unit:(no unit assumed)
Controllable:No
Description:The extra tags for the vectors this Kernel should fill
- matrix_tagssystemThe tag for the matrices this Kernel should fill
Default:system
C++ Type:MultiMooseEnum
Unit:(no unit assumed)
Options:nontime, system
Controllable:No
Description:The tag for the matrices this Kernel should fill
- vector_tagsnontimeThe tag for the vectors this Kernel should fill
Default:nontime
C++ Type:MultiMooseEnum
Unit:(no unit assumed)
Options:nontime, time
Controllable:No
Description:The tag for the vectors this Kernel should fill
Tagging Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- diag_save_inThe name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
C++ Type:std::vector<AuxVariableName>
Unit:(no unit assumed)
Controllable:No
Description:The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- save_inThe name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
C++ Type:std::vector<AuxVariableName>
Unit:(no unit assumed)
Controllable:No
Description:The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
Input Files
(test/tests/1d_dc/mean_en.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
#petsc_options = '-snes_converged_reason -snes_linesearch_monitor -snes_test_jacobian'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
# petsc_options_iname = '-pc_type -sub_pc_type'
# petsc_options_value = 'asm lu'
# petsc_options_iname = '-snes_type'
# petsc_options_value = 'test'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
# dt = 1.1
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
# print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[dof_map]
type = DOFMap
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
potential = potential
mean_en = mean_en
em = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[OHm_lin]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_lin OHm_lin' # H3Op_lin OHm_lin'
expression = '-emliq_lin - OHm_lin' # 'H3Op_lin - em_lin - OHm_lin'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
block = 0
[]
[emliq_lin]
type = DensityMoles
variable = emliq_lin
density_log = emliq
block = 1
[]
[Arp_lin]
type = DensityMoles
variable = Arp_lin
density_log = Arp
block = 0
[]
[OHm_lin]
type = DensityMoles
variable = OHm_lin
density_log = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
potential = potential
density_log = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
potential = potential
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
mean_en_neighbor = mean_en
potential_neighbor = potential
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
mean_en_neighbor = mean_en
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
potential = potential
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
preset = false
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
potential = potential
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.05
block = 0
property_tables_file = td_argon_mean_en.txt
[]
[water_block]
type = Water
block = 1
potential = potential
[]
[]
(test/tests/water_only/water_only.i)
dom1Scale = 1e-7
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
type = GeneratedMesh
nx = 1000
xmax = 10
dim = 1
[]
[Problem]
type = FEProblem
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 1e-3'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
nl_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
potential = potential
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
[]
[potential_diffusion]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom1Scale}
[]
# [emliq_charge_source]
# type = ChargeSourceMoles_KV
# variable = potential
# charged = emliq
# []
# [OHm_charge_source]
# type = ChargeSourceMoles_KV
# variable = potential
# charged = OHm
# []
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
potential = potential
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
position_units = ${dom1Scale}
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
[]
[]
[Variables]
[potential]
[]
[emliq]
[]
[OHm]
[]
[]
[AuxVariables]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
[]
[OHm_lin]
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
[]
[Current_OHm]
order = CONSTANT
family = MONOMIAL
[]
[tot_liq_current]
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm'
expression = 'Current_emliq + Current_OHm'
execute_on = 'timestep_end'
[]
[emliq_lin]
type = DensityMoles
variable = emliq_lin
density_log = emliq
[]
[OHm_lin]
type = DensityMoles
variable = OHm_lin
density_log = OHm
[]
[Efield_l]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom1Scale}
[]
[Current_emliq]
type = ADCurrent
potential = potential
density_log = emliq
variable = Current_emliq
art_diff = false
position_units = ${dom1Scale}
[]
[Current_OHm]
type = ADCurrent
potential = potential
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
position_units = ${dom1Scale}
[]
[]
[BCs]
[potential_left]
type = DirichletBC
value = -6.5e-5
variable = potential
boundary = left
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[emliq_left]
type = NeumannBC
value = 300
variable = emliq
boundary = left
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
[]
[]
[Materials]
[water_block]
type = Water
potential = potential
[]
[]
(test/tests/DriftDiffusionAction/mean_en_no_actions.i)
#This is the input file that supplied the gold output file.
#It is the same as the input file in tests/1d_dc/mean_en.i,
#execpt some of the Aux Variables are renamed for the Action test
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
# petsc_options_iname = '-pc_type -sub_pc_type'
# petsc_options_value = 'asm lu'
# petsc_options_iname = '-snes_type'
# petsc_options_value = 'test'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
# dt = 1.1
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
file_base = out
perf_graph = true
[out]
type = Exodus
execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
# electrode_area = 1.1
# ballast_resist = 1.1
# e = 1.1
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
potential = potential
mean_en = mean_en
em = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
# [em_advection_stabilization]
# type = EFieldArtDiff
# variable = em
# potential = potential
# block = 0
# []
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
# [emliq_advection_stabilization]
# type = EFieldArtDiff
# variable = emliq
# potential = potential
# block = 1
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
# [Arp_advection_stabilization]
# type = EFieldArtDiff
# variable = Arp
# potential = potential
# block = 0
# []
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
# [OHm_advection_stabilization]
# type = EFieldArtDiff
# variable = OHm
# potential = potential
# block = 1
# []
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15.0
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
#[x]
# order = CONSTANT
# family = MONOMIAL
#[]
[position0]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[position1]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
#[em_lin]
# order = CONSTANT
# family = MONOMIAL
# block = 0
#[]
[em_density]
order = CONSTANT
family = MONOMIAL
block = 0
[]
#[emliq_lin]
# order = CONSTANT
# family = MONOMIAL
# block = 1
#[]
[emliq_density]
order = CONSTANT
family = MONOMIAL
block = 1
[]
#[Arp_lin]
# order = CONSTANT
# family = MONOMIAL
# block = 0
#[]
[Arp_density]
order = CONSTANT
family = MONOMIAL
block = 0
[]
#[OHm_lin]
# block = 1
# order = CONSTANT
# family = MONOMIAL
#[]
[OHm_density]
block = 1
order = CONSTANT
family = MONOMIAL
[]
#[Efield]
# order = CONSTANT
# family = MONOMIAL
#[]
[EFieldx0]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldx1]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = position0
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = position1
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_density Arp_density'
expression = 'Arp_density - em_density'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_density OHm_density'
expression = '-emliq_density - OHm_density'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityMoles
variable = em_density
density_log = em
block = 0
[]
[emliq_lin]
type = DensityMoles
variable = emliq_density
density_log = emliq
block = 1
[]
[Arp_lin]
type = DensityMoles
variable = Arp_density
density_log = Arp
block = 0
[]
[OHm_lin]
type = DensityMoles
variable = OHm_density
density_log = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = EFieldx0
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
potential = potential
variable = EFieldx1
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
potential = potential
density_log = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
potential = potential
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
mean_en_neighbor = mean_en
potential_neighbor = potential
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
mean_en_neighbor = mean_en
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
potential = potential
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
potential = potential
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.05
block = 0
property_tables_file = td_argon_mean_en.txt
[]
[water_block]
type = Water
block = 1
potential = potential
[]
[]
(test/tests/1d_dc/mean_en.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
#petsc_options = '-snes_converged_reason -snes_linesearch_monitor -snes_test_jacobian'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
# petsc_options_iname = '-pc_type -sub_pc_type'
# petsc_options_value = 'asm lu'
# petsc_options_iname = '-snes_type'
# petsc_options_value = 'test'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
# dt = 1.1
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
# print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[dof_map]
type = DOFMap
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
potential = potential
mean_en = mean_en
em = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[OHm_lin]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_lin OHm_lin' # H3Op_lin OHm_lin'
expression = '-emliq_lin - OHm_lin' # 'H3Op_lin - em_lin - OHm_lin'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
block = 0
[]
[emliq_lin]
type = DensityMoles
variable = emliq_lin
density_log = emliq
block = 1
[]
[Arp_lin]
type = DensityMoles
variable = Arp_lin
density_log = Arp
block = 0
[]
[OHm_lin]
type = DensityMoles
variable = OHm_lin
density_log = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
potential = potential
density_log = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
potential = potential
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
mean_en_neighbor = mean_en
potential_neighbor = potential
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
mean_en_neighbor = mean_en
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
potential = potential
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
preset = false
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
potential = potential
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.05
block = 0
property_tables_file = td_argon_mean_en.txt
[]
[water_block]
type = Water
block = 1
potential = potential
[]
[]
(test/tests/DriftDiffusionAction/mean_en_actions.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20.0
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
# petsc_options_iname = '-pc_type -sub_pc_type'
# petsc_options_value = 'asm lu'
# petsc_options_iname = '-snes_type'
# petsc_options_value = 'test'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
# dt = 1.1
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
file_base = out
perf_graph = true
[out]
type = Exodus
execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
# electrode_area = 1.1
# ballast_resist = 1.1
# e = 1.1
[]
[]
#The potential needs to be defined outside of the Action,
#since it is present in both Blocks
[Variables]
[potential]
[]
[]
#Action the supplies the drift-diffusion equations for both Blocks,
#This action also adds JouleHeating and the ChargeSourceMoles_KV Kernels
[DriftDiffusionAction]
[Plasma]
electrons = em
charged_particle = Arp
potential = potential
Is_potential_unique = false
mean_energy = mean_en
using_offset = true
position_units = ${dom0Scale}
block = 0
Additional_Outputs = 'ElectronTemperature Current EField'
[]
[Water]
electrons = emliq
charged_particle = OHm
potential = potential
Is_potential_unique = false
using_offset = true
position_units = ${dom1Scale}
block = 1
Additional_Outputs = 'Current EField'
[]
[]
#The Kernels supply the sources terms
[Kernels]
[em_ionization]
type = ElectronsFromIonization
variable = em
potential = potential
mean_en = mean_en
em = em
block = 0
position_units = ${dom0Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[]
[AuxVariables]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_density Arp_density'
expression = 'Arp_density - em_density'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_density OHm_density'
expression = '-emliq_density - OHm_density'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
mean_en_neighbor = mean_en
potential_neighbor = potential
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
mean_en_neighbor = mean_en
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
potential = potential
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
position_units = ${dom0Scale}
secondary_electron_energy = 3
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
potential = potential
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.05
block = 0
property_tables_file = td_argon_mean_en.txt
[]
[water_block]
type = Water
block = 1
potential = potential
[]
[]
(test/tests/1d_dc/mean_en_multi.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
line_search = 'bt'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
# print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[dof_map]
type = DOFMap
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
potential = potential
mean_en = mean_en
em = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[ArEx_excitation]
type = ExcitationReaction
variable = ArEx
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
reactant = false
[]
[ArEx_deexcitation]
type = ExcitationReaction
variable = ArEx
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
reactant = true
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[ArEx_time_deriv]
type = ElectronTimeDerivative
variable = ArEx
block = 0
[]
[ArEx_diffusion]
type = CoeffDiffusion
variable = ArEx
block = 0
position_units = ${dom0Scale}
[]
[ArEx_log_stabilization]
type = LogStabilizationMoles
variable = ArEx
block = 0
offset = 30
[]
[ArTest_time_deriv]
type = ElectronTimeDerivative
variable = ArTest
block = 0
[]
[ArTest_diffusion]
type = CoeffDiffusion
variable = ArTest
block = 0
position_units = ${dom0Scale}
[]
[ArTest_log_stabilization]
type = LogStabilizationMoles
variable = ArTest
block = 0
[]
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[ArEx]
block = 0
[]
[ArTest]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ArEx_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ArTest_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[OHm_lin]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_lin OHm_lin' # H3Op_lin OHm_lin'
expression = '-emliq_lin - OHm_lin' # 'H3Op_lin - em_lin - OHm_lin'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
block = 0
[]
[emliq_lin]
type = DensityMoles
variable = emliq_lin
density_log = emliq
block = 1
[]
[Arp_lin]
type = DensityMoles
variable = Arp_lin
density_log = Arp
block = 0
[]
[ArEx_lin]
type = DensityMoles
variable = ArEx_lin
density_log = ArEx
block = 0
[]
[ArTest_lin]
type = DensityMoles
variable = ArTest_lin
density_log = ArTest
block = 0
[]
[OHm_lin]
type = DensityMoles
variable = OHm_lin
density_log = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
potential = potential
density_log = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
potential = potential
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
mean_en_neighbor = mean_en
potential_neighbor = potential
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
mean_en_neighbor = mean_en
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
potential = potential
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
potential = potential
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[ArEx_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = ArEx
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[ArEx_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = ArEx
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[ArTest_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = ArTest
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[ArTest_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = ArTest
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[ArEx_ic]
type = ConstantIC
variable = ArEx
value = -16
#value = -21
block = 0
[]
[ArTest_ic]
type = ConstantIC
variable = ArTest
value = -31
#value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block]
type = GasBase
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = .05
block = 0
property_tables_file = td_argon_mean_en.txt
position_units = ${dom0Scale}
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = ArEx
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = ArTest
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[water_block]
type = Water
block = 1
potential = potential
[]
[]
(test/tests/1d_dc/densities_mean_en.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
# dom0Scale=1.1
# dom1Scale=1.1
[GlobalParams]
offset = 20
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
num_steps = 1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
# print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[dof_map]
type = DOFMap
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
# electrode_area = 1.1
# ballast_resist = 1.1
# e = 1.1
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
potential = potential
mean_en = mean_en
em = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[OHm_lin]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_lin OHm_lin' # H3Op_lin OHm_lin'
expression = '-emliq_lin - OHm_lin' # 'H3Op_lin - em_lin - OHm_lin'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = Density
variable = em_lin
density_log = em
block = 0
[]
[emliq_lin]
type = Density
variable = emliq_lin
density_log = emliq
block = 1
[]
[Arp_lin]
type = Density
variable = Arp_lin
density_log = Arp
block = 0
[]
[OHm_lin]
type = Density
variable = OHm_lin
density_log = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
potential = potential
density_log = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
potential = potential
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
mean_en_neighbor = mean_en
potential_neighbor = potential
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
mean_en_neighbor = mean_en
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
potential = potential
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
potential = potential
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
# [em_ic]
# type = RandomIC
# variable = em
# block = 0
# min = -21.5
# max = -20.5
# []
# [emliq_ic]
# type = RandomIC
# variable = emliq
# block = 1
# min = -21.5
# max = -20.5
# []
# [Arp_ic]
# type = RandomIC
# variable = Arp
# block = 0
# min = -21.5
# max = -20.5
# []
# [mean_en_ic]
# type = RandomIC
# variable = mean_en
# block = 0
# min = -20.5
# max = -19.5
# []
# type = RandomIC
# variable = OHm
# block = 1
# min = -16.1
# max = -15.1
# []
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = 1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = .05
block = 0
property_tables_file = td_argon_mean_en.txt
[]
[water_block]
type = Water
block = 1
potential = potential
[]
[]