- interp_elastic_coeffFalseWhether to interpolate the elastic collision townsend coefficient as a function of the mean energy. If false, coeffs are constant.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to interpolate the elastic collision townsend coefficient as a function of the mean energy. If false, coeffs are constant.
- property_tables_fileThe file containing interpolation tables for material properties.
C++ Type:FileName
Controllable:No
Description:The file containing interpolation tables for material properties.
- use_molesFalseWhether to use units of moles as opposed to # of molecules.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to use units of moles as opposed to # of molecules.
SimplifiedArgonChemistryCoefficients
Rate and Townsend coefficients for a simplified argon chemistry network (includes elastic collision, ionization, and excitation).
Overview
SimplifiedArgonChemistryCoefficients defines the coefficients for a simplified argon chemistry network. This includes both rate and Townsend coefficients, and threshold energies. The following are the properties and naming scheme that SimplifiedArgonChemistryCoefficients provides:
rate coefficients for elastic collision, ionization, and excitation, labeled as
kel,kiz, andkex,Townsend coefficients for elastic collision, ionization, and excitation, labeled as
alpha_el,alpha_iz, andalpha_ex, andthreshold energy for ionization and excitation, labeled as
EizandEex,
In addition to the argon chemistry, SimplifiedArgonChemistryCoefficients also defines the following:
argon mass, labeled as
massGas, andneutral argon gas density, labeled as
n_gas.
The coefficients used in this object can be found in the following:
the rate coefficients can be found in Lieberman and Lichtenberg (1994)
the Townsend coefficients are supplied using a Boltzmann solver and the Phelps database
Example Input File Syntax
[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
[gas_block]
type = SimplifiedArgonChemistryCoefficients<<<{"description": "Rate and Townsend coefficients for a simplified argon chemistry network (includes elastic collision, ionization, and excitation).", "href": "SimplifiedArgonChemistryCoefficients.html"}>>>
interp_elastic_coeff<<<{"description": "Whether to interpolate the elastic collision townsend coefficient as a function of the mean energy. If false, coeffs are constant."}>>> = true
electrons<<<{"description": "The electron density in log form"}>>> = em
electron_energy<<<{"description": "The mean electron energy density in log form"}>>> = mean_en
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 0
property_tables_file<<<{"description": "The file containing interpolation tables for material properties."}>>> = td_argon_chemistry.txt
[]
[](test/tests/1d_dc/mean_en_multi.i)Input Parameters
- T_gas300.0The background gas temperature in Kelvin.
Default:300.0
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The background gas temperature in Kelvin.
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Options:NONE, ELEMENT, SUBDOMAIN
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- declare_suffixAn optional suffix parameter that can be appended to any declared 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 declared properties. The suffix will be prepended with a '_' character.
- 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
- electronsThe electron density in log form
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The electron density in log form
- p_gas101000.0The background gas pressure in Pascals (defaulted to 1 standard atmosphere).
Default:101000.0
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The background gas pressure in Pascals (defaulted to 1 standard atmosphere).
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
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
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- search_methodnearest_node_connected_sidesChoice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes).
Default:nearest_node_connected_sides
C++ Type:MooseEnum
Options:nearest_node_connected_sides, all_proximate_sides
Controllable:No
Description:Choice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes).
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
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
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
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
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.
Material Property Retrieval Parameters
Input Files
- (test/tests/reflections/low_initial/Input.i)
- (test/tests/reflections/Schottky_300_V_5_um/Input.i)
- (test/tests/Schottky_emission/Example4/Jac.i)
- (test/tests/1d_dc/densities_mean_en.i)
- (test/tests/field_emission/field_emission.i)
- (test/tests/Schottky_emission/Example1/Input.i)
- (test/tests/Schottky_emission/PaschenLaw/Input.i)
- (test/tests/Schottky_emission/Example4/Input.i)
- (test/tests/reflections/high_initial/Input.i)
- (test/tests/DriftDiffusionAction/mean_en_no_actions.i)
- (test/tests/1d_dc/mean_en_multi.i)
- (test/tests/reflections/Schottky/Input.i)
- (test/tests/reflections/base/Input.i)
- (test/tests/DriftDiffusionAction/mean_en_actions.i)
- (test/tests/reflections/Schottky_400_V_10_um/Input.i)
- (test/tests/1d_dc/mean_en.i)
- (test/tests/1d_dc/NonlocalPotentialBCWithSchottky.i)
- (test/tests/Schottky_emission/Example3/Input.i)
- (test/tests/Schottky_emission/Example2/Input.i)
References
- Michael A Lieberman and Allan J Lichtenberg.
Principles of plasma discharges and materials processing.
MRS Bulletin, 30(12):899–901, 1994.[BibTeX]
@article{lieberman1994principles, author = "Lieberman, Michael A and Lichtenberg, Allan J", title = "Principles of plasma discharges and materials processing", journal = "MRS Bulletin", volume = "30", number = "12", pages = "899--901", year = "1994" }
(test/tests/1d_dc/mean_en_multi.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
line_search = 'bt'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
# print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[dof_map]
type = DOFMap
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
electron_energy = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
position_units = ${dom0Scale}
block = 0
[]
[ArEx_excitation]
type = ExcitationReaction
variable = ArEx
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
reactant = false
[]
[ArEx_deexcitation]
type = ExcitationReaction
variable = ArEx
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
reactant = true
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[ArEx_time_deriv]
type = ElectronTimeDerivative
variable = ArEx
block = 0
[]
[ArEx_diffusion]
type = CoeffDiffusion
variable = ArEx
block = 0
position_units = ${dom0Scale}
[]
[ArEx_log_stabilization]
type = LogStabilizationMoles
variable = ArEx
block = 0
offset = 30
[]
[ArTest_time_deriv]
type = ElectronTimeDerivative
variable = ArTest
block = 0
[]
[ArTest_diffusion]
type = CoeffDiffusion
variable = ArTest
block = 0
position_units = ${dom0Scale}
[]
[ArTest_log_stabilization]
type = LogStabilizationMoles
variable = ArTest
block = 0
[]
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[ArEx]
block = 0
[]
[ArTest]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ArEx_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ArTest_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[OHm_lin]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_lin OHm_lin' # H3Op_lin OHm_lin'
expression = '-emliq_lin - OHm_lin' # 'H3Op_lin - em_lin - OHm_lin'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityMoles
variable = em_lin
density = em
block = 0
[]
[emliq_lin]
type = DensityMoles
variable = emliq_lin
density = emliq
block = 1
[]
[Arp_lin]
type = DensityMoles
variable = Arp_lin
density = Arp
block = 0
[]
[ArEx_lin]
type = DensityMoles
variable = ArEx_lin
density = ArEx
block = 0
[]
[ArTest_lin]
type = DensityMoles
variable = ArTest_lin
density = ArTest
block = 0
[]
[OHm_lin]
type = DensityMoles
variable = OHm_lin
density = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
density = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
density = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
density = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
density = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[ArEx_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = ArEx
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[ArEx_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = ArEx
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[ArTest_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = ArTest
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[ArTest_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = ArTest
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[ArEx_ic]
type = ConstantIC
variable = ArEx
value = -16
#value = -21
block = 0
[]
[ArTest_ic]
type = ConstantIC
variable = ArTest
value = -31
#value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
block = 0
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = ArEx
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = ArTest
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[water_block]
type = Water
aqueous_electrons = emliq
block = 1
[]
[field_solver]
type = FieldSolverMaterial
potential = potential
block = '0 1'
[]
[]
(test/tests/reflections/low_initial/Input.i)
dom0Scale = 1
dom0Size = 6E-6 #m
vhigh = -175E-3 #kV
[GlobalParams]
# offset = 20
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 5e-14
nl_abs_tol = 1e-13
steady_state_start_time = 1E-6
dtmin = 1e-18
dtmax = 0.1E-7
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
electrons = em
variable = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [em_log_stabilization]
# type = LogStabilizationMoles
# variable = em
# block = 0
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [Arp_log_stabilization]
# type = LogStabilizationMoles
# variable = Arp
# block = 0
# []
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
# [mean_en_log_stabilization]
# type = LogStabilizationMoles
# variable = mean_en
# block = 0
# offset = 15
# []
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = DensityFromLog
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityFromLog
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
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'
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
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -36
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -36
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -36
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
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
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
electrons = em
variable = em
electron_energy = 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
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = 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
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = DensityFromLog
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityFromLog
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = 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'
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
tau = 100E-9
relax = true
emission_coeffs = 0.02
cathode_temperature = 1273
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
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'
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
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyAdvectionBC
variable = mean_en
boundary = 'left'
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
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[gas_block_field_emission]
type = FieldEmissionCoefficients
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
block = 0
[]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
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
electrons = em
ions = Arp
electron_energy = 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
# # block = 0
# # []
# [em_time_deriv]
# type = ElectronTimeDerivative
# variable = em
# block = 0
# []
# [em_advection]
# type = EFieldAdvection
# variable = em
# 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
# electrons = em
# variable = em
# electron_energy = 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
# position_units = ${dom0Scale}
# block = 0
# []
# [Arp_diffusion]
# type = CoeffDiffusion
# variable = Arp
# block = 0
# position_units = ${dom0Scale}
# []
# [Arp_ionization]
# type = IonsFromIonization
# variable = Arp
# electrons = em
# electron_energy = 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
# 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
# electrons = em
# block = 0
# position_units = ${dom0Scale}
# []
# [mean_en_ionization]
# type = ElectronEnergyLossFromIonization
# variable = mean_en
# electrons = em
# block = 0
# position_units = ${dom0Scale}
# []
# [mean_en_elastic]
# type = ElectronEnergyLossFromElastic
# variable = mean_en
# electrons = em
# block = 0
# position_units = ${dom0Scale}
# []
# [mean_en_excitation]
# type = ElectronEnergyLossFromExcitation
# variable = mean_en
# electrons = 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = DensityFromLog
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityFromLog
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = 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'
# ions = Arp
# electron_energy = mean_en
# r = 1
# position_units = ${dom0Scale}
# # tau = ${relaxTime}
# relax = true
# []
# # [em_physical_left]
# # type = HagelaarElectronBC
# # variable = em
# # boundary = 'left'
# # electron_energy = mean_en
# # r = 0
# # position_units = ${dom0Scale}
# # []
# [em_physical_right]
# type = HagelaarElectronAdvectionBC
# variable = em
# boundary = right
# 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'
# 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
# r = 0
# position_units = ${dom0Scale}
# []
# ## Mean energy boundary conditions ##
# [mean_en_physical_left]
# type = HagelaarEnergyBC
# variable = mean_en
# boundary = 'left'
# electrons = em
# ions = Arp
# r = 0
# position_units = ${dom0Scale}
# []
# [mean_en_physical_right]
# type = HagelaarEnergyBC
# variable = mean_en
# boundary = right
# 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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
block = 0
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[]
(test/tests/1d_dc/densities_mean_en.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
# dom0Scale=1.1
# dom1Scale=1.1
[GlobalParams]
offset = 20
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
num_steps = 1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
# print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[dof_map]
type = DOFMap
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
# electrode_area = 1.1
# ballast_resist = 1.1
# e = 1.1
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
electron_energy = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[OHm_lin]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_lin OHm_lin' # H3Op_lin OHm_lin'
expression = '-emliq_lin - OHm_lin' # 'H3Op_lin - em_lin - OHm_lin'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityFromLog
variable = em_lin
density_log = em
block = 0
[]
[emliq_lin]
type = DensityFromLog
variable = emliq_lin
density_log = emliq
block = 1
[]
[Arp_lin]
type = DensityFromLog
variable = Arp_lin
density_log = Arp
block = 0
[]
[OHm_lin]
type = DensityFromLog
variable = OHm_lin
density_log = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
density = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
density = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
density = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
density = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
# [em_ic]
# type = RandomIC
# variable = em
# block = 0
# min = -21.5
# max = -20.5
# []
# [emliq_ic]
# type = RandomIC
# variable = emliq
# block = 1
# min = -21.5
# max = -20.5
# []
# [Arp_ic]
# type = RandomIC
# variable = Arp
# block = 0
# min = -21.5
# max = -20.5
# []
# [mean_en_ic]
# type = RandomIC
# variable = mean_en
# block = 0
# min = -20.5
# max = -19.5
# []
# type = RandomIC
# variable = OHm
# block = 1
# min = -16.1
# max = -15.1
# []
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = 1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
block = 0
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[water_block]
type = Water
aqueous_electrons = emliq
block = 1
[]
[field_solver]
type = FieldSolverMaterial
potential = potential
block = '0 1'
[]
[]
(test/tests/field_emission/field_emission.i)
dom0Scale = 1
dom0Size = 5E-6 #m
vhigh = -0.15 #kV
[GlobalParams]
offset = 20
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'micro_fe.msh'
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 6E-6
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-15
dtmax = 0.01E-7
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-12
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
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
electrons = em
variable = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
# [em_advection_stabilization]
# type = EFieldArtDiff
# variable = em
# block = 0
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
# [Arp_advection_stabilization]
# type = EFieldArtDiff
# variable = Arp
# block = 0
# []
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = PowerDep
density = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = PowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = DensityFromLog
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityFromLog
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = Current
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = Current
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = EFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = DiffusiveFlux
density = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ip = Arp
data_provider = data_provider
em = em
mean_en = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
mean_en = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
em = em
ip = Arp
r = 0.99
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
mean_en = mean_en
r = 0
position_units = ${dom0Scale}
[]
# [sec_electrons_left]
# type = SecondaryElectronBC
# variable = em
# boundary = 'left'
# ip = Arp
# mean_en = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[FieldEmission_left]
type = FieldEmissionBC
variable = em
boundary = 'left'
ip = Arp
mean_en = mean_en
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
em = em
ip = Arp
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
# [em_ic]
# type = RandomIC
# variable = em
# block = 0
# []
# [Arp_ic]
# type = RandomIC
# variable = Arp
# block = 0
# []
# [mean_en_ic]
# type = RandomIC
# variable = mean_en
# block = 0
# []
# [potential_ic]
# type = RandomIC
# variable = potential
# []
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'period dutyCycle riseTime VHigh VLow'
symbol_values = '3E-6 0.1 5E-7 ${vhigh} -0.001'
expression = 'if((t % period) < dutyCycle*period , VHigh ,
if((t % period) < dutyCycle*period + riseTime, ((VLow - VHigh)/riseTime) * ((t % period) - period * dutyCycle) + VHigh,
if((t % period) < period - riseTime , VLow ,
if((t % period) < period , ((VHigh - VLow)/riseTime) * ((t % period) - period) + VHigh ,
0))))'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[cathode_temperature]
type = ParsedFunction
expression = 1500
[]
[]
[Materials]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[gas_block_field_emission]
type = FieldEmissionCoefficients
user_work_function = 4.55 # eV
user_field_enhancement = 55
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
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
electrons = em
variable = em
electron_energy = 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
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = 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
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = DensityFromLog
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityFromLog
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = 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'
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
# tau = 10E-6
relax = true
emission_coeffs = 0.02
cathode_temperature = 1273
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
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'
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
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[gas_block_field_emission]
type = FieldEmissionCoefficients
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
block = 0
[]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
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
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
electrons = em
variable = em
electron_energy = 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
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = 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
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = DensityFromLog
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityFromLog
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = 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'
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
# tau = 5E-6
relax = true
emission_coeffs = 0.02
cathode_temperature = 1273
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
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'
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
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[gas_block_field_emission]
type = FieldEmissionCoefficients
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
block = 0
[]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
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
electrons = em
ions = Arp
electron_energy = 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
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
electrons = em
variable = em
electron_energy = 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
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = 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
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = em
block = 0
[]
[Arp_lin]
type = DensityMoles
# convert_moles = true
variable = Arp_lin
density = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = 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'
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
tau = ${relaxTime}
relax = true
emission_coeffs = 0.02
cathode_temperature = 1273
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
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'
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
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[gas_block_field_emission]
type = FieldEmissionCoefficients
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
block = 0
[]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
block = 0
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[]
(test/tests/reflections/high_initial/Input.i)
dom0Scale = 1
dom0Size = 6E-6 #m
vhigh = -175E-3 #kV
[GlobalParams]
# offset = 20
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 5e-14
nl_abs_tol = 1e-13
steady_state_start_time = 1E-6
dtmin = 1e-18
dtmax = 0.1E-7
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
electrons = em
variable = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [em_log_stabilization]
# type = LogStabilizationMoles
# variable = em
# block = 0
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [Arp_log_stabilization]
# type = LogStabilizationMoles
# variable = Arp
# block = 0
# []
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
# [mean_en_log_stabilization]
# type = LogStabilizationMoles
# variable = mean_en
# block = 0
# offset = 15
# []
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = DensityFromLog
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityFromLog
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
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'
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
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -30
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -30
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -30
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[]
(test/tests/DriftDiffusionAction/mean_en_no_actions.i)
#This is the input file that supplied the gold output file.
#It is the same as the input file in tests/1d_dc/mean_en.i,
#execpt some of the Aux Variables are renamed for the Action test
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
# petsc_options_iname = '-pc_type -sub_pc_type'
# petsc_options_value = 'asm lu'
# petsc_options_iname = '-snes_type'
# petsc_options_value = 'test'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
# dt = 1.1
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
file_base = out
perf_graph = true
[out]
type = Exodus
execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
# electrode_area = 1.1
# ballast_resist = 1.1
# e = 1.1
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
electron_energy = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
# [em_advection_stabilization]
# type = EFieldArtDiff
# variable = em
# block = 0
# []
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
# [emliq_advection_stabilization]
# type = EFieldArtDiff
# variable = emliq
# block = 1
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
# [Arp_advection_stabilization]
# type = EFieldArtDiff
# variable = Arp
# block = 0
# []
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
# [OHm_advection_stabilization]
# type = EFieldArtDiff
# variable = OHm
# block = 1
# []
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15.0
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
#[x]
# order = CONSTANT
# family = MONOMIAL
#[]
[position0]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[position1]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
#[em_lin]
# order = CONSTANT
# family = MONOMIAL
# block = 0
#[]
[em_density]
order = CONSTANT
family = MONOMIAL
block = 0
[]
#[emliq_lin]
# order = CONSTANT
# family = MONOMIAL
# block = 1
#[]
[emliq_density]
order = CONSTANT
family = MONOMIAL
block = 1
[]
#[Arp_lin]
# order = CONSTANT
# family = MONOMIAL
# block = 0
#[]
[Arp_density]
order = CONSTANT
family = MONOMIAL
block = 0
[]
#[OHm_lin]
# block = 1
# order = CONSTANT
# family = MONOMIAL
#[]
[OHm_density]
block = 1
order = CONSTANT
family = MONOMIAL
[]
#[Efield]
# order = CONSTANT
# family = MONOMIAL
#[]
[EFieldx0]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldx1]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = mean_en
block = 0
[]
[x_g]
type = Position
variable = position0
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = position1
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_density Arp_density'
expression = 'Arp_density - em_density'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_density OHm_density'
expression = '-emliq_density - OHm_density'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityMoles
variable = em_density
density = em
block = 0
[]
[emliq_lin]
type = DensityMoles
variable = emliq_density
density = emliq
block = 1
[]
[Arp_lin]
type = DensityMoles
variable = Arp_density
density = Arp
block = 0
[]
[OHm_lin]
type = DensityMoles
variable = OHm_density
density = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
variable = EFieldx0
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
variable = EFieldx1
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
density = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
density = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
density = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
density = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
block = 0
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[gas_field_solver]
type = FieldSolverMaterial
potential = potential
block = 0
[]
[water_block]
type = Water
aqueous_electrons = emliq
block = 1
[]
[water_field_solver]
type = FieldSolverMaterial
potential = potential
block = 1
[]
[]
(test/tests/1d_dc/mean_en_multi.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
line_search = 'bt'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
# print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[dof_map]
type = DOFMap
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
electron_energy = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
position_units = ${dom0Scale}
block = 0
[]
[ArEx_excitation]
type = ExcitationReaction
variable = ArEx
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
reactant = false
[]
[ArEx_deexcitation]
type = ExcitationReaction
variable = ArEx
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
reactant = true
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[ArEx_time_deriv]
type = ElectronTimeDerivative
variable = ArEx
block = 0
[]
[ArEx_diffusion]
type = CoeffDiffusion
variable = ArEx
block = 0
position_units = ${dom0Scale}
[]
[ArEx_log_stabilization]
type = LogStabilizationMoles
variable = ArEx
block = 0
offset = 30
[]
[ArTest_time_deriv]
type = ElectronTimeDerivative
variable = ArTest
block = 0
[]
[ArTest_diffusion]
type = CoeffDiffusion
variable = ArTest
block = 0
position_units = ${dom0Scale}
[]
[ArTest_log_stabilization]
type = LogStabilizationMoles
variable = ArTest
block = 0
[]
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[ArEx]
block = 0
[]
[ArTest]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ArEx_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ArTest_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[OHm_lin]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_lin OHm_lin' # H3Op_lin OHm_lin'
expression = '-emliq_lin - OHm_lin' # 'H3Op_lin - em_lin - OHm_lin'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityMoles
variable = em_lin
density = em
block = 0
[]
[emliq_lin]
type = DensityMoles
variable = emliq_lin
density = emliq
block = 1
[]
[Arp_lin]
type = DensityMoles
variable = Arp_lin
density = Arp
block = 0
[]
[ArEx_lin]
type = DensityMoles
variable = ArEx_lin
density = ArEx
block = 0
[]
[ArTest_lin]
type = DensityMoles
variable = ArTest_lin
density = ArTest
block = 0
[]
[OHm_lin]
type = DensityMoles
variable = OHm_lin
density = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
density = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
density = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
density = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
density = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[ArEx_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = ArEx
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[ArEx_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = ArEx
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[ArTest_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = ArTest
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[ArTest_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = ArTest
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[ArEx_ic]
type = ConstantIC
variable = ArEx
value = -16
#value = -21
block = 0
[]
[ArTest_ic]
type = ConstantIC
variable = ArTest
value = -31
#value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
block = 0
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = ArEx
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = ArTest
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[water_block]
type = Water
aqueous_electrons = emliq
block = 1
[]
[field_solver]
type = FieldSolverMaterial
potential = potential
block = '0 1'
[]
[]
(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
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
electrons = em
variable = em
electron_energy = 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
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = 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
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = 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
# 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = DensityFromLog
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityFromLog
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = 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'
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.02
cathode_temperature = 1273
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
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'
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
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[gas_block_field_emission]
type = FieldEmissionCoefficients
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
block = 0
[]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[]
(test/tests/reflections/base/Input.i)
dom0Scale = 1
dom0Size = 6E-6 #m
vhigh = -175E-3 #kV
[GlobalParams]
# offset = 20
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 1e-15
nl_abs_tol = 0.5e-12
steady_state_start_time = 1E-6
dtmin = 1e-18
dtmax = 0.1E-7
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
electrons = em
variable = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [em_log_stabilization]
# type = LogStabilizationMoles
# variable = em
# block = 0
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [Arp_log_stabilization]
# type = LogStabilizationMoles
# variable = Arp
# block = 0
# []
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
# [mean_en_log_stabilization]
# type = LogStabilizationMoles
# variable = mean_en
# block = 0
# offset = 15
# []
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = DensityFromLog
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityFromLog
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
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'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 1
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
r = 1
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -35
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -35
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -35
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[]
(test/tests/DriftDiffusionAction/mean_en_actions.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20.0
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
# petsc_options_iname = '-pc_type -sub_pc_type'
# petsc_options_value = 'asm lu'
# petsc_options_iname = '-snes_type'
# petsc_options_value = 'test'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
# dt = 1.1
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
file_base = out
perf_graph = true
[out]
type = Exodus
execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
# electrode_area = 1.1
# ballast_resist = 1.1
# e = 1.1
[]
[]
#The potential needs to be defined outside of the Action,
#since it is present in both Blocks
[Variables]
[potential]
[]
[]
#Action the supplies the drift-diffusion equations for both Blocks,
#This action also adds JouleHeating and the ChargeSourceMoles_KV Kernels
[DriftDiffusionAction]
[Plasma]
electrons = em
ions = Arp
field = potential
is_field_unique = false
electron_energy = mean_en
using_offset = true
position_units = ${dom0Scale}
block = 0
additional_outputs = 'ElectronTemperature Current EField'
[]
[Water]
electrons = emliq
ions = OHm
field = potential
is_field_unique = false
using_offset = true
position_units = ${dom1Scale}
block = 1
additional_outputs = 'Current EField'
[]
[]
#The Kernels supply the sources terms
[Kernels]
[em_ionization]
type = ElectronsFromIonization
variable = em
electron_energy = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[]
[AuxVariables]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_density Arp_density'
expression = 'Arp_density - em_density'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_density OHm_density'
expression = '-emliq_density - OHm_density'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
density = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
density = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
position_units = ${dom0Scale}
secondary_electron_energy = 3
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
block = 0
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[water_block]
type = Water
aqueous_electrons = emliq
block = 1
[]
[]
(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
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
electrons = em
variable = em
electron_energy = 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
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = 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
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = DensityFromLog
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityFromLog
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = 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'
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.02
cathode_temperature = 1273
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
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'
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
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[gas_block_field_emission]
type = FieldEmissionCoefficients
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
block = 0
[]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[]
(test/tests/1d_dc/mean_en.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
#petsc_options = '-snes_converged_reason -snes_linesearch_monitor -snes_test_jacobian'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
# petsc_options_iname = '-pc_type -sub_pc_type'
# petsc_options_value = 'asm lu'
# petsc_options_iname = '-snes_type'
# petsc_options_value = 'test'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
# dt = 1.1
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
# print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[dof_map]
type = DOFMap
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
electron_energy = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[OHm_lin]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_lin OHm_lin' # H3Op_lin OHm_lin'
expression = '-emliq_lin - OHm_lin' # 'H3Op_lin - em_lin - OHm_lin'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityMoles
variable = em_lin
density = em
block = 0
[]
[emliq_lin]
type = DensityMoles
variable = emliq_lin
density = emliq
block = 1
[]
[Arp_lin]
type = DensityMoles
variable = Arp_lin
density = Arp
block = 0
[]
[OHm_lin]
type = DensityMoles
variable = OHm_lin
density = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
density = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
density = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
density = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
density = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
preset = false
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
block = 0
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[water_block]
type = Water
aqueous_electrons = emliq
block = 1
[]
[field_solver]
type = FieldSolverMaterial
potential = potential
block = '0 1'
[]
[]
(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
electrons = em
ions = Arp
electron_energy = 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
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
electrons = em
variable = em
electron_energy = 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
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = 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
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = em
block = 0
[]
[Arp_lin]
type = DensityMoles
# convert_moles = true
variable = Arp_lin
density = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = 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'
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
tau = ${relaxTime}
relax = true
emission_coeffs = 0.02
cathode_temperature = 1273
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# mean_en = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
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'
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
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
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_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[gas_block_field_emission]
type = FieldEmissionCoefficients
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
block = 0
[]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[]
(test/tests/Schottky_emission/Example3/Input.i)
dom0Scale = 1
dom0Size = 2E-6 #m
vhigh = -230E-3 #kV
# relaxTime = 50E-6 #s
threeTimesRelaxTime = 150E-6 #s
[GlobalParams]
# offset = 25
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = ${threeTimesRelaxTime}
petsc_options = '-snes_converged_reason -snes_linesearch_monitor -snes_ksp_ew'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda -ksp_gmres_restart'
petsc_options_value = 'gamg NONZERO 1.e-10 preonly 1e-3 100'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dtmin = 1e-25
# dtmax = 1E-6
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e0
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 20
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 20
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 35
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
electrons = em
variable = em
electron_energy = 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
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = 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
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = DensityFromLog
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityFromLog
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = 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'
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
# tau = ${relaxTime}
relax = true
emission_coeffs = 0.02
cathode_temperature = 1273
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
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'
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
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[gas_block_field_emission]
type = FieldEmissionCoefficients
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
block = 0
[]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
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
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
electrons = em
variable = em
electron_energy = 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
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
electrons = em
electron_energy = 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
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
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
electrons = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
electrons = 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 = em
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
electrons = em
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
electrons = em
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
electrons = em
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electrons = em
electron_energy = 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 = DensityFromLog
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityFromLog
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
density = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
density = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
density = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density = 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'
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
# tau = 10E-6
relax = true
emission_coeffs = 0.02
cathode_temperature = 1273
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
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'
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
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[gas_block_field_emission]
type = FieldEmissionCoefficients
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
block = 0
[]
[gas_block_electrons]
type = ElectronTransportCoefficients
interp_trans_coeffs = true
ramp_trans_coeffs = false
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_electrons.txt
p_gas = 1.01e5
[]
[gas_permittivity]
type = ElectrostaticPermittivity
potential = potential
[]
[gas_block]
type = SimplifiedArgonChemistryCoefficients
interp_elastic_coeff = true
electrons = em
electron_energy = mean_en
block = 0
property_tables_file = td_argon_chemistry.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[]