- emThe electron density.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The electron density.
- mean_enThe electron mean energy.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The electron mean energy.
- position_unitsUnits of position.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Units of position.
- potentialThe potential.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The potential.
- 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
IonsFromIonization
Rate of production of ions from ionization using Townsend coefficients (Ion density must be in logarithmic form)
Overview
IonsFromIonization
calculates the ion production from ionization using Townsend coefficients for electrons in logarithmic form. IonsFromIonization
assumes the electrostatic approximation for the electric field.
Ion production from ionization can be described as
Where is the ion production from ionization, is the electron flux, is the Townsend coefficient for ionization, is the electron density, is the mobility coefficient, is the diffusion coefficient, and is the potential. When converting the density to logarithmic form and applying a scaling factor of the mesh, the strong form for IonsFromIonization
is defined as
Where is the molar density of the species in logarithmic form and is the scaling factor of the mesh.
When coupling Zapdos with CRANE, IonsFromIonization
serves the same function as CRANE's ADEEDFReactionTownsend
.
Example Input File Syntax
An example of how to use IonsFromIonization
can be found in the test file mean_en.i
.
[Kernels]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[]
(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/Schottky_emission/Example1/Input.i)
- (test/tests/1d_dc/mean_en.i)
- (test/tests/Schottky_emission/Example3/Input.i)
- (test/tests/Schottky_emission/Example2/Input.i)
- (test/tests/1d_dc/mean_en_multi.i)
- (test/tests/reflections/high_initial/Input.i)
- (test/tests/1d_dc/densities_mean_en.i)
- (test/tests/reflections/Schottky_400_V_10_um/Input.i)
- (test/tests/reflections/Schottky_300_V_5_um/Input.i)
- (test/tests/reflections/low_initial/Input.i)
- (test/tests/Schottky_emission/Example4/Input.i)
- (test/tests/DriftDiffusionAction/mean_en_actions.i)
- (test/tests/reflections/base/Input.i)
- (test/tests/Schottky_emission/Example4/Jac.i)
- (test/tests/Schottky_emission/PaschenLaw/Input.i)
- (test/tests/DriftDiffusionAction/mean_en_no_actions.i)
- (test/tests/reflections/Schottky/Input.i)
- (test/tests/field_emission/field_emission.i)
- (test/tests/1d_dc/NonlocalPotentialBCWithSchottky.i)
(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/Schottky_emission/Example1/Input.i)
dom0Scale = 1
dom0Size = 4E-6 #m
vhigh = -200E-3 #kV
[GlobalParams]
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = 10E-6
petsc_options = '-snes_converged_reason -snes_linesearch_monitor -snes_ksp_ew'
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 = 5e-10
dtmin = 1e-16
# dtmax = 1E-6
nl_max_its = 100
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[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 = 1e0
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 50
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 50
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 50
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[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
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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}
[]
[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}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
[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.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
# tau = 10E-6
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[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}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -40
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -40
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -39
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(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/Schottky_emission/Example3/Input.i)
dom0Scale = 1
dom0Size = 2E-6 #m
vhigh = -230E-3 #kV
# relaxTime = 50E-6 #s
threeTimesRelaxTime = 150E-6 #s
[GlobalParams]
# offset = 25
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = ${threeTimesRelaxTime}
petsc_options = '-snes_converged_reason -snes_linesearch_monitor -snes_ksp_ew'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda -ksp_gmres_restart'
petsc_options_value = 'gamg NONZERO 1.e-10 preonly 1e-3 100'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dtmin = 1e-25
# dtmax = 1E-6
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[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 = 1e0
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 20
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 20
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 35
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[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
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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}
[]
[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}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
[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.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
# tau = ${relaxTime}
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[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}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -30
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -30
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -25
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/Schottky_emission/Example2/Input.i)
dom0Scale = 1
dom0Size = 12E-6 #m
vhigh = -80E-3 #kV
[GlobalParams]
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = 10E-6
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-15
nl_abs_tol = 1e-11
dtmin = 1e-16
# dtmax = 1E-6
nl_max_its = 100
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[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 = 1e0
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 50
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 50
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 50
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[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
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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}
[]
[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}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
[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.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
# tau = 10E-6
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[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}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -30
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -30
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -29
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(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/reflections/high_initial/Input.i)
dom0Scale = 1
dom0Size = 6E-6 #m
vhigh = -175E-3 #kV
[GlobalParams]
# offset = 20
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
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 = 5e-14
nl_abs_tol = 1e-13
steady_state_start_time = 1E-6
dtmin = 1e-18
dtmax = 0.1E-7
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[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
[]
[]
[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
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [em_log_stabilization]
# type = LogStabilizationMoles
# variable = em
# block = 0
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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
# []
[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
# []
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
[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.01
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[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}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -30
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -30
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -30
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.01
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(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
[]
[]
(test/tests/reflections/Schottky_400_V_10_um/Input.i)
dom0Scale = 1
dom0Size = 5E-6 #m
vhigh = -175E-3 #kV
[GlobalParams]
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
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 = 5e-14
nl_abs_tol = 1e-13
steady_state_start_time = 1E-6
dtmin = 1e-30
dtmax = 0.1E-7
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[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 = 1e3
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 45
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 45
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 45
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[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
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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}
[]
[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}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
[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.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[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}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -42
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -45
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -36
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/reflections/Schottky_300_V_5_um/Input.i)
dom0Scale = 1
dom0Size = 5E-6 #m
vhigh = -400E-3 #kV
[GlobalParams]
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = 1E-6
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-9
nl_abs_tol = 1e-9
dtmin = 1e-16
dtmax = 0.1E-7
nl_max_its = 100
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[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 = 1e0
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 45
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 45
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 45
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[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
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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}
[]
[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}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
[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.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
tau = 100E-9
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
# [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}
[]
# [Arp_physical_right_diffusion]
# type = HagelaarIonDiffusionBC
# variable = Arp
# boundary = right
# r = 0
# position_units = ${dom0Scale}
# []
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyAdvectionBC
variable = mean_en
boundary = 'left'
potential = potential
ions = Arp
r = 0
position_units = ${dom0Scale}
secondary_electron_energy = 3
emission_coeffs = 0.02
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -42
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -45
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -36
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/reflections/low_initial/Input.i)
dom0Scale = 1
dom0Size = 6E-6 #m
vhigh = -175E-3 #kV
[GlobalParams]
# offset = 20
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
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 = 5e-14
nl_abs_tol = 1e-13
steady_state_start_time = 1E-6
dtmin = 1e-18
dtmax = 0.1E-7
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[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
[]
[]
[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
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [em_log_stabilization]
# type = LogStabilizationMoles
# variable = em
# block = 0
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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
# []
[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
# []
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
[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.01
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[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}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -36
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -36
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -36
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.01
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/Schottky_emission/Example4/Input.i)
dom0Scale = 1
dom0Size = 2E-6 #m
vhigh = -230E-3 #kV
negVHigh = 230E-3 #kV
relaxTime = 1e-9 #s
threeTimesRelaxTime = 3e-9 #s
resistance = 1
area = 5.02e-7 # Formerly 3.14e-6
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = ${threeTimesRelaxTime}
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-8
nl_abs_tol = 2e-6
dtmin = 1e-15
# dtmax = 1E-6
nl_max_its = 50
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 20
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[current_density_user_object]
type = CurrentDensityShapeSideUserObject
boundary = left
potential = potential
em = em
ip = Arp
mean_en = mean_en
execute_on = 'linear nonlinear'
[]
[data_provider]
type = ProvideMobility
electrode_area = ${area}
ballast_resist = ${resistance}
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 20
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 20
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 35
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[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
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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}
[]
[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}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = DensityMoles
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityMoles
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
# [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}
# []
[potential_left]
boundary = left
type = PenaltyCircuitPotential
variable = potential
current = current_density_user_object
surface_potential = ${negVHigh}
surface = 'cathode'
penalty = 1
data_provider = data_provider
electrons = em
ions = Arp
electron_energy = mean_en
area = ${area}
potential_units = 'kV'
position_units = ${dom0Scale}
resistance = ${resistance}
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
tau = ${relaxTime}
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[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}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -30
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -30
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -25
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(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/reflections/base/Input.i)
dom0Scale = 1
dom0Size = 6E-6 #m
vhigh = -175E-3 #kV
[GlobalParams]
# offset = 20
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
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-15
nl_abs_tol = 0.5e-12
steady_state_start_time = 1E-6
dtmin = 1e-18
dtmax = 0.1E-7
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[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
[]
[]
[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
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [em_log_stabilization]
# type = LogStabilizationMoles
# variable = em
# block = 0
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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
# []
[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
# []
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
[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.01
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[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}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 1
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 1
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -35
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -35
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -35
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.01
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/Schottky_emission/Example4/Jac.i)
dom0Scale = 1
dom0Size = 2E-6 #m
vhigh = 230E-3 #kV
negVHigh = -230E-3 #kV
# relaxTime = 50E-6 #s
threeTimesRelaxTime = 150E-6 #s
resistance = 1
area = 5.02e-7 # Formerly 3.14e-6
[GlobalParams]
# offset = 25
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
# type = FileMesh
# file = 'Geometry.msh'
type = GeneratedMesh
nx = 1
dim = 1
xmax = ${dom0Size}
[]
[Problem]
type = FEProblem
kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = ${threeTimesRelaxTime}
petsc_options = '-snes_converged_reason -snes_linesearch_monitor -snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-snes_type'
petsc_options_value = 'test'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dtmin = 1e-25
# dtmax = 1E-6
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[current_density_user_object]
type = CurrentDensityShapeSideUserObject
boundary = left
potential = potential
em = em
ip = Arp
mean_en = mean_en
execute_on = 'linear nonlinear'
[]
[data_provider]
type = ProvideMobility
electrode_area = ${area}
ballast_resist = ${resistance}
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
# [Arp_log_stabilization]
# type = LogStabilizationMoles
# variable = Arp
# offset = 20
# block = 0
# []
# [em_log_stabilization]
# type = LogStabilizationMoles
# variable = em
# offset = 20
# block = 0
# []
# [mean_en_log_stabilization]
# type = LogStabilizationMoles
# variable = mean_en
# block = 0
# offset = 35
# []
# # [mean_en_advection_stabilization]
# # type = EFieldArtDiff
# # variable = mean_en
# # potential = potential
# # block = 0
# # []
# [em_time_deriv]
# type = ElectronTimeDerivative
# variable = em
# block = 0
# []
# [em_advection]
# type = EFieldAdvection
# variable = em
# potential = potential
# mean_en = mean_en
# block = 0
# position_units = ${dom0Scale}
# []
# [em_diffusion]
# type = CoeffDiffusion
# variable = em
# mean_en = mean_en
# block = 0
# position_units = ${dom0Scale}
# []
# [em_ionization]
# type = ElectronsFromIonization
# em = em
# variable = em
# potential = potential
# mean_en = mean_en
# block = 0
# position_units = ${dom0Scale}
# []
# [potential_diffusion_dom1]
# type = CoeffDiffusionLin
# variable = potential
# block = 0
# position_units = ${dom0Scale}
# []
# [Arp_charge_source]
# type = ChargeSourceMoles_KV
# variable = potential
# charged = Arp
# block = 0
# []
# [em_charge_source]
# type = ChargeSourceMoles_KV
# variable = potential
# charged = em
# block = 0
# []
# [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}
# []
# [mean_en_time_deriv]
# type = ElectronTimeDerivative
# variable = mean_en
# block = 0
# []
# [mean_en_advection]
# type = EFieldAdvection
# variable = mean_en
# potential = potential
# em = em
# block = 0
# position_units = ${dom0Scale}
# []
# [mean_en_diffusion]
# type = CoeffDiffusion
# variable = mean_en
# em = em
# 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}
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
# [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}
# []
[potential_left]
boundary = left
type = PenaltyCircuitPotential
variable = potential
current = current_density_user_object
surface_potential = ${negVHigh}
surface = 'cathode'
penalty = 1
data_provider = data_provider
electrons = em
ions = Arp
electron_energy = mean_en
area = ${area}
potential_units = 'kV'
position_units = ${dom0Scale}
resistance = ${resistance}
[]
# [potential_dirichlet_right]
# type = DirichletBC
# variable = potential
# boundary = right
# value = 0
# []
# ## Electron boundary conditions ##
# [Emission_left]
# type = SchottkyEmissionBC
# # type = SecondaryElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# ions = Arp
# electron_energy = mean_en
# r = 1
# position_units = ${dom0Scale}
# # tau = ${relaxTime}
# relax = true
# []
# # [em_physical_left]
# # type = HagelaarElectronBC
# # variable = em
# # boundary = 'left'
# # potential = potential
# # electron_energy = mean_en
# # r = 0
# # position_units = ${dom0Scale}
# # []
# [em_physical_right]
# type = HagelaarElectronAdvectionBC
# variable = em
# boundary = right
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
# ## Argon boundary conditions ##
# [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}
# []
# [Arp_physical_right_diffusion]
# type = HagelaarIonDiffusionBC
# variable = Arp
# boundary = right
# r = 0
# position_units = ${dom0Scale}
# []
# [Arp_physical_right_advection]
# type = HagelaarIonAdvectionBC
# variable = Arp
# boundary = right
# potential = potential
# r = 0
# position_units = ${dom0Scale}
# []
# ## Mean energy boundary conditions ##
# [mean_en_physical_left]
# type = HagelaarEnergyBC
# variable = mean_en
# boundary = 'left'
# potential = potential
# electrons = em
# ions = Arp
# r = 0
# position_units = ${dom0Scale}
# []
# [mean_en_physical_right]
# type = HagelaarEnergyBC
# variable = mean_en
# boundary = right
# potential = potential
# electrons = em
# ions = Arp
# r = 0
# position_units = ${dom0Scale}
# []
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
variable = em
type = RandomIC
block = 0
min = -20
max = -15
[]
[Arp_ic]
variable = Arp
type = RandomIC
block = 0
min = -20
max = -15
[]
[mean_en_ic]
variable = mean_en
type = RandomIC
block = 0
min = -20
max = -15
[]
[]
[Functions]
# [potential_bc_func]
# type = ParsedFunction
# symbol_names = 'VHigh'
# symbol_values = '${vhigh}'
# expression = 'VHigh'
# []
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/Schottky_emission/PaschenLaw/Input.i)
dom0Scale = 1
dom0Size = 5E-6 #m
vhigh = -0.10 #kV
[GlobalParams]
# offset = 25
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = 10E-6
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-15
nl_abs_tol = 1e-11
dtmin = 1e-20
# dtmax = 1E-6
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[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 = 1e0
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 50
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 50
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 50
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[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
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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}
[]
[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}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
[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.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
# tau = 5E-6
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[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}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -33
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -33
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -29
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(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/reflections/Schottky/Input.i)
dom0Scale = 1
dom0Size = 10E-6 #m
vhigh = -150E-3 #kV
[GlobalParams]
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
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 = 5e-14
nl_abs_tol = 1e-13
steady_state_start_time = 1E-6
dtmin = 1e-16
dtmax = 0.1E-7
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[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
[]
[]
[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
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 40
block = 0
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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
offset = 40
block = 0
[]
[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 = 30
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
[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.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[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}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -42
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -45
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -36
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/field_emission/field_emission.i)
dom0Scale = 1
dom0Size = 5E-6 #m
vhigh = -0.15 #kV
[GlobalParams]
offset = 20
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'micro_fe.msh'
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[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
[]
[]
[Executioner]
type = Transient
end_time = 6E-6
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-15
dtmax = 0.01E-7
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-12
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[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
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
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
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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
# []
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
em = em
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
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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 = PowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = PowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ProcRate
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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = Current
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = Current
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = EFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = DiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ip = Arp
data_provider = data_provider
em = em
mean_en = 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 = right
potential = potential
mean_en = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
em = em
ip = Arp
r = 0.99
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
mean_en = mean_en
r = 0
position_units = ${dom0Scale}
[]
# [sec_electrons_left]
# type = SecondaryElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# ip = Arp
# mean_en = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[FieldEmission_left]
type = FieldEmissionBC
variable = em
boundary = 'left'
potential = potential
ip = Arp
mean_en = mean_en
r = 0
position_units = ${dom0Scale}
[]
[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
em = em
ip = Arp
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
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
[]
# [em_ic]
# type = RandomIC
# variable = em
# block = 0
# []
# [Arp_ic]
# type = RandomIC
# variable = Arp
# block = 0
# []
# [mean_en_ic]
# type = RandomIC
# variable = mean_en
# block = 0
# []
# [potential_ic]
# type = RandomIC
# variable = potential
# []
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'period dutyCycle riseTime VHigh VLow'
symbol_values = '3E-6 0.1 5E-7 ${vhigh} -0.001'
expression = 'if((t % period) < dutyCycle*period , VHigh ,
if((t % period) < dutyCycle*period + riseTime, ((VLow - VHigh)/riseTime) * ((t % period) - period * dutyCycle) + VHigh,
if((t % period) < period - riseTime , VLow ,
if((t % period) < period , ((VHigh - VLow)/riseTime) * ((t % period) - period) + VHigh ,
0))))'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[cathode_temperature]
type = ParsedFunction
expression = 1500
[]
[]
[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
user_work_function = 4.55 # eV
user_field_enhancement = 55
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/1d_dc/NonlocalPotentialBCWithSchottky.i)
dom0Scale = 1
dom0Size = 2E-6 #m
vhigh = 230E-3 #kV
relaxTime = 1e-9 #s
resistance = 1
area = 5.02e-7 # Formerly 3.14e-6
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[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
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = '${fparse 3 * relaxTime}'
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
nl_abs_tol = 2e-6
dtmin = 1e-15
# dtmax = 1E-6
nl_max_its = 50
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 20
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[current_density_user_object]
type = CurrentDensityShapeSideUserObject
boundary = left
potential = potential
em = em
ip = Arp
mean_en = mean_en
execute_on = 'linear nonlinear'
[]
[data_provider]
type = ProvideMobility
electrode_area = ${area}
ballast_resist = ${resistance}
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 20
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 20
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 35
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[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
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[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}
[]
[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}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[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_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[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
[]
[em_lin]
type = DensityMoles
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityMoles
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[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}
[]
[]
[BCs]
## Potential boundary conditions ##
# [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}
# []
[potential_left]
boundary = left
type = PenaltyCircuitPotential
variable = potential
current = current_density_user_object
surface_potential = -${vhigh}
surface = 'cathode'
penalty = 1000
data_provider = data_provider
electrons = em
ions = Arp
electron_energy = mean_en
area = ${area}
potential_units = 'kV'
position_units = ${dom0Scale}
resistance = ${resistance}
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
tau = ${relaxTime}
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# mean_en = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[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}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -30
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -30
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -25
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[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.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]