- boundaryThe list of boundary IDs from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Unit:(no unit assumed)
Controllable:No
Description:The list of boundary IDs from the mesh where this object applies
- electron_energyThe mean electron energy density in log form
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The mean electron energy density in log form
- emission_coeffsA list of species-dependent secondary electron emission coefficients for each species in `ions`
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:A list of species-dependent secondary electron emission coefficients for each species in `ions`
- ionsA list of ion densities in log form
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:A list of ion densities in log form
- position_unitsUnits of position.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Units of position.
- potentialThe electric potential
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The electric potential
- potential_unitsThe potential units.
C++ Type:std::string
Unit:(no unit assumed)
Controllable:No
Description:The potential units.
- rThe reflection coefficient
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The reflection coefficient
- 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
SchottkyEmissionBC
The electron flux boundary condition due to field ehanced thermionic emission (Schottky emission) (Based on Go (2012))
Overview
SchottkyEmissionBC
is an outflow boundary condition that assumes the electron current density is defined by field ehanced thermionic emission, Schottky emission.
Using a Richardson equation for the field emission, the electron current density is defined as
Where is the electron current density, is the Richardson coefficient, is the temperature of the cathode, is Boltzmann constant in units of eV/K, is the local work function, is the difference in the work funtion due to the electric field, is the local field, is the normal vector of the boundary, is the field enhancement factor, and is the potential. is defined such that the outflow is only defined when the drift velocity is directed towards the wall and zero otherwise. With the electron current density, the outward electron flux is defined as
Where is the outflow normal to the boundary, is the mobility coefficient of the ions, indicates the advection behavior ( for positively charged species and for negatively charged species), is the ion density, is the diffusion coefficient of ions, is the elemental charge, and is the ion induced secondary electron emission coefficient. is defined as the fraction of particles reflected by the surface.
When converting the density to logarithmic form and applying a scaling factor of the mesh and voltage, the strong form is given by
Where is the molar density of the specie in logarithmic form, is Avogadro's number, is the scaling factor of the potential, and is the scaling factor of the mesh.
Example Input File Syntax
[BCs]
[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
[]
[]
(test/tests/1d_dc/NonlocalPotentialBCWithSchottky.i)Input Parameters
- 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.
- relaxFalseUse relaxation for emission.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Use relaxation for emission.
- tau1e-09The time constant for ramping the boundary condition.
Default:1e-09
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The time constant for ramping the boundary condition.
- 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 BC'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 BC'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 BC'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 BC'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/Example3/Input.i)
- (test/tests/Schottky_emission/Example2/Input.i)
- (test/tests/Schottky_emission/Example1/Input.i)
- (test/tests/Schottky_emission/Example4/Input.i)
- (test/tests/reflections/Schottky/Input.i)
- (test/tests/Schottky_emission/Example4/Jac.i)
- (test/tests/Schottky_emission/PaschenLaw/Input.i)
- (test/tests/reflections/Schottky_400_V_10_um/Input.i)
- (test/tests/reflections/Schottky_300_V_5_um/Input.i)
- (test/tests/1d_dc/NonlocalPotentialBCWithSchottky.i)
References
- David B Go.
Theoretical analysis of ion-enhanced thermionic emission for low-temperature, non-equilibrium gas discharges.
Journal of Physics D: Applied Physics, 46(3):035202, 2012.
doi:10.1088/0022-3727/46/3/035202.[BibTeX]
@article{go2012theoretical, author = "Go, David B", title = "Theoretical analysis of ion-enhanced thermionic emission for low-temperature, non-equilibrium gas discharges", journal = "Journal of Physics D: Applied Physics", volume = "46", number = "3", pages = "035202", year = "2012", publisher = "IOP Publishing", doi = "10.1088/0022-3727/46/3/035202" }
(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
[]
[]
(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/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/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/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/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/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/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
[]
[]