- position_unitsUnits of position.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Units of position.
- variableThe name of the variable that this object applies to
C++ Type:AuxVariableName
Unit:(no unit assumed)
Controllable:No
Description:The name of the variable that this object applies to
Position
Produces an elemental auxiliary variable useful for plotting against other elemental auxiliary variables. Mesh points automatically output by Zapdos only work for plotting nodal variables. Since almost all auxiliary variables are elemental, this AuxKernel is very important
Overview
Position
returns the characteristic scaling length for a given direction. Zapdos users can uniformly scale the position units for a given set of equations. This means a user can construct a normalized mesh of some factor and scale all equations to that same factor. Position
is then used to plot against any spatial results.
Example Input File Syntax
An example of how to use Position
can be found in the test file Lymberopoulos_with_argon_metastables.i
.
[AuxKernels]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
[]
[]
(test/tests/Lymberopoulos_rf_discharge/Lymberopoulos_with_argon_metastables.i)Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Unit:(no unit assumed)
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Unit:(no unit assumed)
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- check_boundary_restrictedTrueWhether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh
- component0The component of position. (0 = x, 1 = y, 2 = z)
Default:0
C++ Type:int
Unit:(no unit assumed)
Controllable:No
Description:The component of position. (0 = x, 1 = y, 2 = z)
- execute_onLINEAR TIMESTEP_ENDThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
Default:LINEAR TIMESTEP_END
C++ Type:ExecFlagEnum
Unit:(no unit assumed)
Options:NONE, INITIAL, LINEAR, NONLINEAR_CONVERGENCE, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, PRE_DISPLACE
Controllable:No
Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
Input Files
- (test/tests/automatic_differentiation/ad_argon.i)
- (test/tests/Conference_Syntax_Tests/Lymberopoulos_with_argon_metastables_2D_At1Torr.i)
- (test/tests/DriftDiffusionAction/RF_Plasma_no_actions.i)
- (test/tests/accelerations/Acceleration_By_Shooting_Method.i)
- (test/tests/accelerations/Acceleration_By_Averaging_main.i)
- (test/tests/1d_dc/mean_en.i)
- (test/tests/Schottky_emission/Example1/Input.i)
- (test/tests/DriftDiffusionAction/RF_Plasma_actions.i)
- (tutorial/tutorial01-Diffusion/diffusion-only.i)
- (test/tests/surface_charge/dbd_test.i)
- (test/tests/water_only/water_only.i)
- (test/tests/Schottky_emission/Example3/Input.i)
- (test/tests/DriftDiffusionAction/2D_RF_Plasma_no_actions.i)
- (test/tests/Schottky_emission/Example2/Input.i)
- (test/tests/1d_dc/mean_en_multi.i)
- (test/tests/reflections/high_initial/Input.i)
- (test/tests/crane_action/townsend_units.i)
- (test/tests/reflections/Schottky_400_V_10_um/Input.i)
- (test/tests/1d_dc/densities_mean_en.i)
- (test/tests/reflections/Schottky_300_V_5_um/Input.i)
- (test/tests/Lymberopoulos_rf_discharge/Lymberopoulos_with_argon_metastables_2D_At100mTorr_CoarseMesh.i)
- (test/tests/accelerations/Acceleration_By_Shooting_Method_SensitivityMatrix.i)
- (test/tests/reflections/low_initial/Input.i)
- (test/tests/Lymberopoulos_rf_discharge/Lymberopoulos_with_argon_metastables.i)
- (test/tests/Schottky_emission/Example4/Input.i)
- (test/tests/DriftDiffusionAction/2D_RF_Plasma_actions.i)
- (test/tests/reflections/base/Input.i)
- (test/tests/DriftDiffusionAction/mean_en_actions.i)
- (test/tests/Schottky_emission/Example4/Jac.i)
- (test/tests/Conference_Syntax_Tests/Lymberopoulos_with_argon_metastables.i)
- (test/tests/Schottky_emission/PaschenLaw/Input.i)
- (tutorial/tutorial06-Building-InputFile/RF_Plasma_Blank.i)
- (test/tests/crane_action/rate_units.i)
- (tutorial/tutorial06-Building-InputFile/RF_Plasma_WithOut_Metastables.i)
- (test/tests/DriftDiffusionAction/mean_en_no_actions.i)
- (tutorial/tutorial03-PotentialWithIonLoss/ion-loss-for-IonOnlyPlasma.i)
- (test/tests/reflections/Schottky/Input.i)
- (tutorial/tutorial04-PressureVsTe/RF_Plasma_WithOut_Metastables-1Torr.i)
- (test/tests/Conference_Syntax_Tests/Lymberopoulos_with_argon_metastables_2D_At100mTorr.i)
- (test/tests/field_emission/field_emission.i)
- (test/tests/1d_dc/NonlocalPotentialBCWithSchottky.i)
(test/tests/Lymberopoulos_rf_discharge/Lymberopoulos_with_argon_metastables.i)
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Lymberopoulos.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
[]
[Variables]
[em]
[]
[Ar+]
[]
[Ar*]
[]
[mean_en]
[]
[potential]
[]
[]
[Kernels]
#Electron Equations (Same as in paper)
#Time Derivative term of electron
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons
[em_diffusion]
type = CoeffDiffusion
variable = em
position_units = ${dom0Scale}
[]
#Net electron production from ionization
[em_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Ion Equations (Same as in paper)
#Time Derivative term of the ions
[Ar+_time_deriv]
type = ElectronTimeDerivative
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Net ion production from ionization
[Ar+_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Excited Equations (Same as in paper)
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = ElectronTimeDerivative
variable = Ar*
[]
#Diffusion term of excited Argon
[Ar*_diffusion]
type = CoeffDiffusion
variable = Ar*
position_units = ${dom0Scale}
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Voltage Equations (Same as in paper)
#Voltage term in Poissons Eqaution
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom0Scale}
[]
#Ion term in Poissons Equation
[Ar+_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar+
[]
#Electron term in Poissons Equation
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
[]
#Since the paper uses electron temperature as a variable, the energy equation is in
#a different form but should be the same physics
#Time Derivative term of electron energy
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
position_units = ${dom0Scale}
[]
#Energy loss from ionization
[Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
[]
[AuxVariables]
#[emDeBug]
#[]
#[Ar+_DeBug]
#[]
#[Ar*_DeBug]
#[]
#[mean_enDeBug]
#[]
[Te]
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Ar]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[exRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[swRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[quRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
#[emDeBug]
# type = DebugResidualAux
# variable = emDeBug
# debug_variable = em
# #execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
#[]
#[Ar+_DeBug]
# type = DebugResidualAux
# variable = Ar+_DeBug
# debug_variable = Ar+
# #execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
#[]
#[mean_enDeBug]
# type = DebugResidualAux
# variable = mean_enDeBug
# debug_variable = mean_en
# #execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
#[]
#[Ar*_DeBug]
# type = DebugResidualAux
# variable = Ar*_DeBug
# debug_variable = Ar*
# #execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
#[]
[emRate]
type = ProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ProcRateForRateCoeff
variable = exRate
v = em
w = Ar*
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[Te]
type = ElectronTemperature
variable = Te
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
[]
[Ar+_lin]
type = DensityMoles
variable = Ar+_lin
density_log = Ar+
[]
[Ar*_lin]
type = DensityMoles
variable = Ar*_lin
density_log = Ar*
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e22
value = -2.928623
execute_on = INITIAL
[]
[Efield_calc]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
potential = potential
density_log = Ar+
variable = Current_Ar
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition, same as in paper
[potential_left]
type = FunctionDirichletBC
variable = potential
boundary = 'left'
function = potential_bc_func
preset = false
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = 'right'
value = 0
preset = false
[]
#New Boundary conditions for electons, same as in paper
[em_physical_right]
type = LymberopoulosElectronBC
variable = em
boundary = 'right'
emission_coeffs = 0.01
#gamma = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[em_physical_left]
type = LymberopoulosElectronBC
variable = em
boundary = 'left'
emission_coeffs = 0.01
#gamma = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'left'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
#(except the metastables are not set to zero, since Zapdos uses log form)
[Ar*_physical_right_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'right'
value = 100
[]
[Ar*_physical_left_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'left'
value = 100
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_right]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'right'
[]
[mean_en_physical_left]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'left'
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[Ar*_ic]
type = FunctionIC
variable = Ar*
function = density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = '0.100*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = '0.100 * (25.4e-3 - x)'
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log(3./2.) + log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_electron_mobility = 30.0
user_electron_diffusion_coeff = 119.8757763975
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 0.144409938
diffusivity = 6.428571e-3
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-3
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_0]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excitation.txt'
reaction = 'em + Ar -> em + Ar*'
electrons = em
[]
[reaction_1]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_ionization.txt'
reaction = 'em + Ar -> em + em + Ar+'
electrons = em
[]
[reaction_2]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_deexcitation.txt'
reaction = 'em + Ar* -> em + Ar'
electrons = em
[]
[reaction_3]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excited_ionization.txt'
reaction = 'em + Ar* -> em + em + Ar+'
electrons = em
[]
[reaction_4]
type = GenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = GenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = GenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = GenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-42
reaction_rate_value = 398909.324
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
#end_time = 0.00737463126
end_time = 3e-7
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 fgmres 1e-3'
nl_rel_tol = 1e-08
#nl_abs_tol = 7.6e-5 #Commit out do to test falure on Mac
dtmin = 1e-14
l_max_its = 20
#Time steps based on the inverse of the plasma frequency
[TimeSteppers]
[Postprocessor]
type = PostprocessorDT
postprocessor = InversePlasmaFreq
[]
[]
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/automatic_differentiation/ad_argon.i)
dom0Scale = 1e-3
[GlobalParams]
offset = 30
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'ad_argon.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
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
automatic_scaling = true
compute_scaling_once = false
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
line_search = 'basic'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu NONZERO 1.e-10'
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
dtmin = 1e-18
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 30
[]
[]
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
execute_on = 'final'
[]
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[Arex_time_deriv]
type = TimeDerivativeLog
variable = Ar*
block = 0
[]
[Arex_diffusion]
type = CoeffDiffusion
variable = Ar*
block = 0
position_units = ${dom0Scale}
[]
[Arex_log_stabilization]
type = LogStabilizationMoles
variable = Ar*
block = 0
#offset = 25
[]
[em_time_deriv]
type = TimeDerivativeLog
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_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
[]
[Ar2p_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar2p
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = TimeDerivativeLog
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[Ar2p_time_deriv]
#type = ElectronTimeDerivative
type = TimeDerivativeLog
variable = Ar2p
block = 0
[]
[Ar2p_advection]
type = EFieldAdvection
variable = Ar2p
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Ar2p_diffusion]
type = CoeffDiffusion
variable = Ar2p
block = 0
position_units = ${dom0Scale}
[]
[Ar2p_log_stabilization]
type = LogStabilizationMoles
variable = Ar2p
block = 0
[]
[mean_en_time_deriv]
type = TimeDerivativeLog
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
initial_condition = -24
block = 0
[]
[Arp]
initial_condition = -24.69314718056
block = 0
[]
[Ar*]
initial_condition = -26
block = 0
[]
[Ar2p]
initial_condition = -24.69314718056
block = 0
[]
[mean_en]
block = 0
initial_condition = -24
[]
[]
[AuxVariables]
[Arex_lin]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[Ar2p_lin]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[Ar]
block = 0
order = CONSTANT
family = MONOMIAL
initial_condition = 3.70109
[]
[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
[]
[Current_Ar2p]
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
[]
[]
[AuxKernels]
[Arex_lin]
type = DensityMoles
variable = Arex_lin
density_log = Ar*
block = 0
[]
[Ar2p_lin]
type = DensityMoles
variable = Ar2p_lin
density_log = Ar2p
block = 0
[]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin Ar2p_lin'
expression = 'Arp_lin + Ar2p_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp Current_Ar2p'
expression = 'Current_em + Current_Arp + Current_Ar2p'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityMoles
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Ar2p]
type = ADCurrent
potential = potential
density_log = Ar2p
variable = Current_Ar2p
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'right'
potential = potential
electrons = em
r = 0.0
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
ions = 'Arp Ar2p'
r = 0
emission_coeffs = '0.05 0.05'
position_units = ${dom0Scale}
secondary_electron_energy = 3
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = 'Arp Ar2p'
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = '0.05 0.05'
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
preset = false
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'right'
potential = potential
electron_energy = mean_en
r = 0.0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'right'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'right'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Ar2p_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Ar2p
boundary = 'right'
r = 0
position_units = ${dom0Scale}
[]
[Ar2p_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Ar2p
boundary = 'right'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Ar2p_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Ar2p
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Ar2p_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Ar2p
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = -0.8
[]
[potential_ic_func]
type = ParsedFunction
expression = '-0.8 * (1 - x)'
[]
[]
[Materials]
[electron_moments]
type = ADGasElectronMoments
block = 0
em = em
mean_en = mean_en
property_tables_file = 'argon_chemistry_rates/electron_moments.txt'
[]
[gas_constants]
type = GenericConstantMaterial
block = 0
prop_names = ' e N_A k_boltz eps T_gas massem p_gas n_gas se_coeff se_energy'
prop_values = '1.6e-19 6.022e23 1.38e-23 8.854e-12 300 9.11e-31 1.01e5 40.4915 0.05 3.'
[]
[ad_gas_constants]
type = ADGenericConstantMaterial
block = 0
prop_names = 'diffpotential'
prop_values = '8.85e-12'
[]
[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 = Ar2p
heavy_species_mass = 1.328e-25
heavy_species_charge = 1.0
block = 0
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
block = 0
[]
[gas_species_3]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
block = 0
[]
[]
[Reactions]
# This argon reaction network based on a ZDPlasKin example:
# zdplaskin.laplace.univ-tlse.fr
# Example: "Micro-cathode sustained discharged in Ar"
[Argon]
species = 'em Arp Ar2p Ar*'
aux_species = 'Ar'
reaction_coefficient_format = 'townsend'
gas_species = 'Ar'
electron_energy = 'mean_en'
electron_density = 'em'
include_electrons = true
file_location = 'argon_chemistry_rates'
equation_constants = 'Tgas'
equation_values = '300'
# For function-based reactions (e.g. those whose rate coefficients are
# enclosed in curly braces, {}), the e_temp auxiliary variable is
# named as a variable. Note that while e_temp is an AuxVariable, it does
# depend on nonlinear variables and therefore should contribute to the
# jacobian of any functions which depend on it.
# At the moment this jacobian contribution is not included, but the
# contribution is minimal compared to advection and diffusion so we
# can get away with a NEWTON solver in this case.
#
# For more complex reaction networks with many functions that depend on
# electron temperature, it may be necessary to use PJFNK instead of
# NEWTON.
equation_variables = 'e_temp'
potential = 'potential'
use_log = true
position_units = ${dom0Scale}
use_ad = true
block = 0
reactions = 'em + Ar -> em + Ar : EEDF [elastic] (reaction1)
em + Ar -> em + Ar* : EEDF [-11.5] (reaction2)
em + Ar -> em + em + Arp : EEDF [-15.76] (reaction3)
em + Ar* -> em + Ar : EEDF [11.5] (reaction4)
em + Ar* -> em + em + Arp : EEDF [-4.3] (reaction5)
Ar2p + em -> Ar* + Ar : {5.1187e11*(e_temp/300)^(-0.67)}
Ar2p + Ar -> Arp + Ar + Ar : {3.649332e12/Tgas*exp(-15130/Tgas)}
Ar* + Ar* -> Ar2p + em : 3.6132e8
Arp + em + em -> Ar + em : {3.17314235e9*(e_temp/11600)^(-4.5)}
Ar* + Ar + Ar -> Ar + Ar + Ar : 5077.02776
Arp + Ar + Ar -> Ar2p + Ar : {81595.089*(Tgas/300)^(-0.4)}'
[]
[]
(test/tests/Conference_Syntax_Tests/Lymberopoulos_with_argon_metastables_2D_At1Torr.i)
dom0Scale = 25.4e-3
#dom0Scale=1.0
[GlobalParams]
potential_units = V
use_moles = true
[]
[Mesh]
type = FileMesh
file = 'GEC_mesh.msh'
coord_type = RZ
rz_coord_axis = Y
[]
[Variables]
[em]
[]
[Ar+]
[]
[Ar*]
[]
[mean_en]
[]
[potential]
[]
[potential_ion]
[]
[]
[Kernels]
#Electron Equations (Same as in paper)
#Time Derivative term of electron
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons
[em_diffusion]
type = CoeffDiffusion
variable = em
position_units = ${dom0Scale}
[]
#Net electron production from ionization
[em_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Ion Equations (Same as in paper)
#Time Derivative term of the ions
[Ar+_time_deriv]
type = ElectronTimeDerivative
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
potential = potential_ion
position_units = ${dom0Scale}
[]
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Net ion production from ionization
[Ar+_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Excited Equations (Same as in paper)
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = ElectronTimeDerivative
variable = Ar*
[]
#Diffusion term of excited Argon
[Ar*_diffusion]
type = CoeffDiffusion
variable = Ar*
position_units = ${dom0Scale}
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Voltage Equations (Same as in paper)
#Voltage term in Poissons Eqaution
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom0Scale}
[]
#Ion term in Poissons Equation
[Ar+_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar+
[]
#Electron term in Poissons Equation
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
[]
#Since the paper uses electron temperature as a variable, the energy equation is in
#a different form but should be the same physics
#Time Derivative term of electron energy
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
position_units = ${dom0Scale}
[]
#Energy loss from ionization
[Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
# Energy loss from elastic collisions
[Elastic_loss]
type = EEDFElasticLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar'
[]
#Effective potential for the Ions
[Ion_potential_time_deriv]
type = TimeDerivative
variable = potential_ion
[]
[Ion_potential_reaction]
type = ScaledReaction
variable = potential_ion
collision_freq = 1283370.875
[]
[Ion_potential_coupled_force]
type = CoupledForce
variable = potential_ion
v = potential
coef = 1283370.875
[]
[]
[AuxVariables]
[emDeBug]
[]
[Ar+_DeBug]
[]
[Ar*_DeBug]
[]
[mean_enDeBug]
[]
[potential_DeBug]
[]
[Te]
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[y]
order = CONSTANT
family = MONOMIAL
[]
[y_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[Efieldx]
order = CONSTANT
family = MONOMIAL
[]
[Efieldy]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[Current_Ar]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[emRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[exRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[swRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[quRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[]
[AuxKernels]
#[emDeBug]
# type = DebugResidualAux
# variable = emDeBug
# debug_variable = em
#[]
#[Ar+_DeBug]
# type = DebugResidualAux
# variable = Ar+_DeBug
# debug_variable = Ar+
#[]
#[mean_enDeBug]
# type = DebugResidualAux
# variable = mean_enDeBug
# debug_variable = mean_en
#[]
#[Ar*_DeBug]
# type = DebugResidualAux
# variable = Ar*_DeBug
# debug_variable = Ar*
#[]
#[Potential_DeBug]
# type = DebugResidualAux
# variable = potential_DeBug
# debug_variable = potential
#[]
[emRate]
type = ProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ProcRateForRateCoeff
variable = exRate
v = em
w = Ar*
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[Te]
type = ElectronTemperature
variable = Te
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[y_g]
type = Position
variable = y
position_units = ${dom0Scale}
[]
[y_ng]
type = Position
variable = y_node
position_units = ${dom0Scale}
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
[]
[Ar+_lin]
type = DensityMoles
variable = Ar+_lin
density_log = Ar+
[]
[Ar*_lin]
type = DensityMoles
variable = Ar*_lin
density_log = Ar*
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e22
value = -2.928623
execute_on = INITIAL
[]
[Efieldx_calc]
type = Efield
component = 0
potential = potential
variable = Efieldx
position_units = ${dom0Scale}
[]
[Efieldy_calc]
type = Efield
component = 1
potential = potential
variable = Efieldy
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 'plasma'
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
potential = potential_ion
density_log = Ar+
variable = Current_Ar
art_diff = false
block = 'plasma'
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition, same as in paper
[potential_top_plate]
type = FunctionDirichletBC
variable = potential
boundary = 'Top_Electrode'
function = potential_top_bc_func
[]
[potential_bottom_plate]
type = FunctionDirichletBC
variable = potential
boundary = 'Bottom_Electrode'
function = potential_bottom_bc_func
[]
[potential_dirichlet_bottom_plate]
type = DirichletBC
variable = potential
boundary = 'Walls'
value = 0
[]
[potential_Dielectric]
type = EconomouDielectricBC
variable = potential
boundary = 'Top_Insulator Bottom_Insulator'
electrons = em
ions = Ar+
ion_potentials = potential_ion
electron_energy = mean_en
dielectric_constant = 1.859382e-11
thickness = 0.0127
emission_coeffs = 0.01
position_units = ${dom0Scale}
[]
#New Boundary conditions for electons, same as in paper
[em_physical_diffusion]
type = SakiyamaElectronDiffusionBC
variable = em
electron_energy = mean_en
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[em_Ar+_second_emissions]
type = SakiyamaSecondaryElectronBC
variable = em
potential = potential_ion
ions = Ar+
emission_coeffs = 0.01
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_advection]
type = SakiyamaIonAdvectionBC
variable = Ar+
potential = potential_ion
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
#(except the metastables are not set to zero, since Zapdos uses log form)
[Ar*_physical_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
value = 100
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_diffusion]
type = SakiyamaEnergyDiffusionBC
variable = mean_en
electrons = em
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[mean_en_Ar+_second_emissions]
type = SakiyamaEnergySecondaryElectronBC
variable = mean_en
electrons = em
ions = Ar+
potential = potential_ion
Tse_equal_Te = true
emission_coeffs = 0.01
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[Ar*_ic]
type = FunctionIC
variable = Ar*
function = meta_density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_top_bc_func]
type = ParsedFunction
expression = '30*sin(2*3.1415926*13.56e6*t)'
[]
[potential_bottom_bc_func]
type = ParsedFunction
expression = '-30*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = 0
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e14)/6.022e23)'
[]
[meta_density_ic_func]
type = ParsedFunction
expression = 'log((1e16)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log((3./2.)) + log((1e14)/6.022e23)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = true
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_se_coeff = 0.00
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 1.44409938
diffusivity = 6.428571e-2
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-2
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_00]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_elastic.txt'
reaction = 'em + Ar -> em + Ar'
electrons = em
[]
[reaction_0]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excitation.txt'
reaction = 'em + Ar -> em + Ar*'
mean_energy = mean_en
electrons = em
[]
[reaction_1]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_ionization.txt'
reaction = 'em + Ar -> em + em + Ar+'
mean_energy = mean_en
electrons = em
[]
[reaction_2]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_deexcitation.txt'
reaction = 'em + Ar* -> em + Ar'
mean_energy = mean_en
electrons = em
[]
[reaction_3]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excited_ionization.txt'
reaction = 'em + Ar* -> em + em + Ar+'
mean_energy = mean_en
electrons = em
[]
[reaction_4]
type = GenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = GenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = GenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = GenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-42
reaction_rate_value = 398909.324
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 7.4e-3
automatic_scaling = true
dtmax = 1e-9
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 fgmres 1e-3'
nl_rel_tol = 1e-8
#nl_abs_tol = 7.6e-5
dtmin = 1e-14
l_max_its = 20
#Time steps based on the inverse of the plasma frequency
#[TimeSteppers]
# [Postprocessor]
# type = PostprocessorDT
# postprocessor = InversePlasmaFreq
# scale = 0.1
# []
#[]
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/DriftDiffusionAction/RF_Plasma_no_actions.i)
#This is the input file that supplied the gold output file.
#It is the same as the input file in
#tests/Lymberopoulos_rf_discharge/Lymberopoulos_with_argon_metastables.i,
#execpt some of the Aux Variables are renamed for the Action test
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Lymberopoulos.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
[]
[Variables]
[em]
[]
[Ar+]
[]
[Ar*]
[]
[mean_en]
[]
[potential]
[]
[]
[Kernels]
#Electron Equations (Same as in paper)
#Time Derivative term of electron
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons
[em_diffusion]
type = CoeffDiffusion
variable = em
position_units = ${dom0Scale}
[]
#Net electron production from ionization
[em_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Ion Equations (Same as in paper)
#Time Derivative term of the ions
[Ar+_time_deriv]
type = ElectronTimeDerivative
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Net ion production from ionization
[Ar+_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Excited Equations (Same as in paper)
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = ElectronTimeDerivative
variable = Ar*
[]
#Diffusion term of excited Argon
[Ar*_diffusion]
type = CoeffDiffusion
variable = Ar*
position_units = ${dom0Scale}
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Voltage Equations (Same as in paper)
#Voltage term in Poissons Eqaution
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom0Scale}
[]
#Ion term in Poissons Equation
[Ar+_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar+
[]
#Electron term in Poissons Equation
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
[]
#Since the paper uses electron temperature as a variable, the energy equation is in
#a different form but should be the same physics
#Time Derivative term of electron energy
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
position_units = ${dom0Scale}
[]
#Energy loss from ionization
[Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
[]
[AuxVariables]
[e_temp]
order = CONSTANT
family = MONOMIAL
[]
[position]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
[]
[em_density]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_density]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_density]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[EFieldx]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
[]
[Current_Ar+]
order = CONSTANT
family = MONOMIAL
[]
[emRate]
order = CONSTANT
family = MONOMIAL
[]
[exRate]
order = CONSTANT
family = MONOMIAL
[]
[swRate]
order = CONSTANT
family = MONOMIAL
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
[]
[quRate]
order = CONSTANT
family = MONOMIAL
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[emRate]
type = ProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ProcRateForRateCoeff
variable = exRate
v = em
w = Ar*
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = position
position_units = ${dom0Scale}
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[em_density]
type = DensityMoles
variable = em_density
density_log = em
[]
[Ar+_density]
type = DensityMoles
variable = Ar+_density
density_log = Ar+
[]
[Ar*_density]
type = DensityMoles
variable = Ar*_density
density_log = Ar*
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e22
value = -2.928623
execute_on = INITIAL
[]
[Efield_calc]
type = Efield
component = 0
potential = potential
variable = EFieldx
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
position_units = ${dom0Scale}
[]
[Current_Ar+]
type = ADCurrent
potential = potential
density_log = Ar+
variable = Current_Ar+
art_diff = false
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition, same as in paper
[potential_left]
type = FunctionDirichletBC
variable = potential
boundary = 'left'
function = potential_bc_func
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = 'right'
value = 0
[]
#New Boundary conditions for electons, same as in paper
[em_physical_right]
type = LymberopoulosElectronBC
variable = em
boundary = 'right'
emission_coeffs = 0.01
#emission_coeffs = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[em_physical_left]
type = LymberopoulosElectronBC
variable = em
boundary = 'left'
emission_coeffs = 0.01
#emission_coeffs = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'left'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
#(except the metastables are not set to zero, since Zapdos uses log form)
[Ar*_physical_right_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'right'
value = 100
[]
[Ar*_physical_left_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'left'
value = 100
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_right]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'right'
[]
[mean_en_physical_left]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'left'
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[Ar*_ic]
type = FunctionIC
variable = Ar*
function = density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = '0.100*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = '0.100 * (25.4e-3 - x)'
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log(3./2.) + log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_electron_mobility = 30.0
user_electron_diffusion_coeff = 119.8757763975
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 0.144409938
diffusivity = 6.428571e-3
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-3
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_0]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excitation.txt'
reaction = 'em + Ar -> em + Ar*'
electrons = em
[]
[reaction_1]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_ionization.txt'
reaction = 'em + Ar -> em + em + Ar+'
electrons = em
[]
[reaction_2]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_deexcitation.txt'
reaction = 'em + Ar* -> em + Ar'
electrons = em
[]
[reaction_3]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excited_ionization.txt'
reaction = 'em + Ar* -> em + em + Ar+'
electrons = em
[]
[reaction_4]
type = GenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = GenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = GenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = GenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-42
reaction_rate_value = 398909.324
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 3e-7
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 fgmres 1e-3'
dtmin = 1e-14
l_max_its = 20
scheme = bdf2
dt = 1e-9
[]
[Outputs]
file_base = 'RF_out'
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/accelerations/Acceleration_By_Shooting_Method.i)
#This test starts the simulation at 50 rf cycle, then accelerates
#at the 55 rf cycle mark and stops at 57 rf cycles
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
file = 'Acceleration_By_Shooting_Method_Initial_Conditions.e'
[]
[Problem]
type = FEProblem
[]
[Variables]
[em]
initial_from_file_var = em
[]
[Ar+]
initial_from_file_var = Ar+
[]
[Ar*]
initial_from_file_var = Ar*
[]
[mean_en]
initial_from_file_var = mean_en
[]
[potential]
initial_from_file_var = potential
[]
[]
[Kernels]
#Electron Equations
#Time Derivative term of electron
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons
[em_diffusion]
type = CoeffDiffusion
variable = em
position_units = ${dom0Scale}
[]
#Net electron production from ionization
[em_ionization]
type = EEDFReactionLog
variable = em
electrons = em
mean_energy = mean_en
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = EEDFReactionLog
variable = em
electrons = em
mean_energy = mean_en
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Ion Equations
#Time Derivative term of the ions
[Ar+_time_deriv]
type = ElectronTimeDerivative
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Net ion production from ionization
[Ar+_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
mean_energy = mean_en
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
mean_energy = mean_en
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Excited Equations
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = ElectronTimeDerivative
variable = Ar*
[]
#Diffusion term of excited Argon
[Ar*_diffusion]
type = CoeffDiffusion
variable = Ar*
position_units = ${dom0Scale}
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Voltage Equations
#Voltage term in Poissons Eqaution
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom0Scale}
[]
#Ion term in Poissons Equation
[Ar+_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar+
[]
#Electron term in Poissons Equation
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
[]
#Electron Energy Equations
#Time Derivative term of electron energy
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
position_units = ${dom0Scale}
[]
#Energy loss from ionization
[Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
[]
[AuxVariables]
[Te]
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Ar]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[exRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[swRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[quRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[emRate]
type = ProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ProcRateForRateCoeff
variable = exRate
v = em
w = Ar
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[Te]
type = ElectronTemperature
variable = Te
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
[]
[Ar+_lin]
type = DensityMoles
variable = Ar+_lin
density_log = Ar+
[]
[Ar*_lin]
type = DensityMoles
variable = Ar*_lin
density_log = Ar*
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e22
value = -2.928623
execute_on = INITIAL
[]
[Efield_calc]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
potential = potential
density_log = Ar+
variable = Current_Ar
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition
[potential_left]
type = FunctionDirichletBC
variable = potential
boundary = 'left'
function = potential_bc_func
preset = false
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = 'right'
value = 0
preset = false
[]
#Boundary conditions for electons
[em_physical_right]
type = LymberopoulosElectronBC
variable = em
boundary = 'right'
emission_coeffs = 0.01
#gamma = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[em_physical_left]
type = LymberopoulosElectronBC
variable = em
boundary = 'left'
emission_coeffs = 0.01
#gamma = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
#Boundary conditions for ions
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'left'
position_units = ${dom0Scale}
[]
#New Boundary conditions for metastables
[Ar*_physical_right_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'right'
value = 1e-5
[]
[Ar*_physical_left_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'left'
value = 1e-5
[]
#Boundary conditions for electron mean energy
[mean_en_physical_right]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'right'
[]
[mean_en_physical_left]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'left'
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = '0.100*sin(2*pi*13.56e6*t)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_electron_mobility = 30.0
user_electron_diffusion_coeff = 119.8757763975
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 0.144409938
diffusivity = 6.428571e-3
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-3
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_0]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/reaction_em + Ar -> em + Ar*.txt'
reaction = 'em + Ar -> em + Ar*'
electrons = em
[]
[reaction_1]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/reaction_em + Ar -> em + em + Ar+.txt'
reaction = 'em + Ar -> em + em + Ar+'
electrons = em
[]
[reaction_2]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/reaction_em + Ar* -> em + Ar.txt'
reaction = 'em + Ar* -> em + Ar'
electrons = em
[]
[reaction_3]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/reaction_em + Ar* -> em + em + Ar+.txt'
reaction = 'em + Ar* -> em + em + Ar+'
electrons = em
[]
[reaction_4]
type = GenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = GenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = GenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = GenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-43
reaction_rate_value = 39890.9324
[]
[]
[MultiApps]
#MultiApp of Acceleration by Shooting Method
[Shooting]
type = FullSolveMultiApp
input_files = 'Acceleration_By_Shooting_Method_Shooting.i'
execute_on = 'TIMESTEP_END'
enable = false
[]
[]
[Transfers]
#MultiApp Transfers for Acceleration by Shooting Method
[em_to_Shooting]
type = MultiAppCopyTransfer
to_multi_app = Shooting
source_variable = em
variable = em
enable = false
[]
[Ar+_to_Shooting]
type = MultiAppCopyTransfer
to_multi_app = Shooting
source_variable = Ar+
variable = Ar+
enable = false
[]
[mean_en_to_Shooting]
type = MultiAppCopyTransfer
to_multi_app = Shooting
source_variable = mean_en
variable = mean_en
enable = false
[]
[potential_to_Shooting]
type = MultiAppCopyTransfer
to_multi_app = Shooting
source_variable = potential
variable = potential
enable = false
[]
[Ar*_to_Shooting]
type = MultiAppCopyTransfer
to_multi_app = Shooting
source_variable = Ar*
variable = Ar*
enable = false
[]
[Ar*S_to_Shooting]
type = MultiAppCopyTransfer
to_multi_app = Shooting
source_variable = Ar*
variable = Ar*S
enable = false
[]
[Ar*New_from_Shooting]
type = MultiAppCopyTransfer
from_multi_app = Shooting
source_variable = Ar*
variable = Ar*
enable = false
[]
[]
#The Action the add the TimePeriod Controls to turn off and on the MultiApps
[PeriodicControllers]
[Shooting]
Enable_at_cycle_start = 'MultiApps::Shooting
Transfers::em_to_Shooting *::Ar+_to_Shooting *::mean_en_to_Shooting
*::potential_to_Shooting *::Ar*_to_Shooting *::Ar*S_to_Shooting
Transfers::Ar*New_from_Shooting'
starting_cycle = 55
cycle_frequency = 13.56e6
cycles_between_controls = 30
num_controller_set = 2000
name = Shooting
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
start_time = 3.68731563e-6
end_time = 4.20353982e-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 fgmres 1e-3'
dtmin = 1e-14
l_max_its = 20
scheme = bdf2
dt = 1e-9
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/accelerations/Acceleration_By_Averaging_main.i)
#This test runs the simulation for 10 rf cycle, then accelerates
#once and stops at 11 rf cycles
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Lymberopoulos_paper.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
[]
[Variables]
[em]
[]
[Ar+]
[]
[Ar*]
[]
[mean_en]
[]
[potential]
[]
[]
[Kernels]
#Electron Equations
#Time Derivative term of electron
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons
[em_diffusion]
type = CoeffDiffusion
variable = em
position_units = ${dom0Scale}
[]
#Net electron production from ionization
[em_ionization]
type = EEDFReactionLog
variable = em
electrons = em
mean_energy = mean_en
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = EEDFReactionLog
variable = em
electrons = em
mean_energy = mean_en
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Ion Equations
#Time Derivative term of the ions
[Ar+_time_deriv]
type = ElectronTimeDerivative
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Net ion production from ionization
[Ar+_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
mean_energy = mean_en
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
mean_energy = mean_en
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Excited Equations
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = ElectronTimeDerivative
variable = Ar*
[]
#Diffusion term of excited Argon
[Ar*_diffusion]
type = CoeffDiffusion
variable = Ar*
position_units = ${dom0Scale}
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Voltage Equations
#Voltage term in Poissons Eqaution
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom0Scale}
[]
#Ion term in Poissons Equation
[Ar+_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar+
[]
#Electron term in Poissons Equation
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
[]
#Electron Energy Equations
#Time Derivative term of electron energy
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
position_units = ${dom0Scale}
[]
#Energy loss from ionization
[Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
[]
[AuxVariables]
[Te]
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Ar]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[exRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[swRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[quRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[emRate]
type = ProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ProcRateForRateCoeff
variable = exRate
v = em
w = Ar
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[Te]
type = ElectronTemperature
variable = Te
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
[]
[Ar+_lin]
type = DensityMoles
variable = Ar+_lin
density_log = Ar+
[]
[Ar*_lin]
type = DensityMoles
variable = Ar*_lin
density_log = Ar*
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e22
value = -2.928623
execute_on = INITIAL
[]
[Efield_calc]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
potential = potential
density_log = Ar+
variable = Current_Ar
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition
[potential_left]
type = FunctionDirichletBC
variable = potential
boundary = 'left'
function = potential_bc_func
preset = false
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = 'right'
value = 0
preset = false
[]
#Boundary conditions for electons
[em_physical_right]
type = LymberopoulosElectronBC
variable = em
boundary = 'right'
emission_coeffs = 0.01
#gamma = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[em_physical_left]
type = LymberopoulosElectronBC
variable = em
boundary = 'left'
emission_coeffs = 0.01
#gamma = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
#Boundary conditions for ions
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'left'
position_units = ${dom0Scale}
[]
#New Boundary conditions for metastables
[Ar*_physical_right_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'right'
value = 1e-5
[]
[Ar*_physical_left_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'left'
value = 1e-5
[]
#Boundary conditions for electron mean energy
[mean_en_physical_right]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'right'
[]
[mean_en_physical_left]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'left'
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[Ar*_ic]
type = FunctionIC
variable = Ar*
function = density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = '0.100*sin(2*pi*13.56e6*t)'
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e14)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log((3./2.) * ((1e14)/6.022e23))'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_electron_mobility = 30.0
user_electron_diffusion_coeff = 119.8757763975
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 0.144409938
diffusivity = 6.428571e-3
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-3
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_0]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/reaction_em + Ar -> em + Ar*.txt'
reaction = 'em + Ar -> em + Ar*'
electrons = em
[]
[reaction_1]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/reaction_em + Ar -> em + em + Ar+.txt'
reaction = 'em + Ar -> em + em + Ar+'
electrons = em
[]
[reaction_2]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/reaction_em + Ar* -> em + Ar.txt'
reaction = 'em + Ar* -> em + Ar'
electrons = em
[]
[reaction_3]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/reaction_em + Ar* -> em + em + Ar+.txt'
reaction = 'em + Ar* -> em + em + Ar+'
electrons = em
[]
[reaction_4]
type = GenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = GenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = GenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = GenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-43
reaction_rate_value = 39890.9324
[]
[]
[MultiApps]
#MultiApp of Acceleration by Averaging
[Averaging_Acceleration]
type = FullSolveMultiApp
input_files = 'Acceleration_By_Averaging_acceleration.i'
execute_on = 'TIMESTEP_END'
enable = false
[]
[]
[Transfers]
#MultiApp Transfers for Acceleration by Averaging
[em_to_Averaging]
type = MultiAppCopyTransfer
to_multi_app = Averaging_Acceleration
source_variable = em
variable = em
enable = false
[]
[Ar+_to_Averaging]
type = MultiAppCopyTransfer
to_multi_app = Averaging_Acceleration
source_variable = Ar+
variable = Ar+
enable = false
[]
[mean_en_to_Averaging]
type = MultiAppCopyTransfer
to_multi_app = Averaging_Acceleration
source_variable = mean_en
variable = mean_en
enable = false
[]
[potential_to_Averaging]
type = MultiAppCopyTransfer
to_multi_app = Averaging_Acceleration
source_variable = potential
variable = potential
enable = false
[]
[Ar*_to_Averaging]
type = MultiAppCopyTransfer
to_multi_app = Averaging_Acceleration
source_variable = Ar*
variable = Ar*
enable = false
[]
[Ar*S_to_Averaging]
type = MultiAppCopyTransfer
to_multi_app = Averaging_Acceleration
source_variable = Ar*
variable = Ar*S
enable = false
[]
[Ar*New_from_Averaging]
type = MultiAppCopyTransfer
from_multi_app = Averaging_Acceleration
source_variable = Ar*
variable = Ar*
enable = false
[]
[]
#The Action the add the TimePeriod Controls to turn off and on the MultiApps
[PeriodicControllers]
[Averaging_Acceleration]
Enable_at_cycle_start = 'MultiApps::Averaging_Acceleration
Transfers::em_to_Averaging *::Ar+_to_Averaging *::mean_en_to_Averaging
*::potential_to_Averaging *::Ar*_to_Averaging *::Ar*S_to_Averaging
Transfers::Ar*New_from_Averaging'
starting_cycle = 10
cycle_frequency = 13.56e6
cycles_between_controls = 10
num_controller_set = 15
name = Averaging_Acceleration
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 8.2e-7
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 fgmres 1e-3'
dtmin = 1e-14
l_max_its = 20
scheme = bdf2
dt = 1e-9
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/1d_dc/mean_en.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
#petsc_options = '-snes_converged_reason -snes_linesearch_monitor -snes_test_jacobian'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
# petsc_options_iname = '-pc_type -sub_pc_type'
# petsc_options_value = 'asm lu'
# petsc_options_iname = '-snes_type'
# petsc_options_value = 'test'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
# dt = 1.1
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
# print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[dof_map]
type = DOFMap
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
potential = potential
mean_en = mean_en
em = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[OHm_lin]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_lin OHm_lin' # H3Op_lin OHm_lin'
expression = '-emliq_lin - OHm_lin' # 'H3Op_lin - em_lin - OHm_lin'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
block = 0
[]
[emliq_lin]
type = DensityMoles
variable = emliq_lin
density_log = emliq
block = 1
[]
[Arp_lin]
type = DensityMoles
variable = Arp_lin
density_log = Arp
block = 0
[]
[OHm_lin]
type = DensityMoles
variable = OHm_lin
density_log = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
potential = potential
density_log = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
potential = potential
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
mean_en_neighbor = mean_en
potential_neighbor = potential
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
mean_en_neighbor = mean_en
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
potential = potential
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
preset = false
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
potential = potential
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.05
block = 0
property_tables_file = td_argon_mean_en.txt
[]
[water_block]
type = Water
block = 1
potential = potential
[]
[]
(test/tests/Schottky_emission/Example1/Input.i)
dom0Scale = 1
dom0Size = 4E-6 #m
vhigh = -200E-3 #kV
[GlobalParams]
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = 10E-6
petsc_options = '-snes_converged_reason -snes_linesearch_monitor -snes_ksp_ew'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 1e-4
nl_abs_tol = 5e-10
dtmin = 1e-16
# dtmax = 1E-6
nl_max_its = 100
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e0
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 50
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 50
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 50
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
# tau = 10E-6
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -40
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -40
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -39
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/DriftDiffusionAction/RF_Plasma_actions.i)
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Lymberopoulos.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
[]
#Action the supplies the drift-diffusion equations
#This action also adds JouleHeating and the ChargeSourceMoles_KV Kernels
[DriftDiffusionAction]
[Plasma]
electrons = em
charged_particle = Ar+
Neutrals = Ar*
mean_energy = mean_en
potential = potential
Is_potential_unique = true
using_offset = false
position_units = ${dom0Scale}
Additional_Outputs = 'ElectronTemperature Current EField'
[]
[]
#The Kernels supply the sources terms
[Kernels]
#Net electron production from ionization
[em_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Net ion production from ionization
[Ar+_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Energy loss from ionization
[Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
[]
[AuxVariables]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[emRate]
order = CONSTANT
family = MONOMIAL
[]
[exRate]
order = CONSTANT
family = MONOMIAL
[]
[swRate]
order = CONSTANT
family = MONOMIAL
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
[]
[quRate]
order = CONSTANT
family = MONOMIAL
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[emRate]
type = ProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ProcRateForRateCoeff
variable = exRate
v = em
w = Ar*
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e22
value = -2.928623
execute_on = INITIAL
[]
[]
[BCs]
#Voltage Boundary Condition, same as in paper
[potential_left]
type = FunctionDirichletBC
variable = potential
boundary = 'left'
function = potential_bc_func
preset = false
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = 'right'
value = 0
preset = false
[]
#New Boundary conditions for electons, same as in paper
[em_physical_right]
type = LymberopoulosElectronBC
variable = em
boundary = 'right'
emission_coeffs = 0.01
#emission_coeffs = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[em_physical_left]
type = LymberopoulosElectronBC
variable = em
boundary = 'left'
emission_coeffs = 0.01
#emission_coeffs = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'left'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
#(except the metastables are not set to zero, since Zapdos uses log form)
[Ar*_physical_right_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'right'
value = 100
[]
[Ar*_physical_left_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'left'
value = 100
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_right]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'right'
[]
[mean_en_physical_left]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'left'
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[Ar*_ic]
type = FunctionIC
variable = Ar*
function = density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = '0.100*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = '0.100 * (25.4e-3 - x)'
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log(3./2.) + log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_electron_mobility = 30.0
user_electron_diffusion_coeff = 119.8757763975
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 0.144409938
diffusivity = 6.428571e-3
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-3
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_0]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excitation.txt'
reaction = 'em + Ar -> em + Ar*'
electrons = em
[]
[reaction_1]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_ionization.txt'
reaction = 'em + Ar -> em + em + Ar+'
electrons = em
[]
[reaction_2]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_deexcitation.txt'
reaction = 'em + Ar* -> em + Ar'
electrons = em
[]
[reaction_3]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excited_ionization.txt'
reaction = 'em + Ar* -> em + em + Ar+'
electrons = em
[]
[reaction_4]
type = GenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = GenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = GenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = GenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-42
reaction_rate_value = 398909.324
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 3e-7
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 fgmres 1e-3'
dtmin = 1e-14
l_max_its = 20
scheme = bdf2
dt = 1e-9
[]
[Outputs]
file_base = 'RF_out'
perf_graph = true
[out]
type = Exodus
[]
[]
(tutorial/tutorial01-Diffusion/diffusion-only.i)
#This tutorial is a sample simple diffusion case with
#pin density at the center (x=0) and end of a wall (x=0.5).
#This is based on Lieberman’s Figure 5.1, page 141.
#A uniform scaling factor of the mesh.
#E.g if set to 1.0, there is not scaling
# and if set to 0.010, there mesh is scaled by a cm
dom0Scale = 1.0
[GlobalParams]
#Scales the potential by V or kV
potential_units = V
#Converts density from #/m^3 to moles/m^3
use_moles = true
[]
[Mesh]
#Sets up a 1D mesh from 0 to 0.5m with 1000 element
[geo]
type = GeneratedMeshGenerator
xmin = 0
xmax = 0.5
nx = 1000
dim = 1
[]
#Renames all sides with the specified normal
#For 1D, this is used to rename the end points of the mesh
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0' #Outward facing normal
new_boundary = 'left'
input = geo
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right' #Outward facing normal
input = left
[]
[]
#Defines the problem type, such as FE, eigen value problem, etc.
[Problem]
type = FEProblem
[]
#User defined name for the variables.
#Other variable properties are defined here,
# such as family of shape function and variable order
# (the default family/order is Lagrange/First)
[Variables]
[Ar+]
[]
[]
[Kernels]
#Adds the diffusion for the variable
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Adds the source term for the variable.
#In this case, adds a first order reaction of k*Ar+
[Ar+_source]
type = ReactionFirstOrderLog
variable = Ar+
# v is a constant density of 1e16 #/m^3 in mole-log form
# (i.e v = ln(1e16/6.022e23) = -17.9135)
v = -17.9135
_v_eq_u = false
coefficient = 1
reaction = FirstOrder
[]
[]
#User defined name for the auxvariables.
#Other variable properties are defined here,
# such as family of shape function and variable order
[AuxVariables]
[x]
#Monomial is a family set for elemental variables
#(variable that are solve for the elements vs the nodes)
order = CONSTANT
family = MONOMIAL
[]
#The auxvariable used to converts the mole-log form of the density to #/m^3
[Ar+_density]
order = CONSTANT
family = MONOMIAL
[]
#The auxvariable for the known solution for this diffusion problem
[Solution]
[]
[]
[AuxKernels]
#Add a scaled position units used for plotting other element AuxVariables
[x_ng]
type = Position
variable = x
position_units = ${dom0Scale}
[]
#Converts the mole-log form of the density to #/m^3
[Ar+_density]
type = DensityMoles
variable = Ar+_density
density_log = Ar+
execute_on = 'LINEAR TIMESTEP_END'
[]
#The know solution for this diffusion problem
[Solution]
type = FunctionAux
variable = Solution
function = '1e16 * 9.8696 / 8. * (1 - (2*x)^2.)'
[]
[]
#Initial conditions for variables.
#If left undefine, the IC is zero
[ICs]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = 'log(1e16/6.022e23)'
[]
[]
[BCs]
#Dirichlet boundary conditions for mole-log density
#Value is in #/m^3
[Ar+_physical_right_diffusion]
type = LogDensityDirichletBC
variable = Ar+
boundary = 'right'
value = 100
[]
[]
[Materials]
#The material properties for electrons.
#Also hold universal constant, such as Avogadro's number, elementary charge, etc.
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.3322
user_electron_diffusion_coeff = 1.0
property_tables_file = rate_coefficients/electron_moments.txt
[]
#The material properties of the ion
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
diffusivity = 1
#diffusivity = 2
[]
#The rate constant for the first order reaction of the source term
[FirstOrder_Reaction]
type = GenericRateConstant
reaction = FirstOrder
reaction_rate_value = 9.8696
#reaction_rate_value = 4.9348
[]
[]
#Preconditioning options
#Learn more at: https://mooseframework.inl.gov/syntax/Preconditioning/index.html
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
#How to execute the problem.
#Defines type of solve (such as steady or transient),
# solve type (Newton, PJFNK, etc.) and tolerances
[Executioner]
type = Steady
solve_type = NEWTON
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 1e-3'
nl_rel_tol = 1e-08
l_max_its = 20
[]
#Defines the output type of the file (multiple output files can be define per run)
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/surface_charge/dbd_test.i)
# This example sets up a simple varying-voltage discharge with a
# dielectric at the right boundary.
#
# Two charged particle species are considered, creatively named 'pos'
# and 'neg'. They both have the same initial conditions and boundary
# conditions; the only difference is their charge.
# As the voltage varies, the particle flux to the right boundary
# (including both advection and diffusion) will switch polarity and
# the surface charge will become increasingly negative or positive.
#
# The left boundary is a driven electrode with a sinusoidal waveform.
# A dielectric boundary condition including surface charge accumulation
# is included on the right boundary.
#
# Note that without surface charge the electric field across both
# boundaries should be identical since their permittivities are
# both set to the same value.
# Surface charge shields the electric field in the gas region,
# preventing strong field buildup.
dom0Scale = 1e-4
dom1Scale = 1e-4
[GlobalParams]
#offset = 40
potential_units = kV
use_moles = true
[]
[Mesh]
# The mesh file generates the appropriate 1D mesh, but the interfaces
# needed for the potential and surface charge have not been defined.
# Here SideSetsBetweenSubdomainsGenerator is used to generate the
# appropriate interfaces at the dielectrics.
#
# Block 0 = plasma region
# Block 1 = dielectric
[file]
type = FileMeshGenerator
file = 'dbd_mesh.msh'
[]
[plasma_right]
# plasma master
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'plasma_right'
input = file
[]
[dielectric_left]
# left dielectric master
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'dielectric_left'
input = plasma_right
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = dielectric_left
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
automatic_scaling = true
compute_scaling_once = false
end_time = 10e-5
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
#num_steps = 1
#petsc_options = '-snes_converged_reason -snes_linesearch_monitor -snes_test_jacobian'
solve_type = NEWTON
line_search = 'basic'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_stol'
petsc_options_value = 'lu NONZERO 1.e-10 0'
nl_rel_tol = 1e-8
nl_div_tol = 1e4
l_max_its = 100
nl_max_its = 25
dtmin = 1e-22
dtmax = 1e-6
#dt = 1e-8
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-9
growth_factor = 1.2
optimal_iterations = 30
[]
[]
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
output_material_properties = true
show_material_properties = 'surface_charge'
[]
[]
[AuxVariables]
[neg_density]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[pos_density]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[neg_calc]
type = DensityMoles
variable = neg_density
density_log = neg
execute_on = 'initial timestep_end'
block = 0
[]
[pos_calc]
type = DensityMoles
variable = pos_density
density_log = pos
execute_on = 'initial timestep_end'
block = 0
[]
#[Arp_calc]
# type = DensityMoles
# variable = Arp_density
# density_log = Arp
# execute_on = 'initial timestep_end'
# block = 0
#[]
[x_d0]
type = Position
variable = x
position_units = ${dom0Scale}
execute_on = 'initial timestep_end'
block = 0
[]
[x_d1]
type = Position
variable = x
position_units = ${dom1Scale}
execute_on = 'initial timestep_end'
block = 1
[]
[Efield_g]
type = Efield
component = 0
potential = potential_dom0
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
potential = potential_dom1
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[]
[Variables]
[potential_dom0]
block = 0
[]
[potential_dom1]
block = 1
[]
[neg]
block = 0
[]
[pos]
block = 0
[]
#[mean_en]
# block = 0
#[]
#[Arp]
# block = 0
#[]
[]
[Kernels]
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential_dom0
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential_dom1
block = 1
position_units = ${dom1Scale}
[]
# Potential source terms
#[em_source]
# type = ChargeSourceMoles_KV
# variable = potential_dom0
# charged = em
# block = 0
#[]
#[Arp_source]
# type = ChargeSourceMoles_KV
# variable = potential_dom0
# charged = Arp
# block = 0
#[]
#
# Electrons
#[d_em_dt]
# type = TimeDerivativeLog
# variable = em
# block = 0
#[]
[neg_advection]
type = EFieldAdvection
variable = neg
potential = potential_dom0
position_units = ${dom0Scale}
block = 0
[]
[neg_diffusion]
type = CoeffDiffusion
variable = neg
position_units = ${dom0Scale}
block = 0
[]
[pos_advection]
type = EFieldAdvection
variable = pos
potential = potential_dom0
position_units = ${dom0Scale}
block = 0
[]
[pos_diffusion]
type = CoeffDiffusion
variable = pos
position_units = ${dom0Scale}
block = 0
[]
#[em_offset]
# type = LogStabilizationMoles
# variable = em
# block = 0
#[]
#
#[d_mean_en_dt]
# type = TimeDerivativeLog
# variable = mean_en
# block = 0
#[]
#[mean_en_advection]
# type = ADEFieldAdvection
# em = em
# variable = mean_en
# potential = potential_dom0
# position_units = ${dom0Scale}
# block = 0
#[]
#[mean_en_diffusion]
# type = ADCoeffDiffusion
# variable = mean_en
# position_units = ${dom0Scale}
# block = 0
#[]
#[mean_en_joule_heating]
# type = ADJouleHeating
# variable = mean_en
# em = em
# potential = potential_dom0
# position_units = ${dom0Scale}
# block = 0
#[]
#[mean_en_offset]
# type = LogStabilizationMoles
# variable = mean_en
# block = 0
#[]
#
#[d_Arp_dt]
# type = TimeDerivativeLog
# variable = Arp
# block = 0
#[]
#[Arp_advection]
# type = ADEFieldAdvection
# variable = Arp
# potential = potential_dom0
# position_units = ${dom0Scale}
# block = 0
#[]
#[Arp_diffusion]
# type = ADCoeffDiffusion
# variable = Arp
# position_units = ${dom0Scale}
# block = 0
#[]
#[Arp_offset]
# type = LogStabilizationMoles
# variable = Arp
# block = 0
#[]
[]
[InterfaceKernels]
# At the dielectric interfaces, the potential is required to be continuous
# in value but discontinuous in slope due to surface charge accumulation.
#
# The potential requires two different boundary conditions on each side:
# (1) An InterfaceKernel to provide the Neumann boundary condition
# (2) A MatchedValueBC to ensure that the potential remains continuous
#
# This interface kernel simply applies a dielectric BC with surface charge
# accumulation.
[potential_right]
type = PotentialSurfaceCharge
neighbor_var = potential_dom1
variable = potential_dom0
position_units = ${dom0Scale}
neighbor_position_units = ${dom1Scale}
boundary = plasma_right
[]
[]
[BCs]
# Interface BCs:
[match_potential]
type = MatchedValueBC
variable = potential_dom1
v = potential_dom0
boundary = 'dielectric_left'
[]
# Electrode and ground BCs:
# Electrode is at x = 0, named 'left'
[potential_left]
type = FunctionDirichletBC
variable = potential_dom0
function = potential_input
boundary = 'left'
[]
# Ground is at x = 0.3 mm, named 'right'
[potential_dirichlet_right]
type = DirichletBC
variable = potential_dom1
boundary = right
value = 0
[]
# Both charged species will have a specified dirichlet BC on the driven electrode
# and a diffusion BC on the right side.
# As the voltage varies with time, the charged particle flux on the right will
# switch between positive and negative, effectively changing the surface
# charge polarity.
[neg_left]
type = DirichletBC
variable = neg
value = -10
boundary = 'left'
[]
[neg_right]
type = HagelaarIonDiffusionBC
variable = neg
r = 0
position_units = ${dom0Scale}
boundary = 'plasma_right'
[]
[pos_left]
type = DirichletBC
variable = pos
value = -10
boundary = 'left'
[]
[pos_right]
type = HagelaarIonDiffusionBC
variable = pos
r = 0
position_units = ${dom0Scale}
boundary = 'plasma_right'
[]
[]
[ICs]
[potential_dom0_ic]
type = FunctionIC
variable = potential_dom0
function = potential_ic_func
[]
[potential_dom1_ic]
type = FunctionIC
variable = potential_dom1
function = potential_ic_func
[]
[neg_ic]
type = ConstantIC
variable = neg
value = -10
block = 0
[]
[pos_ic]
type = ConstantIC
variable = pos
value = -10
block = 0
[]
[]
[Functions]
# Define a sinusoidal voltage pulse with a frequency of 50 kHz
# Amplitude is set to 200 Volts
# (Note that here the amplitude is set to 0.2. Potential units are
# typically included as kV, not V. This option is set in the
# GlobalParams block.)
[potential_input]
type = ParsedFunction
symbol_names = 'f0'
symbol_values = '50e3'
expression = '-0.2*sin(2*3.1415926*f0*t)'
[]
# Set the initial condition to a line from -10 V on the left and
# 0 on the right.
# (Poisson solver tends to struggle with a uniformly zero potential IC.)
[potential_ic_func]
type = ParsedFunction
expression = '-0.001 * (2.000e-4 - x)'
[]
[]
[Materials]
# This material creates a boundary-restricted material property called "surface_charge"
# The value of surface charge is based on the total charged particle flux impacting
# the specified boundary.
# In this case we have two charged species, 'pos' (positively charged) and 'neg'
# (negatively charged).
[surface_charge_material]
type = ADSurfaceCharge
potential = potential_dom0
species = 'neg pos'
position_units = ${dom0Scale}
boundary = 'plasma_right'
[]
# This just defines some constants that Zapdos needs to run.
[gas_constants]
type = GenericConstantMaterial
block = 0
prop_names = ' e N_A k_boltz eps se_energy T_gas massem p_gas'
prop_values = '1.6e-19 6.022e23 1.38e-23 8.854e-12 1. 400 9.11e-31 1.01e5'
[]
#
[dielectric_left_side]
type = ADGenericConstantMaterial
prop_names = 'diffpotential_dom0'
prop_values = '8.85e-12'
block = 0
[]
[gas_phase]
type = ADGenericConstantMaterial
prop_names = 'diffpotential_dom1'
prop_values = '8.85e-12'
block = 1
[]
######
# HeavySpeciesMaterial defines charge, mass, transport coefficients, and
# temperature for each species.
#
# Transport coefficients and temperature are defined as ADMaterialProperties.
# Although they currently (as of June 16, 2020) remain constant, future
# implementations may include mixture-averaged diffusion coefficients and
# effective ion temperatures with nonlinear dependence on other variables.
######
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = neg
heavy_species_mass = 6.64e-26
heavy_species_charge = -1.0
diffusivity = 1.6897e-5
block = 0
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = pos
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
diffusivity = 1.6897e-5
block = 0
[]
[]
(test/tests/water_only/water_only.i)
dom1Scale = 1e-7
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
type = GeneratedMesh
nx = 1000
xmax = 10
dim = 1
[]
[Problem]
type = FEProblem
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 1e-3'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
nl_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
potential = potential
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
[]
[potential_diffusion]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom1Scale}
[]
# [emliq_charge_source]
# type = ChargeSourceMoles_KV
# variable = potential
# charged = emliq
# []
# [OHm_charge_source]
# type = ChargeSourceMoles_KV
# variable = potential
# charged = OHm
# []
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
potential = potential
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
position_units = ${dom1Scale}
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
[]
[]
[Variables]
[potential]
[]
[emliq]
[]
[OHm]
[]
[]
[AuxVariables]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
[]
[OHm_lin]
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
[]
[Current_OHm]
order = CONSTANT
family = MONOMIAL
[]
[tot_liq_current]
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm'
expression = 'Current_emliq + Current_OHm'
execute_on = 'timestep_end'
[]
[emliq_lin]
type = DensityMoles
variable = emliq_lin
density_log = emliq
[]
[OHm_lin]
type = DensityMoles
variable = OHm_lin
density_log = OHm
[]
[Efield_l]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom1Scale}
[]
[Current_emliq]
type = ADCurrent
potential = potential
density_log = emliq
variable = Current_emliq
art_diff = false
position_units = ${dom1Scale}
[]
[Current_OHm]
type = ADCurrent
potential = potential
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
position_units = ${dom1Scale}
[]
[]
[BCs]
[potential_left]
type = DirichletBC
value = -6.5e-5
variable = potential
boundary = left
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[emliq_left]
type = NeumannBC
value = 300
variable = emliq
boundary = left
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
[]
[]
[Materials]
[water_block]
type = Water
potential = potential
[]
[]
(test/tests/Schottky_emission/Example3/Input.i)
dom0Scale = 1
dom0Size = 2E-6 #m
vhigh = -230E-3 #kV
# relaxTime = 50E-6 #s
threeTimesRelaxTime = 150E-6 #s
[GlobalParams]
# offset = 25
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = ${threeTimesRelaxTime}
petsc_options = '-snes_converged_reason -snes_linesearch_monitor -snes_ksp_ew'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda -ksp_gmres_restart'
petsc_options_value = 'gamg NONZERO 1.e-10 preonly 1e-3 100'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dtmin = 1e-25
# dtmax = 1E-6
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e0
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 20
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 20
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 35
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
# tau = ${relaxTime}
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -30
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -30
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -25
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/DriftDiffusionAction/2D_RF_Plasma_no_actions.i)
#This is the input file that supplied the gold output file.
#It is the same as the input file in
#tests/Lymberopoulos_rf_discharge/Lymberopoulos_with_argon_metastables_2D_At100mTorr_CoarseMesh.i,
#execpt some of the Aux Variables are renamed for the Action test
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = V
use_moles = true
[]
[Mesh]
type = FileMesh
file = 'GEC_mesh_coarse.msh'
coord_type = RZ
rz_coord_axis = Y
[]
[Variables]
[em]
[]
[Ar+]
[]
[Ar*]
[]
[mean_en]
[]
[potential]
[]
[potential_ion]
[]
[]
[Kernels]
#Electron Equations (Same as in paper)
#Time Derivative term of electron
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons
[em_diffusion]
type = CoeffDiffusion
variable = em
position_units = ${dom0Scale}
[]
#Net electron production from ionization
[em_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Ion Equations (Same as in paper)
#Time Derivative term of the ions
[Ar+_time_deriv]
type = ElectronTimeDerivative
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
potential = potential_ion
position_units = ${dom0Scale}
[]
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Net ion production from ionization
[Ar+_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Excited Equations (Same as in paper)
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = ElectronTimeDerivative
variable = Ar*
[]
#Diffusion term of excited Argon
[Ar*_diffusion]
type = CoeffDiffusion
variable = Ar*
position_units = ${dom0Scale}
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Voltage Equations (Same as in paper)
#Voltage term in Poissons Eqaution
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom0Scale}
[]
#Ion term in Poissons Equation
[Ar+_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar+
[]
#Electron term in Poissons Equation
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
[]
#Since the paper uses electron temperature as a variable, the energy equation is in
#a different form but should be the same physics
#Time Derivative term of electron energy
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
position_units = ${dom0Scale}
[]
#Energy loss from ionization
[Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
# Energy loss from elastic collisions
[Elastic_loss]
type = EEDFElasticLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar'
[]
#Effective potential for the Ions
[Ion_potential_time_deriv]
type = TimeDerivative
variable = potential_ion
[]
[Ion_potential_reaction]
type = ScaledReaction
variable = potential_ion
collision_freq = 1283370.875
[]
[Ion_potential_coupled_force]
type = CoupledForce
variable = potential_ion
v = potential
coef = 1283370.875
[]
[]
[AuxVariables]
[e_temp]
order = CONSTANT
family = MONOMIAL
[]
[x_position]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[y_position]
order = CONSTANT
family = MONOMIAL
[]
[y_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
[]
[em_density]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_density]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_density]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[Efieldx]
order = CONSTANT
family = MONOMIAL
[]
[Efieldy]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[Current_Ar+]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[emRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[exRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[swRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[quRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[]
[AuxKernels]
[emRate]
type = ProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ProcRateForRateCoeff
variable = exRate
v = em
w = Ar*
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = x_position
component = 0
position_units = ${dom0Scale}
[]
[x_ng]
type = Position
variable = x_node
component = 0
position_units = ${dom0Scale}
[]
[y_g]
type = Position
variable = y_position
component = 1
position_units = ${dom0Scale}
[]
[y_ng]
type = Position
variable = y_node
component = 1
position_units = ${dom0Scale}
[]
[em_density]
type = DensityMoles
variable = em_density
density_log = em
[]
[Ar+_density]
type = DensityMoles
variable = Ar+_density
density_log = Ar+
[]
[Ar*_density]
type = DensityMoles
variable = Ar*_density
density_log = Ar*
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e2
value = -5.231208
execute_on = INITIAL
[]
[Efieldx_calc]
type = Efield
component = 0
potential = potential
variable = Efieldx
position_units = ${dom0Scale}
[]
[Efieldy_calc]
type = Efield
component = 1
potential = potential
variable = Efieldy
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 'plasma'
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
potential = potential_ion
density_log = Ar+
variable = Current_Ar+
art_diff = false
block = 'plasma'
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition, same as in paper
[potential_top_plate]
type = FunctionDirichletBC
variable = potential
boundary = 'Top_Electrode'
function = potential_top_bc_func
[]
[potential_bottom_plate]
type = FunctionDirichletBC
variable = potential
boundary = 'Bottom_Electrode'
function = potential_bottom_bc_func
[]
[potential_dirichlet_bottom_plate]
type = DirichletBC
variable = potential
boundary = 'Walls'
value = 0
[]
[potential_Dielectric]
type = EconomouDielectricBC
variable = potential
boundary = 'Top_Insulator Bottom_Insulator'
electrons = em
ions = Ar+
ion_potentials = potential_ion
electron_energy = mean_en
dielectric_constant = 1.859382e-11
thickness = 0.0127
emission_coeffs = 0.01
position_units = ${dom0Scale}
[]
#New Boundary conditions for electons, same as in paper
[em_physical_diffusion]
type = SakiyamaElectronDiffusionBC
variable = em
electron_energy = mean_en
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[em_Ar+_second_emissions]
type = SakiyamaSecondaryElectronBC
variable = em
potential = potential_ion
ions = Ar+
emission_coeffs = 0.01
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_advection]
type = SakiyamaIonAdvectionBC
variable = Ar+
potential = potential_ion
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
#(except the metastables are not set to zero, since Zapdos uses log form)
[Ar*_physical_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
value = 100
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_diffusion]
type = SakiyamaEnergyDiffusionBC
variable = mean_en
electrons = em
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[mean_en_Ar+_second_emissions]
type = SakiyamaEnergySecondaryElectronBC
variable = mean_en
electrons = em
ions = Ar+
potential = potential_ion
Tse_equal_Te = true
emission_coeffs = 0.01
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[Ar*_ic]
type = FunctionIC
variable = Ar*
function = meta_density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_top_bc_func]
type = ParsedFunction
expression = '50*sin(2*3.1415926*13.56e6*t)'
[]
[potential_bottom_bc_func]
type = ParsedFunction
expression = '-50*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = 0
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e14)/6.022e23)'
[]
[meta_density_ic_func]
type = ParsedFunction
expression = 'log((1e16)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log((3./2.) * 4) + log((1e14)/6.022e23)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = true
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_se_coeff = 0.00
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 1.44409938
diffusivity = 6.428571e-2
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-2
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_00]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_elastic.txt'
reaction = 'em + Ar -> em + Ar'
electrons = em
[]
[reaction_0]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excitation.txt'
reaction = 'em + Ar -> em + Ar*'
mean_energy = mean_en
electrons = em
[]
[reaction_1]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_ionization.txt'
reaction = 'em + Ar -> em + em + Ar+'
mean_energy = mean_en
electrons = em
[]
[reaction_2]
type = ZapdosEEDFRateConstant
reaction = 'em + Ar* -> em + Ar'
property_file = 'Argon_reactions_paper_RateCoefficients/ar_deexcitation.txt'
mean_energy = mean_en
electrons = em
[]
[reaction_3]
type = ZapdosEEDFRateConstant
reaction = 'em + Ar* -> em + em + Ar+'
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excited_ionization.txt'
mean_energy = mean_en
electrons = em
[]
[reaction_4]
type = GenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = GenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = GenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = GenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-42
reaction_rate_value = 398909.324
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
#end_time = 7.4e-3
end_time = 1e-7
dtmax = 1e-9
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 fgmres 1e-3'
nl_rel_tol = 1e-12
#nl_abs_tol = 7.6e-5
dtmin = 1e-14
l_max_its = 20
#Time steps based on the inverse of the plasma frequency
#[TimeSteppers]
# [Postprocessor]
# type = PostprocessorDT
# postprocessor = InversePlasmaFreq
# scale = 0.1
# []
#[]
[]
[Outputs]
file_base = '2D_RF_out'
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/Schottky_emission/Example2/Input.i)
dom0Scale = 1
dom0Size = 12E-6 #m
vhigh = -80E-3 #kV
[GlobalParams]
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = 10E-6
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 1e-15
nl_abs_tol = 1e-11
dtmin = 1e-16
# dtmax = 1E-6
nl_max_its = 100
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e0
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 50
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 50
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 50
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
# tau = 10E-6
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -30
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -30
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -29
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/1d_dc/mean_en_multi.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
line_search = 'bt'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
# print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[dof_map]
type = DOFMap
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
potential = potential
mean_en = mean_en
em = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[ArEx_excitation]
type = ExcitationReaction
variable = ArEx
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
reactant = false
[]
[ArEx_deexcitation]
type = ExcitationReaction
variable = ArEx
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
reactant = true
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[ArEx_time_deriv]
type = ElectronTimeDerivative
variable = ArEx
block = 0
[]
[ArEx_diffusion]
type = CoeffDiffusion
variable = ArEx
block = 0
position_units = ${dom0Scale}
[]
[ArEx_log_stabilization]
type = LogStabilizationMoles
variable = ArEx
block = 0
offset = 30
[]
[ArTest_time_deriv]
type = ElectronTimeDerivative
variable = ArTest
block = 0
[]
[ArTest_diffusion]
type = CoeffDiffusion
variable = ArTest
block = 0
position_units = ${dom0Scale}
[]
[ArTest_log_stabilization]
type = LogStabilizationMoles
variable = ArTest
block = 0
[]
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[ArEx]
block = 0
[]
[ArTest]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ArEx_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ArTest_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[OHm_lin]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_lin OHm_lin' # H3Op_lin OHm_lin'
expression = '-emliq_lin - OHm_lin' # 'H3Op_lin - em_lin - OHm_lin'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
block = 0
[]
[emliq_lin]
type = DensityMoles
variable = emliq_lin
density_log = emliq
block = 1
[]
[Arp_lin]
type = DensityMoles
variable = Arp_lin
density_log = Arp
block = 0
[]
[ArEx_lin]
type = DensityMoles
variable = ArEx_lin
density_log = ArEx
block = 0
[]
[ArTest_lin]
type = DensityMoles
variable = ArTest_lin
density_log = ArTest
block = 0
[]
[OHm_lin]
type = DensityMoles
variable = OHm_lin
density_log = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
potential = potential
density_log = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
potential = potential
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
mean_en_neighbor = mean_en
potential_neighbor = potential
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
mean_en_neighbor = mean_en
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
potential = potential
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
potential = potential
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[ArEx_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = ArEx
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[ArEx_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = ArEx
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[ArTest_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = ArTest
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[ArTest_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = ArTest
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[ArEx_ic]
type = ConstantIC
variable = ArEx
value = -16
#value = -21
block = 0
[]
[ArTest_ic]
type = ConstantIC
variable = ArTest
value = -31
#value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block]
type = GasBase
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = .05
block = 0
property_tables_file = td_argon_mean_en.txt
position_units = ${dom0Scale}
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = ArEx
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = ArTest
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[water_block]
type = Water
block = 1
potential = potential
[]
[]
(test/tests/reflections/high_initial/Input.i)
dom0Scale = 1
dom0Size = 6E-6 #m
vhigh = -175E-3 #kV
[GlobalParams]
# offset = 20
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 5e-14
nl_abs_tol = 1e-13
steady_state_start_time = 1E-6
dtmin = 1e-18
dtmax = 0.1E-7
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [em_log_stabilization]
# type = LogStabilizationMoles
# variable = em
# block = 0
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [Arp_log_stabilization]
# type = LogStabilizationMoles
# variable = Arp
# block = 0
# []
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
# [mean_en_log_stabilization]
# type = LogStabilizationMoles
# variable = mean_en
# block = 0
# offset = 15
# []
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -30
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -30
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -30
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.01
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/crane_action/townsend_units.i)
# THIS INPUT FILE IS BASED ON mean_en.i (1d_dc test)
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'townsend_units.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
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu NONZERO 1.e-10'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-15
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 30
[]
[]
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
execute_on = 'final'
[]
#[dof_map]
# type = DOFMap
#[]
[]
[Debug]
#show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[OHm]
block = 1
[]
[]
[AuxVariables]
[H2O]
order = CONSTANT
family = MONOMIAL
initial_condition = 10.92252
block = 1
[]
[Ar]
block = 0
order = CONSTANT
family = MONOMIAL
initial_condition = 3.70109
[]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[OHm_lin]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
#[ProcRate_el]
# order = CONSTANT
# family = MONOMIAL
# block = 0
#[]
#[ProcRate_ex]
# order = CONSTANT
# family = MONOMIAL
# block = 0
#[]
#[ProcRate_iz]
# order = CONSTANT
# family = MONOMIAL
# block = 0
#[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
#[ProcRate_el]
# type = ProcRate
# em = em
# potential = potential
# proc = el
# variable = ProcRate_el
# position_units = ${dom0Scale}
# block = 0
#[]
#[ProcRate_ex]
# type = ProcRate
# em = em
# potential = potential
# proc = ex
# variable = ProcRate_ex
# position_units = ${dom0Scale}
# block = 0
#[]
#[ProcRate_iz]
# type = ProcRate
# em = em
# potential = potential
# proc = iz
# variable = ProcRate_iz
# position_units = ${dom0Scale}
# block = 0
#[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_lin OHm_lin' # H3Op_lin OHm_lin'
expression = '-emliq_lin - OHm_lin' # 'H3Op_lin - em_lin - OHm_lin'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
block = 0
[]
[emliq_lin]
type = DensityMoles
variable = emliq_lin
density_log = emliq
block = 1
[]
[Arp_lin]
type = DensityMoles
variable = Arp_lin
density_log = Arp
block = 0
[]
[OHm_lin]
type = DensityMoles
variable = OHm_lin
density_log = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
potential = potential
density_log = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
potential = potential
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
mean_en_neighbor = mean_en
potential_neighbor = potential
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
mean_en_neighbor = mean_en
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
potential = potential
electrons = em
r = 0.99
#r = 0.0
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
potential = potential
electron_energy = mean_en
r = 0.99
#r = 0.0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[water_block]
type = Water
block = 1
potential = potential
[]
[test]
type = GasElectronMoments
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
user_p_gas = 101325
user_se_coeff = 0.05
em = em
potential = potential
mean_en = mean_en
block = 0
property_tables_file = 'townsend_coefficients/moments.txt'
[]
[test_block1]
type = GenericConstantMaterial
block = 1
prop_names = 'T_gas p_gas'
prop_values = '300 1.01e5'
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
block = 0
[]
[]
[Reactions]
[Argon]
species = 'em Arp'
aux_species = 'Ar'
reaction_coefficient_format = 'townsend'
gas_species = 'Ar'
electron_energy = 'mean_en'
electron_density = 'em'
include_electrons = true
file_location = 'townsend_coefficients'
potential = 'potential'
use_log = true
use_ad = true
position_units = ${dom0Scale}
track_rates = false
block = 0
reactions = 'em + Ar -> em + Ar : EEDF [elastic] (reaction1)
em + Ar -> em + Ar* : EEDF [-11.5] (reaction2)
em + Ar -> em + em + Arp : EEDF [-15.76] (reaction3)'
[]
[Water]
species = 'emliq OHm'
reaction_coefficient_format = 'rate'
use_log = true
use_ad = true
aux_species = 'H2O'
block = 1
reactions = 'emliq -> H + OHm : 1064
emliq + emliq -> H2 + OHm + OHm : 3.136e8'
[]
[]
(test/tests/reflections/Schottky_400_V_10_um/Input.i)
dom0Scale = 1
dom0Size = 5E-6 #m
vhigh = -175E-3 #kV
[GlobalParams]
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 5e-14
nl_abs_tol = 1e-13
steady_state_start_time = 1E-6
dtmin = 1e-30
dtmax = 0.1E-7
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e3
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 45
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 45
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 45
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -42
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -45
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -36
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/1d_dc/densities_mean_en.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
# dom0Scale=1.1
# dom1Scale=1.1
[GlobalParams]
offset = 20
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
num_steps = 1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
# print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[dof_map]
type = DOFMap
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
# electrode_area = 1.1
# ballast_resist = 1.1
# e = 1.1
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
potential = potential
mean_en = mean_en
em = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emliq_lin]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[OHm_lin]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = x
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_lin OHm_lin' # H3Op_lin OHm_lin'
expression = '-emliq_lin - OHm_lin' # 'H3Op_lin - em_lin - OHm_lin'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = Density
variable = em_lin
density_log = em
block = 0
[]
[emliq_lin]
type = Density
variable = emliq_lin
density_log = emliq
block = 1
[]
[Arp_lin]
type = Density
variable = Arp_lin
density_log = Arp
block = 0
[]
[OHm_lin]
type = Density
variable = OHm_lin
density_log = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
potential = potential
density_log = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
potential = potential
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
mean_en_neighbor = mean_en
potential_neighbor = potential
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
mean_en_neighbor = mean_en
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
potential = potential
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
potential = potential
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
# [em_ic]
# type = RandomIC
# variable = em
# block = 0
# min = -21.5
# max = -20.5
# []
# [emliq_ic]
# type = RandomIC
# variable = emliq
# block = 1
# min = -21.5
# max = -20.5
# []
# [Arp_ic]
# type = RandomIC
# variable = Arp
# block = 0
# min = -21.5
# max = -20.5
# []
# [mean_en_ic]
# type = RandomIC
# variable = mean_en
# block = 0
# min = -20.5
# max = -19.5
# []
# type = RandomIC
# variable = OHm
# block = 1
# min = -16.1
# max = -15.1
# []
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = 1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = .05
block = 0
property_tables_file = td_argon_mean_en.txt
[]
[water_block]
type = Water
block = 1
potential = potential
[]
[]
(test/tests/reflections/Schottky_300_V_5_um/Input.i)
dom0Scale = 1
dom0Size = 5E-6 #m
vhigh = -400E-3 #kV
[GlobalParams]
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = 1E-6
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 1e-9
nl_abs_tol = 1e-9
dtmin = 1e-16
dtmax = 0.1E-7
nl_max_its = 100
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e0
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 45
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 45
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 45
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
tau = 100E-9
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
# [Arp_physical_left_diffusion]
# type = HagelaarIonDiffusionBC
# variable = Arp
# boundary = 'left'
# r = 0
# position_units = ${dom0Scale}
# []
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
# [Arp_physical_right_diffusion]
# type = HagelaarIonDiffusionBC
# variable = Arp
# boundary = right
# r = 0
# position_units = ${dom0Scale}
# []
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyAdvectionBC
variable = mean_en
boundary = 'left'
potential = potential
ions = Arp
r = 0
position_units = ${dom0Scale}
secondary_electron_energy = 3
emission_coeffs = 0.02
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -42
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -45
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -36
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/Lymberopoulos_rf_discharge/Lymberopoulos_with_argon_metastables_2D_At100mTorr_CoarseMesh.i)
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = V
use_moles = true
[]
[Mesh]
type = FileMesh
file = 'GEC_mesh_coarse.msh'
coord_type = RZ
rz_coord_axis = Y
[]
[Variables]
[em]
[]
[Ar+]
[]
[Ar*]
[]
[mean_en]
[]
[potential]
[]
[potential_ion]
[]
[]
[Kernels]
#Electron Equations (Same as in paper)
#Time Derivative term of electron
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons
[em_diffusion]
type = CoeffDiffusion
variable = em
position_units = ${dom0Scale}
[]
#Net electron production from ionization
[em_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Ion Equations (Same as in paper)
#Time Derivative term of the ions
[Ar+_time_deriv]
type = ElectronTimeDerivative
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
potential = potential_ion
position_units = ${dom0Scale}
[]
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Net ion production from ionization
[Ar+_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Excited Equations (Same as in paper)
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = ElectronTimeDerivative
variable = Ar*
[]
#Diffusion term of excited Argon
[Ar*_diffusion]
type = CoeffDiffusion
variable = Ar*
position_units = ${dom0Scale}
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Voltage Equations (Same as in paper)
#Voltage term in Poissons Eqaution
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom0Scale}
[]
#Ion term in Poissons Equation
[Ar+_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar+
[]
#Electron term in Poissons Equation
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
[]
#Since the paper uses electron temperature as a variable, the energy equation is in
#a different form but should be the same physics
#Time Derivative term of electron energy
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
position_units = ${dom0Scale}
[]
#Energy loss from ionization
[Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
# Energy loss from elastic collisions
[Elastic_loss]
type = EEDFElasticLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar'
[]
#Effective potential for the Ions
[Ion_potential_time_deriv]
type = TimeDerivative
variable = potential_ion
[]
[Ion_potential_reaction]
type = ScaledReaction
variable = potential_ion
collision_freq = 1283370.875
[]
[Ion_potential_coupled_force]
type = CoupledForce
variable = potential_ion
v = potential
coef = 1283370.875
[]
[]
[AuxVariables]
[emDeBug]
[]
[Ar+_DeBug]
[]
[Ar*_DeBug]
[]
[mean_enDeBug]
[]
[potential_DeBug]
[]
[Te]
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[y]
order = CONSTANT
family = MONOMIAL
[]
[y_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[Efieldx]
order = CONSTANT
family = MONOMIAL
[]
[Efieldy]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[Current_Ar]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[emRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[exRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[swRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[quRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[]
[AuxKernels]
#[emDeBug]
# type = DebugResidualAux
# variable = emDeBug
# debug_variable = em
#[]
#[Ar+_DeBug]
# type = DebugResidualAux
# variable = Ar+_DeBug
# debug_variable = Ar+
#[]
#[mean_enDeBug]
# type = DebugResidualAux
# variable = mean_enDeBug
# debug_variable = mean_en
#[]
#[Ar*_DeBug]
# type = DebugResidualAux
# variable = Ar*_DeBug
# debug_variable = Ar*
#[]
#[Potential_DeBug]
# type = DebugResidualAux
# variable = potential_DeBug
# debug_variable = potential
#[]
[emRate]
type = ProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ProcRateForRateCoeff
variable = exRate
v = em
w = Ar*
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[Te]
type = ElectronTemperature
variable = Te
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[y_g]
type = Position
variable = y
position_units = ${dom0Scale}
[]
[y_ng]
type = Position
variable = y_node
position_units = ${dom0Scale}
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
[]
[Ar+_lin]
type = DensityMoles
variable = Ar+_lin
density_log = Ar+
[]
[Ar*_lin]
type = DensityMoles
variable = Ar*_lin
density_log = Ar*
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e2
value = -5.231208
execute_on = INITIAL
[]
[Efieldx_calc]
type = Efield
component = 0
potential = potential
variable = Efieldx
position_units = ${dom0Scale}
[]
[Efieldy_calc]
type = Efield
component = 1
potential = potential
variable = Efieldy
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 'plasma'
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
potential = potential_ion
density_log = Ar+
variable = Current_Ar
art_diff = false
block = 'plasma'
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition, same as in paper
[potential_top_plate]
type = FunctionDirichletBC
variable = potential
boundary = 'Top_Electrode'
function = potential_top_bc_func
preset = false
[]
[potential_bottom_plate]
type = FunctionDirichletBC
variable = potential
boundary = 'Bottom_Electrode'
function = potential_bottom_bc_func
preset = false
[]
[potential_dirichlet_bottom_plate]
type = DirichletBC
variable = potential
boundary = 'Walls'
value = 0
preset = false
[]
[potential_Dielectric]
type = EconomouDielectricBC
variable = potential
boundary = 'Top_Insulator Bottom_Insulator'
electrons = em
ions = Ar+
ion_potentials = potential_ion
electron_energy = mean_en
dielectric_constant = 1.859382e-11
thickness = 0.0127
emission_coeffs = 0.01
position_units = ${dom0Scale}
[]
#New Boundary conditions for electons, same as in paper
[em_physical_diffusion]
type = SakiyamaElectronDiffusionBC
variable = em
electron_energy = mean_en
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[em_Ar+_second_emissions]
type = SakiyamaSecondaryElectronBC
variable = em
potential = potential_ion
ions = Ar+
emission_coeffs = 0.01
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_advection]
type = SakiyamaIonAdvectionBC
variable = Ar+
potential = potential_ion
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
#(except the metastables are not set to zero, since Zapdos uses log form)
[Ar*_physical_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
value = 100
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_diffusion]
type = SakiyamaEnergyDiffusionBC
variable = mean_en
electrons = em
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[mean_en_Ar+_second_emissions]
type = SakiyamaEnergySecondaryElectronBC
variable = mean_en
electrons = em
ions = Ar+
potential = potential_ion
Tse_equal_Te = true
emission_coeffs = 0.01
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[Ar*_ic]
type = FunctionIC
variable = Ar*
function = meta_density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_top_bc_func]
type = ParsedFunction
expression = '50*sin(2*3.1415926*13.56e6*t)'
[]
[potential_bottom_bc_func]
type = ParsedFunction
expression = '-50*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = 0
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e14)/6.022e23)'
[]
[meta_density_ic_func]
type = ParsedFunction
expression = 'log((1e16)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log((3./2.) * 4) + log((1e14)/6.022e23)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = true
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_se_coeff = 0.00
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 1.44409938
diffusivity = 6.428571e-2
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-2
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_00]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_elastic.txt'
reaction = 'em + Ar -> em + Ar'
electrons = em
[]
[reaction_0]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excitation.txt'
reaction = 'em + Ar -> em + Ar*'
mean_energy = mean_en
electrons = em
[]
[reaction_1]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_ionization.txt'
reaction = 'em + Ar -> em + em + Ar+'
mean_energy = mean_en
electrons = em
[]
[reaction_2]
type = ZapdosEEDFRateConstant
reaction = 'em + Ar* -> em + Ar'
property_file = 'Argon_reactions_paper_RateCoefficients/ar_deexcitation.txt'
mean_energy = mean_en
electrons = em
[]
[reaction_3]
type = ZapdosEEDFRateConstant
reaction = 'em + Ar* -> em + em + Ar+'
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excited_ionization.txt'
mean_energy = mean_en
electrons = em
[]
[reaction_4]
type = GenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = GenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = GenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = GenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-42
reaction_rate_value = 398909.324
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
#end_time = 7.4e-3
end_time = 1e-7
dtmax = 1e-9
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 fgmres 1e-3'
nl_rel_tol = 1e-12
#nl_abs_tol = 7.6e-5
dtmin = 1e-14
l_max_its = 20
#Time steps based on the inverse of the plasma frequency
#[TimeSteppers]
# [Postprocessor]
# type = PostprocessorDT
# postprocessor = InversePlasmaFreq
# scale = 0.1
# []
#[]
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/accelerations/Acceleration_By_Shooting_Method_SensitivityMatrix.i)
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Lymberopoulos_paper.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
[]
[Variables]
[em]
[]
[Ar+]
[]
[Ar*]
[]
[mean_en]
[]
[potential]
[]
[SMDeriv]
[]
[]
[Kernels]
#Electron Equations (Same as in paper)
#Time Derivative term of electron
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons
[em_diffusion]
type = CoeffDiffusion
variable = em
position_units = ${dom0Scale}
[]
#Net electron production from ionization
[em_ionization]
type = ADEEDFReactionLog
variable = em
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = ADEEDFReactionLog
variable = em
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ADReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Ion Equations (Same as in paper)
#Time Derivative term of the ions
[Ar+_time_deriv]
type = ElectronTimeDerivative
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Net ion production from ionization
[Ar+_ionization]
type = ADEEDFReactionLog
variable = Ar+
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = ADEEDFReactionLog
variable = Ar+
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ADReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Excited Equations (Same as in paper)
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = ElectronTimeDerivative
variable = Ar*
[]
#Diffusion term of excited Argon
[Ar*_diffusion]
type = CoeffDiffusion
variable = Ar*
position_units = ${dom0Scale}
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = ADEEDFReactionLog
variable = Ar*
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = ADEEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = ADEEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = ADEEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ADReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ADReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ADReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Voltage Equations (Same as in paper)
#Voltage term in Poissons Eqaution
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom0Scale}
[]
#Ion term in Poissons Equation
[Ar+_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar+
[]
#Electron term in Poissons Equation
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
[]
#Since the paper uses electron temperature as a variable, the energy equation is in
#a different form but should be the same physics
#Time Derivative term of electron energy
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
position_units = ${dom0Scale}
[]
#Energy loss from ionization
[Ionization_Loss]
type = ADEEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = ADEEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = ADEEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = ADEEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
#Argon Excited Equations For Shooting Method
#Time Derivative term of excited Argon
[SM_Ar*_time_deriv]
type = TimeDerivative
variable = SMDeriv
[]
#Diffusion term of excited Argon
[SM_Ar*_diffusion]
type = CoeffDiffusionForShootMethod
variable = SMDeriv
density = Ar*
position_units = ${dom0Scale}
[]
#Net excited Argon loss from step-wise ionization
[SM_Ar*_stepwise_ionization]
type = EEDFReactionLogForShootMethod
variable = SMDeriv
density = Ar*
electron = em
energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[SM_Ar*_collisions]
type = EEDFReactionLogForShootMethod
variable = SMDeriv
density = Ar*
electron = em
energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[SM_Ar*_quenching]
type = ReactionSecondOrderLogForShootMethod
variable = SMDeriv
density = Ar*
v = em
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[SM_Ar*_pooling]
type = ReactionSecondOrderLogForShootMethod
variable = SMDeriv
density = Ar*
v = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
[]
#Net excited Argon loss from two-body quenching
[SM_Ar*_2B_quenching]
type = ReactionSecondOrderLogForShootMethod
variable = SMDeriv
density = Ar*
v = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
[]
#Net excited Argon loss from three-body quenching
[SM_Ar*_3B_quenching]
type = ReactionThirdOrderLogForShootMethod
variable = SMDeriv
density = Ar*
v = Ar
w = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
[]
[]
[AuxVariables]
[emDeBug]
[]
[Ar+_DeBug]
[]
[Ar*_DeBug]
[]
[mean_enDeBug]
[]
[Te]
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Ar]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[exRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[swRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[quRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[emDeBug]
type = DebugResidualAux
variable = emDeBug
debug_variable = em
#execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
[]
[Ar+_DeBug]
type = DebugResidualAux
variable = Ar+_DeBug
debug_variable = Ar+
#execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
[]
[mean_enDeBug]
type = DebugResidualAux
variable = mean_enDeBug
debug_variable = mean_en
#execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
[]
[Ar*_DeBug]
type = DebugResidualAux
variable = Ar*_DeBug
debug_variable = Ar*
#execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
[]
[emRate]
type = ADProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ADProcRateForRateCoeff
variable = exRate
v = em
w = Ar*
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ADProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ADProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ADProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ADProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ADProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ADProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[Te]
type = ElectronTemperature
variable = Te
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
[]
[Ar+_lin]
type = DensityMoles
variable = Ar+_lin
density_log = Ar+
[]
[Ar*_lin]
type = DensityMoles
variable = Ar*_lin
density_log = Ar*
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e22
value = -2.928623
execute_on = INITIAL
[]
[Efield_calc]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
potential = potential
density_log = Ar+
variable = Current_Ar
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition, same as in paper
[potential_left]
type = FunctionDirichletBC
variable = potential
boundary = 'left'
function = potential_bc_func
preset = false
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = 'right'
value = 0
preset = false
[]
#New Boundary conditions for electons, same as in paper
[em_physical_right]
type = LymberopoulosElectronBC
variable = em
boundary = 'right'
emission_coeffs = 0.01
#gamma = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[em_physical_left]
type = LymberopoulosElectronBC
variable = em
boundary = 'left'
emission_coeffs = 0.01
#gamma = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'left'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
#(except the metastables are not set to zero, since Zapdos uses log form)
[Ar*_physical_right_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'right'
value = 1e-5
[]
[Ar*_physical_left_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'left'
value = 1e-5
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_right]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'right'
[]
[mean_en_physical_left]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'left'
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = '0.100*sin(2*pi*13.56e6*t)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_electron_mobility = 30.0
user_electron_diffusion_coeff = 119.8757763975
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 0.144409938
diffusivity = 6.428571e-3
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-3
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_0]
type = ADZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/reaction_em + Ar -> em + Ar*.txt'
reaction = 'em + Ar -> em + Ar*'
electrons = em
[]
[reaction_1]
type = ADZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/reaction_em + Ar -> em + em + Ar+.txt'
reaction = 'em + Ar -> em + em + Ar+'
electrons = em
[]
[reaction_2]
type = ADZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/reaction_em + Ar* -> em + Ar.txt'
reaction = 'em + Ar* -> em + Ar'
electrons = em
[]
[reaction_3]
type = ADZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/reaction_em + Ar* -> em + em + Ar+.txt'
reaction = 'em + Ar* -> em + em + Ar+'
electrons = em
[]
[reaction_4]
type = ADGenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = ADGenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = ADGenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = ADGenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-43
reaction_rate_value = 39890.9324
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 73.74631268e-9
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 fgmres 1e-3'
nl_rel_tol = 1e-08
#nl_abs_tol = 7.6e-5 #Commit out do to test falure on Mac
dtmin = 1e-14
l_max_its = 20
scheme = bdf2
dt = 1e-9
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/reflections/low_initial/Input.i)
dom0Scale = 1
dom0Size = 6E-6 #m
vhigh = -175E-3 #kV
[GlobalParams]
# offset = 20
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 5e-14
nl_abs_tol = 1e-13
steady_state_start_time = 1E-6
dtmin = 1e-18
dtmax = 0.1E-7
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [em_log_stabilization]
# type = LogStabilizationMoles
# variable = em
# block = 0
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [Arp_log_stabilization]
# type = LogStabilizationMoles
# variable = Arp
# block = 0
# []
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
# [mean_en_log_stabilization]
# type = LogStabilizationMoles
# variable = mean_en
# block = 0
# offset = 15
# []
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -36
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -36
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -36
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.01
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/Lymberopoulos_rf_discharge/Lymberopoulos_with_argon_metastables.i)
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Lymberopoulos.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
[]
[Variables]
[em]
[]
[Ar+]
[]
[Ar*]
[]
[mean_en]
[]
[potential]
[]
[]
[Kernels]
#Electron Equations (Same as in paper)
#Time Derivative term of electron
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons
[em_diffusion]
type = CoeffDiffusion
variable = em
position_units = ${dom0Scale}
[]
#Net electron production from ionization
[em_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Ion Equations (Same as in paper)
#Time Derivative term of the ions
[Ar+_time_deriv]
type = ElectronTimeDerivative
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Net ion production from ionization
[Ar+_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Excited Equations (Same as in paper)
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = ElectronTimeDerivative
variable = Ar*
[]
#Diffusion term of excited Argon
[Ar*_diffusion]
type = CoeffDiffusion
variable = Ar*
position_units = ${dom0Scale}
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Voltage Equations (Same as in paper)
#Voltage term in Poissons Eqaution
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom0Scale}
[]
#Ion term in Poissons Equation
[Ar+_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar+
[]
#Electron term in Poissons Equation
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
[]
#Since the paper uses electron temperature as a variable, the energy equation is in
#a different form but should be the same physics
#Time Derivative term of electron energy
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
position_units = ${dom0Scale}
[]
#Energy loss from ionization
[Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
[]
[AuxVariables]
#[emDeBug]
#[]
#[Ar+_DeBug]
#[]
#[Ar*_DeBug]
#[]
#[mean_enDeBug]
#[]
[Te]
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Ar]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[exRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[swRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[quRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
#[emDeBug]
# type = DebugResidualAux
# variable = emDeBug
# debug_variable = em
# #execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
#[]
#[Ar+_DeBug]
# type = DebugResidualAux
# variable = Ar+_DeBug
# debug_variable = Ar+
# #execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
#[]
#[mean_enDeBug]
# type = DebugResidualAux
# variable = mean_enDeBug
# debug_variable = mean_en
# #execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
#[]
#[Ar*_DeBug]
# type = DebugResidualAux
# variable = Ar*_DeBug
# debug_variable = Ar*
# #execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
#[]
[emRate]
type = ProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ProcRateForRateCoeff
variable = exRate
v = em
w = Ar*
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[Te]
type = ElectronTemperature
variable = Te
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
[]
[Ar+_lin]
type = DensityMoles
variable = Ar+_lin
density_log = Ar+
[]
[Ar*_lin]
type = DensityMoles
variable = Ar*_lin
density_log = Ar*
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e22
value = -2.928623
execute_on = INITIAL
[]
[Efield_calc]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
potential = potential
density_log = Ar+
variable = Current_Ar
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition, same as in paper
[potential_left]
type = FunctionDirichletBC
variable = potential
boundary = 'left'
function = potential_bc_func
preset = false
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = 'right'
value = 0
preset = false
[]
#New Boundary conditions for electons, same as in paper
[em_physical_right]
type = LymberopoulosElectronBC
variable = em
boundary = 'right'
emission_coeffs = 0.01
#gamma = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[em_physical_left]
type = LymberopoulosElectronBC
variable = em
boundary = 'left'
emission_coeffs = 0.01
#gamma = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'left'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
#(except the metastables are not set to zero, since Zapdos uses log form)
[Ar*_physical_right_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'right'
value = 100
[]
[Ar*_physical_left_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'left'
value = 100
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_right]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'right'
[]
[mean_en_physical_left]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'left'
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[Ar*_ic]
type = FunctionIC
variable = Ar*
function = density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = '0.100*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = '0.100 * (25.4e-3 - x)'
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log(3./2.) + log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_electron_mobility = 30.0
user_electron_diffusion_coeff = 119.8757763975
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 0.144409938
diffusivity = 6.428571e-3
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-3
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_0]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excitation.txt'
reaction = 'em + Ar -> em + Ar*'
electrons = em
[]
[reaction_1]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_ionization.txt'
reaction = 'em + Ar -> em + em + Ar+'
electrons = em
[]
[reaction_2]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_deexcitation.txt'
reaction = 'em + Ar* -> em + Ar'
electrons = em
[]
[reaction_3]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excited_ionization.txt'
reaction = 'em + Ar* -> em + em + Ar+'
electrons = em
[]
[reaction_4]
type = GenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = GenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = GenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = GenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-42
reaction_rate_value = 398909.324
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
#end_time = 0.00737463126
end_time = 3e-7
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 fgmres 1e-3'
nl_rel_tol = 1e-08
#nl_abs_tol = 7.6e-5 #Commit out do to test falure on Mac
dtmin = 1e-14
l_max_its = 20
#Time steps based on the inverse of the plasma frequency
[TimeSteppers]
[Postprocessor]
type = PostprocessorDT
postprocessor = InversePlasmaFreq
[]
[]
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/Schottky_emission/Example4/Input.i)
dom0Scale = 1
dom0Size = 2E-6 #m
vhigh = -230E-3 #kV
negVHigh = 230E-3 #kV
relaxTime = 1e-9 #s
threeTimesRelaxTime = 3e-9 #s
resistance = 1
area = 5.02e-7 # Formerly 3.14e-6
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = ${threeTimesRelaxTime}
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 1e-8
nl_abs_tol = 2e-6
dtmin = 1e-15
# dtmax = 1E-6
nl_max_its = 50
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 20
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[current_density_user_object]
type = CurrentDensityShapeSideUserObject
boundary = left
potential = potential
em = em
ip = Arp
mean_en = mean_en
execute_on = 'linear nonlinear'
[]
[data_provider]
type = ProvideMobility
electrode_area = ${area}
ballast_resist = ${resistance}
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 20
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 20
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 35
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = DensityMoles
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityMoles
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
# [potential_left]
# type = NeumannCircuitVoltageMoles_KV
# variable = potential
# boundary = left
# function = potential_bc_func
# ions = Arp
# data_provider = data_provider
# electrons = em
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[potential_left]
boundary = left
type = PenaltyCircuitPotential
variable = potential
current = current_density_user_object
surface_potential = ${negVHigh}
surface = 'cathode'
penalty = 1
data_provider = data_provider
electrons = em
ions = Arp
electron_energy = mean_en
area = ${area}
potential_units = 'kV'
position_units = ${dom0Scale}
resistance = ${resistance}
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
tau = ${relaxTime}
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -30
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -30
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -25
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/DriftDiffusionAction/2D_RF_Plasma_actions.i)
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = V
use_moles = true
[]
[Mesh]
type = FileMesh
file = 'GEC_mesh_coarse.msh'
coord_type = RZ
rz_coord_axis = Y
[]
#Effective potentials and their kernels are not defined by the
#DriftDiffusionAction, but charged particles effective by
#this potential can by defined by the action.
[Variables]
[potential_ion]
[]
[]
#Action the supplies the drift-diffusion equations
#This action also adds JouleHeating and the ChargeSourceMoles_KV Kernels
[DriftDiffusionAction]
[Plasma]
electrons = em
secondary_charged_particles = Ar+
Neutrals = Ar*
mean_energy = mean_en
potential = potential
eff_potentials = potential_ion
Is_potential_unique = true
using_offset = false
position_units = ${dom0Scale}
Additional_Outputs = 'ElectronTemperature Current EField'
[]
[]
#The Kernels supply the sources terms
[Kernels]
#Net electron production from ionization
[em_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Net ion production from ionization
[Ar+_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Energy loss from ionization
[Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
# Energy loss from elastic collisions
[Elastic_loss]
type = EEDFElasticLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar'
[]
#Effective potential for the Ions
[Ion_potential_time_deriv]
type = TimeDerivative
variable = potential_ion
[]
[Ion_potential_reaction]
type = ScaledReaction
variable = potential_ion
collision_freq = 1283370.875
[]
[Ion_potential_coupled_force]
type = CoupledForce
variable = potential_ion
v = potential
coef = 1283370.875
[]
[]
[AuxVariables]
[x_node]
[]
[y_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[emRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[exRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[swRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[quRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[]
[AuxKernels]
[emRate]
type = ProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ProcRateForRateCoeff
variable = exRate
v = em
w = Ar*
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[x_ng]
type = Position
variable = x_node
component = 0
position_units = ${dom0Scale}
[]
[y_ng]
type = Position
variable = y_node
component = 1
position_units = ${dom0Scale}
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e2
value = -5.231208
execute_on = INITIAL
[]
[]
[BCs]
#Voltage Boundary Condition, same as in paper
[potential_top_plate]
type = FunctionDirichletBC
variable = potential
boundary = 'Top_Electrode'
function = potential_top_bc_func
preset = false
[]
[potential_bottom_plate]
type = FunctionDirichletBC
variable = potential
boundary = 'Bottom_Electrode'
function = potential_bottom_bc_func
preset = false
[]
[potential_dirichlet_bottom_plate]
type = DirichletBC
variable = potential
boundary = 'Walls'
value = 0
preset = false
[]
[potential_Dielectric]
type = EconomouDielectricBC
variable = potential
boundary = 'Top_Insulator Bottom_Insulator'
electrons = em
ions = Ar+
ion_potentials = potential_ion
electron_energy = mean_en
dielectric_constant = 1.859382e-11
thickness = 0.0127
emission_coeffs = 0.01
position_units = ${dom0Scale}
[]
#New Boundary conditions for electons, same as in paper
[em_physical_diffusion]
type = SakiyamaElectronDiffusionBC
variable = em
electron_energy = mean_en
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[em_Ar+_second_emissions]
type = SakiyamaSecondaryElectronBC
variable = em
potential = potential_ion
ions = Ar+
emission_coeffs = 0.01
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_advection]
type = SakiyamaIonAdvectionBC
variable = Ar+
potential = potential_ion
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
#(except the metastables are not set to zero, since Zapdos uses log form)
[Ar*_physical_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
value = 100
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_diffusion]
type = SakiyamaEnergyDiffusionBC
variable = mean_en
electrons = em
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[mean_en_Ar+_second_emissions]
type = SakiyamaEnergySecondaryElectronBC
variable = mean_en
electrons = em
ions = Ar+
potential = potential_ion
Tse_equal_Te = true
emission_coeffs = 0.01
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[Ar*_ic]
type = FunctionIC
variable = Ar*
function = meta_density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_top_bc_func]
type = ParsedFunction
expression = '50*sin(2*3.1415926*13.56e6*t)'
[]
[potential_bottom_bc_func]
type = ParsedFunction
expression = '-50*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = 0
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e14)/6.022e23)'
[]
[meta_density_ic_func]
type = ParsedFunction
expression = 'log((1e16)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log((3./2.) * 4) + log((1e14)/6.022e23)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = true
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_se_coeff = 0.00
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 1.44409938
diffusivity = 6.428571e-2
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-2
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_00]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_elastic.txt'
reaction = 'em + Ar -> em + Ar'
electrons = em
[]
[reaction_0]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excitation.txt'
reaction = 'em + Ar -> em + Ar*'
mean_energy = mean_en
electrons = em
[]
[reaction_1]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_ionization.txt'
reaction = 'em + Ar -> em + em + Ar+'
mean_energy = mean_en
electrons = em
[]
[reaction_2]
type = ZapdosEEDFRateConstant
reaction = 'em + Ar* -> em + Ar'
property_file = 'Argon_reactions_paper_RateCoefficients/ar_deexcitation.txt'
mean_energy = mean_en
electrons = em
[]
[reaction_3]
type = ZapdosEEDFRateConstant
reaction = 'em + Ar* -> em + em + Ar+'
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excited_ionization.txt'
mean_energy = mean_en
electrons = em
[]
[reaction_4]
type = GenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = GenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = GenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = GenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-42
reaction_rate_value = 398909.324
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
#end_time = 7.4e-3
end_time = 1e-7
dtmax = 1e-9
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 fgmres 1e-3'
nl_rel_tol = 1e-12
#nl_abs_tol = 7.6e-5
dtmin = 1e-14
l_max_its = 20
#Time steps based on the inverse of the plasma frequency
#[TimeSteppers]
# [Postprocessor]
# type = PostprocessorDT
# postprocessor = InversePlasmaFreq
# scale = 0.1
# []
#[]
[]
[Outputs]
file_base = '2D_RF_out'
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/reflections/base/Input.i)
dom0Scale = 1
dom0Size = 6E-6 #m
vhigh = -175E-3 #kV
[GlobalParams]
# offset = 20
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 1e-15
nl_abs_tol = 0.5e-12
steady_state_start_time = 1E-6
dtmin = 1e-18
dtmax = 0.1E-7
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [em_log_stabilization]
# type = LogStabilizationMoles
# variable = em
# block = 0
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
# [Arp_log_stabilization]
# type = LogStabilizationMoles
# variable = Arp
# block = 0
# []
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
# [mean_en_log_stabilization]
# type = LogStabilizationMoles
# variable = mean_en
# block = 0
# offset = 15
# []
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.01
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 1
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 1
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -35
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -35
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -35
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.01
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/DriftDiffusionAction/mean_en_actions.i)
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20.0
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
# petsc_options_iname = '-pc_type -sub_pc_type'
# petsc_options_value = 'asm lu'
# petsc_options_iname = '-snes_type'
# petsc_options_value = 'test'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
# dt = 1.1
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
file_base = out
perf_graph = true
[out]
type = Exodus
execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
# electrode_area = 1.1
# ballast_resist = 1.1
# e = 1.1
[]
[]
#The potential needs to be defined outside of the Action,
#since it is present in both Blocks
[Variables]
[potential]
[]
[]
#Action the supplies the drift-diffusion equations for both Blocks,
#This action also adds JouleHeating and the ChargeSourceMoles_KV Kernels
[DriftDiffusionAction]
[Plasma]
electrons = em
charged_particle = Arp
potential = potential
Is_potential_unique = false
mean_energy = mean_en
using_offset = true
position_units = ${dom0Scale}
block = 0
Additional_Outputs = 'ElectronTemperature Current EField'
[]
[Water]
electrons = emliq
charged_particle = OHm
potential = potential
Is_potential_unique = false
using_offset = true
position_units = ${dom1Scale}
block = 1
Additional_Outputs = 'Current EField'
[]
[]
#The Kernels supply the sources terms
[Kernels]
[em_ionization]
type = ElectronsFromIonization
variable = em
potential = potential
mean_en = mean_en
em = em
block = 0
position_units = ${dom0Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[]
[AuxVariables]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_density Arp_density'
expression = 'Arp_density - em_density'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_density OHm_density'
expression = '-emliq_density - OHm_density'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
mean_en_neighbor = mean_en
potential_neighbor = potential
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
mean_en_neighbor = mean_en
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
potential = potential
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
position_units = ${dom0Scale}
secondary_electron_energy = 3
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
potential = potential
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.05
block = 0
property_tables_file = td_argon_mean_en.txt
[]
[water_block]
type = Water
block = 1
potential = potential
[]
[]
(test/tests/Schottky_emission/Example4/Jac.i)
dom0Scale = 1
dom0Size = 2E-6 #m
vhigh = 230E-3 #kV
negVHigh = -230E-3 #kV
# relaxTime = 50E-6 #s
threeTimesRelaxTime = 150E-6 #s
resistance = 1
area = 5.02e-7 # Formerly 3.14e-6
[GlobalParams]
# offset = 25
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
# type = FileMesh
# file = 'Geometry.msh'
type = GeneratedMesh
nx = 1
dim = 1
xmax = ${dom0Size}
[]
[Problem]
type = FEProblem
kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = ${threeTimesRelaxTime}
petsc_options = '-snes_converged_reason -snes_linesearch_monitor -snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-snes_type'
petsc_options_value = 'test'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dtmin = 1e-25
# dtmax = 1E-6
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[current_density_user_object]
type = CurrentDensityShapeSideUserObject
boundary = left
potential = potential
em = em
ip = Arp
mean_en = mean_en
execute_on = 'linear nonlinear'
[]
[data_provider]
type = ProvideMobility
electrode_area = ${area}
ballast_resist = ${resistance}
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
# [Arp_log_stabilization]
# type = LogStabilizationMoles
# variable = Arp
# offset = 20
# block = 0
# []
# [em_log_stabilization]
# type = LogStabilizationMoles
# variable = em
# offset = 20
# block = 0
# []
# [mean_en_log_stabilization]
# type = LogStabilizationMoles
# variable = mean_en
# block = 0
# offset = 35
# []
# # [mean_en_advection_stabilization]
# # type = EFieldArtDiff
# # variable = mean_en
# # potential = potential
# # block = 0
# # []
# [em_time_deriv]
# type = ElectronTimeDerivative
# variable = em
# block = 0
# []
# [em_advection]
# type = EFieldAdvection
# variable = em
# potential = potential
# mean_en = mean_en
# block = 0
# position_units = ${dom0Scale}
# []
# [em_diffusion]
# type = CoeffDiffusion
# variable = em
# mean_en = mean_en
# block = 0
# position_units = ${dom0Scale}
# []
# [em_ionization]
# type = ElectronsFromIonization
# em = em
# variable = em
# potential = potential
# mean_en = mean_en
# block = 0
# position_units = ${dom0Scale}
# []
# [potential_diffusion_dom1]
# type = CoeffDiffusionLin
# variable = potential
# block = 0
# position_units = ${dom0Scale}
# []
# [Arp_charge_source]
# type = ChargeSourceMoles_KV
# variable = potential
# charged = Arp
# block = 0
# []
# [em_charge_source]
# type = ChargeSourceMoles_KV
# variable = potential
# charged = em
# block = 0
# []
# [Arp_time_deriv]
# type = ElectronTimeDerivative
# variable = Arp
# block = 0
# []
# [Arp_advection]
# type = EFieldAdvection
# variable = Arp
# potential = potential
# position_units = ${dom0Scale}
# block = 0
# []
# [Arp_diffusion]
# type = CoeffDiffusion
# variable = Arp
# block = 0
# position_units = ${dom0Scale}
# []
# [Arp_ionization]
# type = IonsFromIonization
# variable = Arp
# potential = potential
# em = em
# mean_en = mean_en
# block = 0
# position_units = ${dom0Scale}
# []
# [mean_en_time_deriv]
# type = ElectronTimeDerivative
# variable = mean_en
# block = 0
# []
# [mean_en_advection]
# type = EFieldAdvection
# variable = mean_en
# potential = potential
# em = em
# block = 0
# position_units = ${dom0Scale}
# []
# [mean_en_diffusion]
# type = CoeffDiffusion
# variable = mean_en
# em = em
# block = 0
# position_units = ${dom0Scale}
# []
# [mean_en_joule_heating]
# type = JouleHeating
# variable = mean_en
# potential = potential
# em = em
# block = 0
# position_units = ${dom0Scale}
# []
# [mean_en_ionization]
# type = ElectronEnergyLossFromIonization
# variable = mean_en
# potential = potential
# em = em
# block = 0
# position_units = ${dom0Scale}
# []
# [mean_en_elastic]
# type = ElectronEnergyLossFromElastic
# variable = mean_en
# potential = potential
# em = em
# block = 0
# position_units = ${dom0Scale}
# []
# [mean_en_excitation]
# type = ElectronEnergyLossFromExcitation
# variable = mean_en
# potential = potential
# em = em
# block = 0
# position_units = ${dom0Scale}
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
# [potential_left]
# type = NeumannCircuitVoltageMoles_KV
# variable = potential
# boundary = left
# function = potential_bc_func
# ions = Arp
# data_provider = data_provider
# electrons = em
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[potential_left]
boundary = left
type = PenaltyCircuitPotential
variable = potential
current = current_density_user_object
surface_potential = ${negVHigh}
surface = 'cathode'
penalty = 1
data_provider = data_provider
electrons = em
ions = Arp
electron_energy = mean_en
area = ${area}
potential_units = 'kV'
position_units = ${dom0Scale}
resistance = ${resistance}
[]
# [potential_dirichlet_right]
# type = DirichletBC
# variable = potential
# boundary = right
# value = 0
# []
# ## Electron boundary conditions ##
# [Emission_left]
# type = SchottkyEmissionBC
# # type = SecondaryElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# ions = Arp
# electron_energy = mean_en
# r = 1
# position_units = ${dom0Scale}
# # tau = ${relaxTime}
# relax = true
# []
# # [em_physical_left]
# # type = HagelaarElectronBC
# # variable = em
# # boundary = 'left'
# # potential = potential
# # electron_energy = mean_en
# # r = 0
# # position_units = ${dom0Scale}
# # []
# [em_physical_right]
# type = HagelaarElectronAdvectionBC
# variable = em
# boundary = right
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
# ## Argon boundary conditions ##
# [Arp_physical_left_diffusion]
# type = HagelaarIonDiffusionBC
# variable = Arp
# boundary = 'left'
# r = 0
# position_units = ${dom0Scale}
# []
# [Arp_physical_left_advection]
# type = HagelaarIonAdvectionBC
# variable = Arp
# boundary = 'left'
# potential = potential
# r = 0
# position_units = ${dom0Scale}
# []
# [Arp_physical_right_diffusion]
# type = HagelaarIonDiffusionBC
# variable = Arp
# boundary = right
# r = 0
# position_units = ${dom0Scale}
# []
# [Arp_physical_right_advection]
# type = HagelaarIonAdvectionBC
# variable = Arp
# boundary = right
# potential = potential
# r = 0
# position_units = ${dom0Scale}
# []
# ## Mean energy boundary conditions ##
# [mean_en_physical_left]
# type = HagelaarEnergyBC
# variable = mean_en
# boundary = 'left'
# potential = potential
# electrons = em
# ions = Arp
# r = 0
# position_units = ${dom0Scale}
# []
# [mean_en_physical_right]
# type = HagelaarEnergyBC
# variable = mean_en
# boundary = right
# potential = potential
# electrons = em
# ions = Arp
# r = 0
# position_units = ${dom0Scale}
# []
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
variable = em
type = RandomIC
block = 0
min = -20
max = -15
[]
[Arp_ic]
variable = Arp
type = RandomIC
block = 0
min = -20
max = -15
[]
[mean_en_ic]
variable = mean_en
type = RandomIC
block = 0
min = -20
max = -15
[]
[]
[Functions]
# [potential_bc_func]
# type = ParsedFunction
# symbol_names = 'VHigh'
# symbol_values = '${vhigh}'
# expression = 'VHigh'
# []
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/Conference_Syntax_Tests/Lymberopoulos_with_argon_metastables.i)
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Lymberopoulos.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
[]
[Variables]
[em]
[]
[Ar+]
[]
[Ar*]
[]
[mean_en]
[]
[potential]
[]
[]
[Kernels]
#Electron Equations (Same as in paper)
#Time Derivative term of electron
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons
[em_diffusion]
type = CoeffDiffusion
variable = em
position_units = ${dom0Scale}
[]
#Net electron production from ionization
[em_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Ion Equations (Same as in paper)
#Time Derivative term of the ions
[Ar+_time_deriv]
type = ElectronTimeDerivative
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Net ion production from ionization
[Ar+_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Excited Equations (Same as in paper)
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = ElectronTimeDerivative
variable = Ar*
[]
#Diffusion term of excited Argon
[Ar*_diffusion]
type = CoeffDiffusion
variable = Ar*
position_units = ${dom0Scale}
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Voltage Equations (Same as in paper)
#Voltage term in Poissons Eqaution
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom0Scale}
[]
#Ion term in Poissons Equation
[Ar+_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar+
[]
#Electron term in Poissons Equation
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
[]
#Since the paper uses electron temperature as a variable, the energy equation is in
#a different form but should be the same physics
#Time Derivative term of electron energy
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
position_units = ${dom0Scale}
[]
#Energy loss from ionization
[Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
[]
[AuxVariables]
#[emDeBug]
#[]
#[Ar+_DeBug]
#[]
#[Ar*_DeBug]
#[]
#[mean_enDeBug]
#[]
[Te]
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Ar]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[emRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[exRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[swRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[quRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
#[emDeBug]
# type = DebugResidualAux
# variable = emDeBug
# debug_variable = em
# #execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
#[]
#[Ar+_DeBug]
# type = DebugResidualAux
# variable = Ar+_DeBug
# debug_variable = Ar+
# #execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
#[]
#[mean_enDeBug]
# type = DebugResidualAux
# variable = mean_enDeBug
# debug_variable = mean_en
# #execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
#[]
#[Ar*_DeBug]
# type = DebugResidualAux
# variable = Ar*_DeBug
# debug_variable = Ar*
# #execute_on = 'LINEAR NONLINEAR TIMESTEP_BEGIN'
#[]
[emRate]
type = ProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ProcRateForRateCoeff
variable = exRate
v = em
w = Ar*
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[Te]
type = ElectronTemperature
variable = Te
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
[]
[Ar+_lin]
type = DensityMoles
variable = Ar+_lin
density_log = Ar+
[]
[Ar*_lin]
type = DensityMoles
variable = Ar*_lin
density_log = Ar*
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e22
value = -2.928623
execute_on = INITIAL
[]
[Efield_calc]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
potential = potential
density_log = Ar+
variable = Current_Ar
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition, same as in paper
[potential_left]
type = FunctionDirichletBC
variable = potential
boundary = 'left'
function = potential_bc_func
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = 'right'
value = 0
[]
#New Boundary conditions for electons, same as in paper
[em_physical_right]
type = LymberopoulosElectronBC
variable = em
boundary = 'right'
emission_coeffs = 0.01
#emission_coeffs = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[em_physical_left]
type = LymberopoulosElectronBC
variable = em
boundary = 'left'
emission_coeffs = 0.01
#emission_coeffs = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'left'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
#(except the metastables are not set to zero, since Zapdos uses log form)
[Ar*_physical_right_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'right'
value = 100
[]
[Ar*_physical_left_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'left'
value = 100
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_right]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'right'
[]
[mean_en_physical_left]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'left'
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[Ar*_ic]
type = FunctionIC
variable = Ar*
function = density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = '0.100*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = '0.100 * (25.4e-3 - x)'
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log(3./2.) + log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_electron_mobility = 30.0
user_electron_diffusion_coeff = 119.8757763975
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 0.144409938
diffusivity = 6.428571e-3
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-3
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_0]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excitation.txt'
reaction = 'em + Ar -> em + Ar*'
electrons = em
[]
[reaction_1]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_ionization.txt'
reaction = 'em + Ar -> em + em + Ar+'
electrons = em
[]
[reaction_2]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_deexcitation.txt'
reaction = 'em + Ar* -> em + Ar'
electrons = em
[]
[reaction_3]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excited_ionization.txt'
reaction = 'em + Ar* -> em + em + Ar+'
electrons = em
[]
[reaction_4]
type = GenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = GenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = GenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = GenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-42
reaction_rate_value = 398909.324
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 0.00737463126
#end_time = 3e-7
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 fgmres 1e-3'
nl_rel_tol = 1e-08
#nl_abs_tol = 7.6e-5 #Commit out do to test falure on Mac
dtmin = 1e-14
l_max_its = 20
#Time steps based on the inverse of the plasma frequency
[TimeSteppers]
[Postprocessor]
type = PostprocessorDT
postprocessor = InversePlasmaFreq
[]
[]
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/Schottky_emission/PaschenLaw/Input.i)
dom0Scale = 1
dom0Size = 5E-6 #m
vhigh = -0.10 #kV
[GlobalParams]
# offset = 25
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = 10E-6
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 1e-15
nl_abs_tol = 1e-11
dtmin = 1e-20
# dtmax = 1E-6
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e0
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 50
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 50
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 50
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
# tau = 5E-6
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -33
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -33
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -29
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(tutorial/tutorial06-Building-InputFile/RF_Plasma_Blank.i)
#In this tutorial, users input the missing data for
#Zapdos’s Drift-Diffusion Action and CRANE’s Reactions Action.
#The simulation is a simple electron and ion only argon plasma,
#where “reaction1” is the metastable excitation reaction
#and “reaction2” is ionization. The reaction coefficients are in “rate” form.
#A uniform scaling factor of the mesh.
#E.g if set to 1.0, there is not scaling
# and if set to 0.010, there mesh is scaled by a cm
dom0Scale=25.4e-3
[GlobalParams]
#Scales the potential by V or kV
potential_units = kV
#Converts density from #/m^3 to moles/m^3
use_moles = true
[]
[Mesh]
#Mesh is define by a Gmsh file
[geo]
type = FileMeshGenerator
file = 'Lymberopoulos_paper.msh'
[]
#Renames all sides with the specified normal
#For 1D, this is used to rename the end points of the mesh
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = geo
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
#Defines the problem type, such as FE, eigen value problem, etc.
[Problem]
type = FEProblem
[]
[DriftDiffusionAction]
[Plasma]
#User define name for electrons (usually 'em')
electrons =
#User define name for ions
charged_particle =
#User define name for potential (usually 'potential')
potential =
#Defines if this potential exist in only one block/material (set 'true' for single gases)
Is_potential_unique =
#User define name for the electron mean energy density (usually 'mean_en')
mean_energy =
#The position scaling for the mesh, define at top of input file
position_units = ${dom0Scale}
#Additional outputs, such as ElectronTemperature, Current, and EField.
Additional_Outputs =
[]
[]
[Reactions]
[Gas]
#Name of reactant species that are variables
species =
#Name of reactant species that are auxvariables
aux_species =
#Type of coefficient (rate or townsend)
reaction_coefficient_format =
#Name of background gas
gas_species =
#Name of the electron mean energy density (usually 'mean_en')
electron_energy =
#Name of the electrons (usually 'em')
electron_density =
#Defines if electrons are tracked
include_electrons =
#Name of name for potential (usually 'potential')
potential =
#Defines if log form is used (true for Zapdos)
use_log = true
#Defines if automatic differentiation is used (true for Zapdos)
use_ad = true
#The position scaling for the mesh, define at top of input file
position_units = ${dom0Scale}
#Name of material block ('0' for an user undefined block)
block = 0
#Inputs of the plasma chemsity
#e.g. Reaction : Constant or EEDF dependent [Threshold Energy] (Text file name)
# em + Ar -> em + Ar* : EEDF [-11.56] (reaction1)
reactions =
[]
[]
[AuxVariables]
#Add a scaled position units used for plotting other element AuxVariables
[x_node]
[]
#Background gas (e.g Ar)
[Ar]
[]
[]
[AuxKernels]
#Add at scaled position units used for plotting other element AuxVariables
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
#Background gas number density (e.g. for 1Torr)
[Ar_val]
type = FunctionAux
variable = Ar
function = 'log(3.22e22/6.022e23)'
execute_on = INITIAL
[]
[]
#Currently there is no Action for BC (but one is currently in development)
#Below is the Lymberopulos family of BC
#(For other BC example, please look at Tutorial 04 and Tutorial 06)
[BCs]
#Voltage Boundary Condition Ffor a Power-Ground RF Discharge
[potential_left]
type = FunctionDirichletBC
variable = potential
boundary = 'left'
function = potential_bc_func
preset = false
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = 'right'
value = 0
preset = false
[]
#Boundary conditions for electons
[em_physical_right]
type = LymberopoulosElectronBC
variable = em
boundary = 'right left'
emission_coeffs = 0.01 #Secondary electron coeff.
ks = 1.19e5 #Thermal electron velocity
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
#Boundary conditions for ions
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'right left'
position_units = ${dom0Scale}
[]
#Boundary conditions for mean energy
[mean_en_physical_right]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5 #Electron Temperature in eV
boundary = 'right left'
[]
[]
#Initial conditions for variables.
#If left undefine, the IC is zero
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
#Define function used throughout the input file (e.g. BCs and ICs)
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = '0.100*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = '0.100 * (25.4e-3 - x)'
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log(3./2.) + log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[]
[Materials]
#The material properties for electrons.
#Also hold universal constant, such as Avogadro's number, elementary charge, etc.
[GasBasics]
type = GasElectronMoments
#False means constant electron coeff, defined by user
interp_trans_coeffs = false
#Leave as false (CRANE accounts of elastic coeff.)
interp_elastic_coeff = false
#Leave as false, unless computational error is due to rapid coeff. changes
ramp_trans_coeffs = false
#User difine pressure in pa
user_p_gas = 133.322
#Name for electrons (usually 'em')
em = em
#Name for potential (usually 'potential')
potential = potential
#Name for the electron mean energy density (usually 'mean_en')
mean_en = mean_en
#User define electron mobility coeff. (define as 0.0 if not used)
user_electron_mobility = 30.0
#User define electron diffusion coeff. (define as 0.0 if not used)
user_electron_diffusion_coeff = 119.8757763975
#Name of text file with electron properties
property_tables_file = rate_coefficients/electron_moments.txt
[]
#The material properties of the ion
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 0.144409938
diffusivity = 6.428571e-3
[]
#The material properties of the background gas
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[]
#Preconditioning options
#Learn more at: https://mooseframework.inl.gov/syntax/Preconditioning/index.html
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
#How to execute the problem.
#Defines type of solve (such as steady or transient),
# solve type (Newton, PJFNK, etc.) and tolerances
[Executioner]
type = Transient
end_time = 7.3746e-5
dt = 1e-9
dtmin = 1e-14
scheme = bdf2
solve_type = NEWTON
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 1e-3'
nl_rel_tol = 1e-08
l_max_its = 20
[]
#Defines the output type of the file (multiple output files can be define per run)
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/crane_action/rate_units.i)
# THIS FILE IS BASED ON Lymberopoulos_with_argon_metastables.i
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[geo]
type = FileMeshGenerator
file = 'rate_units.msh'
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = geo
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
[]
[Variables]
[em]
[]
[Ar+]
[]
[Ar*]
[]
[mean_en]
[]
[potential]
[]
[]
[Kernels]
#Electron Equations (Same as in paper)
#Time Derivative term of electron
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons
[em_diffusion]
type = CoeffDiffusion
variable = em
position_units = ${dom0Scale}
[]
#Argon Ion Equations (Same as in paper)
#Time Derivative term of the ions
[Ar+_time_deriv]
type = ElectronTimeDerivative
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = ElectronTimeDerivative
variable = Ar*
[]
#Diffusion term of excited Argon
[Ar*_diffusion]
type = CoeffDiffusion
variable = Ar*
position_units = ${dom0Scale}
[]
#Voltage Equations (Same as in paper)
#Voltage term in Poissons Eqaution
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom0Scale}
[]
#Ion term in Poissons Equation
[Ar+_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar+
[]
#Electron term in Poissons Equation
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
[]
#Since the paper uses electron temperature as a variable, the energy equation is in
#a different form but should be the same physics
#Time Derivative term of electron energy
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
position_units = ${dom0Scale}
[]
[]
[AuxVariables]
[Te]
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Ar]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[Te]
type = ElectronTemperature
variable = Te
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
[]
[Ar+_lin]
type = DensityMoles
variable = Ar+_lin
density_log = Ar+
[]
[Ar*_lin]
type = DensityMoles
variable = Ar*_lin
density_log = Ar*
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e22
value = -2.928623
execute_on = INITIAL
[]
[Efield_calc]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
potential = potential
density_log = Ar+
variable = Current_Ar
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition, same as in paper
[potential_left]
type = FunctionDirichletBC
variable = potential
boundary = 'left'
function = potential_bc_func
preset = false
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = 'right'
value = 0
preset = false
[]
#New Boundary conditions for electons, same as in paper
[em_physical_right]
type = LymberopoulosElectronBC
variable = em
boundary = 'right'
emission_coeffs = 0.01
#emission_coeffs = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[em_physical_left]
type = LymberopoulosElectronBC
variable = em
boundary = 'left'
emission_coeffs = 0.01
#emission_coeffs = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'left'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
#(except the metastables are not set to zero, since Zapdos uses log form)
[Ar*_physical_right_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'right'
value = 100
[]
[Ar*_physical_left_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'left'
value = 100
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_right]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'right'
[]
[mean_en_physical_left]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'left'
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[Ar*_ic]
type = FunctionIC
variable = Ar*
function = density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = '0.100*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = '0.100 * (25.4e-3 - x)'
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log(3./2.) + log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_electron_mobility = 30.0
user_electron_diffusion_coeff = 119.8757763975
property_tables_file = rate_coefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 0.144409938
diffusivity = 6.428571e-3
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-3
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
#end_time = 0.00737463126
end_time = 3e-7
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 fgmres 1e-3'
nl_rel_tol = 1e-08
#nl_abs_tol = 7.6e-5 #Commit out do to test falure on Mac
dtmin = 1e-14
l_max_its = 20
#Time steps based on the inverse of the plasma frequency
[TimeSteppers]
[Postprocessor]
type = PostprocessorDT
postprocessor = InversePlasmaFreq
[]
[]
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
execute_on = 'final'
[]
[]
[Reactions]
[Argon]
species = 'Ar* em Ar+'
aux_species = 'Ar'
reaction_coefficient_format = 'rate'
gas_species = 'Ar'
electron_energy = 'mean_en'
electron_density = 'em'
include_electrons = true
file_location = 'rate_coefficients'
potential = 'potential'
use_log = true
position_units = ${dom0Scale}
block = 0
reactions = 'em + Ar -> em + Ar* : EEDF [-11.56] (reaction1)
em + Ar -> em + em + Ar+ : EEDF [-15.7] (reaction2)
em + Ar* -> em + Ar : EEDF [11.56] (reaction3)
em + Ar* -> em + em + Ar+ : EEDF [-4.14] (reaction4)
em + Ar* -> em + Ar_r : 1.2044e11
Ar* + Ar* -> Ar+ + Ar + em : 373364000
Ar* + Ar -> Ar + Ar : 1806.6
Ar* + Ar + Ar -> Ar_2 + Ar : 398909.324'
[]
[]
(tutorial/tutorial06-Building-InputFile/RF_Plasma_WithOut_Metastables.i)
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[geo]
type = FileMeshGenerator
file = 'Lymberopoulos_paper.msh'
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = geo
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
[]
[DriftDiffusionAction]
[Plasma]
electrons = em
charged_particle = Ar+
potential = potential
Is_potential_unique = true
mean_energy = mean_en
position_units = ${dom0Scale}
Additional_Outputs = 'ElectronTemperature Current EField'
[]
[]
[Reactions]
[Argon]
species = 'em Ar+'
aux_species = 'Ar'
reaction_coefficient_format = 'rate'
gas_species = 'Ar'
electron_energy = 'mean_en'
electron_density = 'em'
include_electrons = true
file_location = 'rate_coefficients'
potential = 'potential'
use_log = true
use_ad = true
position_units = ${dom0Scale}
block = 0
reactions = 'em + Ar -> em + Ar* : EEDF [-11.56] (reaction1)
em + Ar -> em + em + Ar+ : EEDF [-15.7] (reaction2)'
[]
[]
[AuxVariables]
[x_node]
[]
[Ar]
[]
[]
[AuxKernels]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[Ar_val]
type = FunctionAux
variable = Ar
function = 'log(3.22e22/6.022e23)'
execute_on = INITIAL
[]
[]
[BCs]
#Voltage Boundary Condition
[potential_left]
type = FunctionDirichletBC
variable = potential
boundary = 'left'
function = potential_bc_func
preset = false
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = 'right'
value = 0
preset = false
[]
#Boundary conditions for electons
[em_physical_right]
type = LymberopoulosElectronBC
variable = em
boundary = 'right'
emission_coeffs = 0.01
ks = 1.19e5
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
[em_physical_left]
type = LymberopoulosElectronBC
variable = em
boundary = 'left'
emission_coeffs = 0.01
ks = 1.19e5
ions = Ar+
potential = potential
position_units = ${dom0Scale}
[]
#Boundary conditions for ions
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
potential = potential
boundary = 'left'
position_units = ${dom0Scale}
[]
#Boundary conditions for mean energy
[mean_en_physical_right]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'right'
[]
[mean_en_physical_left]
type = ElectronTemperatureDirichletBC
variable = mean_en
electrons = em
value = 0.5
boundary = 'left'
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = '0.100*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = '0.100 * (25.4e-3 - x)'
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log(3./2.) + log((1e13 + 1e15 * (1-x/1)^2 * (x/1)^2)/6.022e23)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_electron_mobility = 30.0
user_electron_diffusion_coeff = 119.8757763975
property_tables_file = rate_coefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 0.144409938
diffusivity = 6.428571e-3
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 7.3746e-5
dt = 1e-9
dtmin = 1e-14
scheme = bdf2
solve_type = NEWTON
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 1e-3'
nl_rel_tol = 1e-08
l_max_its = 20
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/DriftDiffusionAction/mean_en_no_actions.i)
#This is the input file that supplied the gold output file.
#It is the same as the input file in tests/1d_dc/mean_en.i,
#execpt some of the Aux Variables are renamed for the Action test
dom0Scale = 1e-3
dom1Scale = 1e-7
[GlobalParams]
offset = 20
# offset = 0
potential_units = kV
use_moles = true
# potential_units = V
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'liquidNew.msh'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = file
[]
[interface_again]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1'
paired_block = '0'
new_boundary = 'master1_interface'
input = interface
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = interface_again
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = none
[]
[]
[Executioner]
type = Transient
end_time = 1e-1
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
# petsc_options = '-snes_test_display'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
# petsc_options_iname = '-pc_type -sub_pc_type'
# petsc_options_value = 'asm lu'
# petsc_options_iname = '-snes_type'
# petsc_options_value = 'test'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-12
l_max_its = 20
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-11
# dt = 1.1
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
file_base = out
perf_graph = true
[out]
type = Exodus
execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
# electrode_area = 1.1
# ballast_resist = 1.1
# e = 1.1
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
variable = em
potential = potential
mean_en = mean_en
em = em
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
# [em_advection_stabilization]
# type = EFieldArtDiff
# variable = em
# potential = potential
# block = 0
# []
[emliq_time_deriv]
type = ElectronTimeDerivative
variable = emliq
block = 1
[]
[emliq_advection]
type = EFieldAdvection
variable = emliq
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[emliq_diffusion]
type = CoeffDiffusion
variable = emliq
block = 1
position_units = ${dom1Scale}
[]
[emliq_reactant_first_order_rxn]
type = ReactantFirstOrderRxn
variable = emliq
block = 1
[]
[emliq_water_bi_sink]
type = ReactantAARxn
variable = emliq
block = 1
[]
[emliq_log_stabilization]
type = LogStabilizationMoles
variable = emliq
block = 1
[]
# [emliq_advection_stabilization]
# type = EFieldArtDiff
# variable = emliq
# potential = potential
# block = 1
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom2]
type = CoeffDiffusionLin
variable = potential
block = 1
position_units = ${dom1Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[emliq_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = emliq
block = 1
[]
[OHm_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = OHm
block = 1
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
# [Arp_advection_stabilization]
# type = EFieldArtDiff
# variable = Arp
# potential = potential
# block = 0
# []
[OHm_time_deriv]
type = ElectronTimeDerivative
variable = OHm
block = 1
[]
[OHm_advection]
type = EFieldAdvection
variable = OHm
potential = potential
block = 1
position_units = ${dom1Scale}
[]
[OHm_diffusion]
type = CoeffDiffusion
variable = OHm
block = 1
position_units = ${dom1Scale}
[]
[OHm_log_stabilization]
type = LogStabilizationMoles
variable = OHm
block = 1
[]
# [OHm_advection_stabilization]
# type = EFieldArtDiff
# variable = OHm
# potential = potential
# block = 1
# []
[OHm_product_first_order_rxn]
type = ProductFirstOrderRxn
variable = OHm
v = emliq
block = 1
[]
[OHm_product_aabb_rxn]
type = ProductAABBRxn
variable = OHm
v = emliq
block = 1
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15.0
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[emliq]
block = 1
# scaling = 1e-5
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
# scaling = 1e-1
[]
[OHm]
block = 1
# scaling = 1e-5
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
#[x]
# order = CONSTANT
# family = MONOMIAL
#[]
[position0]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[position1]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[rholiq]
block = 1
order = CONSTANT
family = MONOMIAL
[]
#[em_lin]
# order = CONSTANT
# family = MONOMIAL
# block = 0
#[]
[em_density]
order = CONSTANT
family = MONOMIAL
block = 0
[]
#[emliq_lin]
# order = CONSTANT
# family = MONOMIAL
# block = 1
#[]
[emliq_density]
order = CONSTANT
family = MONOMIAL
block = 1
[]
#[Arp_lin]
# order = CONSTANT
# family = MONOMIAL
# block = 0
#[]
[Arp_density]
order = CONSTANT
family = MONOMIAL
block = 0
[]
#[OHm_lin]
# block = 1
# order = CONSTANT
# family = MONOMIAL
#[]
[OHm_density]
block = 1
order = CONSTANT
family = MONOMIAL
[]
#[Efield]
# order = CONSTANT
# family = MONOMIAL
#[]
[EFieldx0]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldx1]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_liq_current]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[tot_flux_OHm]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[DiffusiveFlux_emliq]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = position0
position_units = ${dom0Scale}
block = 0
[]
[x_l]
type = Position
variable = position1
position_units = ${dom1Scale}
block = 1
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[x_nl]
type = Position
variable = x_node
position_units = ${dom1Scale}
block = 1
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_density Arp_density'
expression = 'Arp_density - em_density'
execute_on = 'timestep_end'
block = 0
[]
[rholiq]
type = ParsedAux
variable = rholiq
coupled_variables = 'emliq_density OHm_density'
expression = '-emliq_density - OHm_density'
execute_on = 'timestep_end'
block = 1
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[tot_liq_current]
type = ParsedAux
variable = tot_liq_current
coupled_variables = 'Current_emliq Current_OHm' # Current_H3Op Current_OHm'
expression = 'Current_emliq + Current_OHm' # + Current_H3Op + Current_OHm'
execute_on = 'timestep_end'
block = 1
[]
[em_lin]
type = DensityMoles
variable = em_density
density_log = em
block = 0
[]
[emliq_lin]
type = DensityMoles
variable = emliq_density
density_log = emliq
block = 1
[]
[Arp_lin]
type = DensityMoles
variable = Arp_density
density_log = Arp
block = 0
[]
[OHm_lin]
type = DensityMoles
variable = OHm_density
density_log = OHm
block = 1
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = EFieldx0
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
potential = potential
variable = EFieldx1
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
potential = potential
density_log = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
potential = potential
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
potential = potential
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_emliq]
type = ADEFieldAdvAux
potential = potential
density_log = emliq
variable = EFieldAdvAux_emliq
block = 1
position_units = ${dom1Scale}
[]
[DiffusiveFlux_emliq]
type = ADDiffusiveFlux
density_log = emliq
variable = DiffusiveFlux_emliq
block = 1
position_units = ${dom1Scale}
[]
[]
[InterfaceKernels]
[em_advection]
type = InterfaceAdvection
mean_en_neighbor = mean_en
potential_neighbor = potential
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
mean_en_neighbor = mean_en
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
potential = potential
electrons = em
r = 0.99
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
potential = potential
electron_energy = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
potential = potential
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
potential = potential
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.05
block = 0
property_tables_file = td_argon_mean_en.txt
[]
[water_block]
type = Water
block = 1
potential = potential
[]
[]
(tutorial/tutorial03-PotentialWithIonLoss/ion-loss-for-IonOnlyPlasma.i)
#This tutorial shows the decrease of potential in
#an ion-only plasma as ions leave the system.
#This is based on Lieberman’s Figure 2.2, page 27.
#A uniform scaling factor of the mesh.
#E.g if set to 1.0, there is not scaling
# and if set to 0.010, there mesh is scaled by a cm
dom0Scale = 1.0
[GlobalParams]
#Scales the potential by V or kV
potential_units = V
#Converts density from #/m^3 to moles/m^3
use_moles = true
[]
[Mesh]
#Sets up a 1D mesh from 0 to 10cm with 100 points
[geo]
type = GeneratedMeshGenerator
xmin = 0
xmax = 0.10
nx = 100
dim = 1
[]
#Renames all sides with the specified normal
#For 1D, this is used to rename the end points of the mesh
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = geo
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
#Defines the problem type, such as FE, eigen value problem, etc.
[Problem]
type = FEProblem
[]
#Zapdos's Drift-Diffusion Action that inputs the continuity equations for
# species and electon mean energy, and poisson's equation for potential
[DriftDiffusionAction]
[Plasma]
#User define name for ions
charged_particle = Ar+
#User define name for potential (usually 'potential')
potential = potential
#Defines if this potential exist in only one block/material (set 'true' for single gases)
Is_potential_unique = true
#The position scaling for the mesh, define at top of input file
position_units = ${dom0Scale}
[]
[]
[AuxVariables]
#Add a scaled position units used for plotting other Variables
[x_node]
[]
[]
[AuxKernels]
#Add at scaled position units used for plotting other Variables
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition
[potential_left]
type = DirichletBC
variable = potential
boundary = 'left right'
value = 0
preset = false
[]
#Boundary conditions for ions
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Ar+
boundary = 'right left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Ar+
boundary = 'right left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[]
#Initial conditions for variables.
#If left undefine, the IC is zero
[ICs]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = 'log(1e16/6.022e23)'
[]
[potential_ic]
type = FunctionIC
variable = potential
function = '0.5 * (1e16 * 1.6e-19) / 8.85e-12 * ((0.10/2)^2. - (x-0.10/2)^2.)'
[]
[]
[Materials]
#The material properties for electrons.
#Also hold universal constant, such as Avogadro's number, elementary charge, etc.
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 13.3322
#user_p_gas = 1.33322
potential = potential
property_tables_file = rate_coefficients/electron_moments.txt
[]
#The material properties of the ion
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
[]
[]
#Preconditioning options
#Learn more at: https://mooseframework.inl.gov/syntax/Preconditioning/index.html
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
#How to execute the problem.
#Defines type of solve (such as steady or transient),
# solve type (Newton, PJFNK, etc.) and tolerances
[Executioner]
type = Transient
end_time = 1e-10
dt = 1e-12
dtmin = 1e-14
solve_type = NEWTON
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 1e-3'
[]
#Defines the output type of the file (multiple output files can be define per run)
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/reflections/Schottky/Input.i)
dom0Scale = 1
dom0Size = 10E-6 #m
vhigh = -150E-3 #kV
[GlobalParams]
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[add_left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[add_right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = add_left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 5e-14
nl_abs_tol = 1e-13
steady_state_start_time = 1E-6
dtmin = 1e-16
dtmax = 0.1E-7
nl_max_its = 200
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 100
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 40
block = 0
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 40
block = 0
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 30
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.02
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
potential = potential
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -42
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -45
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -36
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(tutorial/tutorial04-PressureVsTe/RF_Plasma_WithOut_Metastables-1Torr.i)
#This tutorial is of an argon CCP discharge running at
#different pressures. In this case, the electron and ion coefficient are
#linearly proportional. For the following pressures,
#(0.1, 1, 10, 100, 1000 Torr)
#change the following lines (144, 245, and 257-258).
#A uniform scaling factor of the mesh.
#E.g if set to 1.0, there is not scaling
# and if set to 0.010, there mesh is scaled by a cm
dom0Scale = 1.0
[GlobalParams]
#Scales the potential by V or kV
potential_units = kV
#Converts density from #/m^3 to moles/m^3
use_moles = true
[]
[Mesh]
#Mesh is defined by a previous output file
[geo]
type = FileMeshGenerator
file = 'RF_Plasma_WithOut_Metastables_IC.e'
use_for_exodus_restart = true
[]
#Renames all sides with the specified normal
#For 1D, this is used to rename the end points of the mesh
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = geo
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
#Defines the problem type, such as FE, eigen value problem, etc.
[Problem]
type = FEProblem
[]
#Defining IC from previous output file
# (The ICs block is not used in this case)
[Variables]
[em]
initial_from_file_var = em
[]
[potential]
initial_from_file_var = potential
[]
[Ar+]
initial_from_file_var = Ar+
[]
[mean_en]
initial_from_file_var = mean_en
[]
[]
[DriftDiffusionAction]
[Plasma]
#User define name for electrons (usually 'em')
electrons = em
#User define name for ions
charged_particle = Ar+
#User define name for potential (usually 'potential')
potential = potential
#Defines if this potential exist in only one block/material (set 'true' for single gases)
Is_potential_unique = true
#User define name for the electron mean energy density (usually 'mean_en')
mean_energy = mean_en
#The position scaling for the mesh, define at top of input file
position_units = ${dom0Scale}
#Additional outputs, such as ElectronTemperature, Current, and EField.
Additional_Outputs = 'ElectronTemperature Current EField'
[]
[]
[Reactions]
[Argon]
#Name of reactant species that are variables
species = 'em Ar+'
#Name of reactant species that are auxvariables
aux_species = 'Ar'
#Type of coefficient (rate or townsend)
reaction_coefficient_format = 'rate'
#Name of background gas
gas_species = 'Ar'
#Name of the electron mean energy density (usually 'mean_en')
electron_energy = 'mean_en'
#Name of the electrons (usually 'em')
electron_density = 'em'
#Defines if electrons are tracked
include_electrons = true
#Defines directory holding rate text files
file_location = 'rate_coefficients'
#Name of name for potential (usually 'potential')
potential = 'potential'
#Defines if log form is used (true for Zapdos)
use_log = true
#Defines if automatic differentiation is used (true for Zapdos)
use_ad = true
#The position scaling for the mesh, define at top of input file
position_units = ${dom0Scale}
#Name of material block ('0' for an user undefined block)
block = 0
#Inputs of the plasma chemsity
#e.g. Reaction : Constant or EEDF dependent [Threshold Energy] (Text file name)
# em + Ar -> em + Ar* : EEDF [-11.56] (reaction1)
reactions = 'em + Ar -> em + Ar* : EEDF [-11.56] (reaction1)
em + Ar -> em + em + Ar+ : EEDF [-15.7] (reaction2)'
[]
[]
[AuxVariables]
#Add a scaled position units used for plotting other element AuxVariables
[x]
order = CONSTANT
family = MONOMIAL
[]
#Background gas (e.g Ar)
[Ar]
[]
[]
[AuxKernels]
#Add at scaled position units used for plotting other element AuxVariables
[x_ng]
type = Position
variable = x
position_units = ${dom0Scale}
[]
#Background gas number density (e.g. for 1Torr)
[Ar_val]
type = FunctionAux
variable = Ar
function = 'log(3.22e22/6.022e23)'
execute_on = INITIAL
[]
[]
#Define function used throughout the input file (e.g. BCs)
[Functions]
[potential_bc_func]
type = ParsedFunction
expression = '0.100*sin(2*3.1415926*13.56e6*t)'
[]
[]
#Currently there is no Action for BC (but one is currently in development)
#Below is the Sakiyama family of BC
#(For other BC example, please look at Tutorial 05 and Tutorial 06)
[BCs]
#Voltage Boundary Condition
[potential_left]
type = FunctionDirichletBC
variable = potential
boundary = 'left'
function = potential_bc_func
preset = false
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = 'right'
value = 0
preset = false
[]
#Boundary conditions for electons
[em_physical_diffusion]
type = SakiyamaElectronDiffusionBC
variable = em
electron_energy = mean_en
boundary = 'left right'
position_units = ${dom0Scale}
[]
[em_Ar+_second_emissions]
type = SakiyamaSecondaryElectronBC
variable = em
potential = potential
ions = Ar+
emission_coeffs = 0.01
boundary = 'left right'
position_units = ${dom0Scale}
[]
#Boundary conditions for ions
[Ar+_physical_advection]
type = SakiyamaIonAdvectionBC
variable = Ar+
potential = potential
boundary = 'left right'
position_units = ${dom0Scale}
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_diffusion]
type = SakiyamaEnergyDiffusionBC
variable = mean_en
electrons = em
boundary = 'left right'
position_units = ${dom0Scale}
[]
[mean_en_Ar+_second_emissions]
type = SakiyamaEnergySecondaryElectronBC
variable = mean_en
electrons = em
ions = Ar+
potential = potential
Tse_equal_Te = false
secondary_electron_energy = 1
emission_coeffs = 0.01
boundary = 'left right'
position_units = ${dom0Scale}
[]
[]
[Materials]
#The material properties for electrons.
#Also hold universal constant, such as Avogadro's number, elementary charge, etc.
[GasBasics]
type = GasElectronMoments
#True means variable electron coeff, defined by user
interp_trans_coeffs = true
#Leave as false (CRANE accounts of elastic coeff.)
interp_elastic_coeff = false
#Leave as false, unless computational error is due to rapid coeff. changes
ramp_trans_coeffs = false
#Name for electrons (usually 'em')
em = em
#Name for potential (usually 'potential')
potential = potential
#Name for the electron mean energy density (usually 'mean_en')
mean_en = mean_en
#User difine pressure in pa
user_p_gas = 133.322
#True if pressure dependent coeff.
pressure_dependent_electron_coeff = true
#Name of text file with electron properties
property_tables_file = rate_coefficients/electron_moments.txt
[]
#The material properties of the ion
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 0.144409938
diffusivity = 6.428571e-3
[]
[gas_species_2]
#The material properties of the background gas
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[]
[Postprocessors]
[ElectronTemp_Average]
type = ElementAverageValue
variable = e_temp
[]
[]
#Preconditioning options
#Learn more at: https://mooseframework.inl.gov/syntax/Preconditioning/index.html
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
#How to execute the problem.
#Defines type of solve (such as steady or transient),
# solve type (Newton, PJFNK, etc.) and tolerances
[Executioner]
type = Transient
start_time = 7.3746e-5
end_time = 9.3746e-5
dt = 1e-9
dtmin = 1e-14
scheme = bdf2
solve_type = NEWTON
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 1e-3'
nl_rel_tol = 1e-08
l_max_its = 20
[]
#Defines the output type of the file (multiple output files can be define per run)
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/Conference_Syntax_Tests/Lymberopoulos_with_argon_metastables_2D_At100mTorr.i)
dom0Scale = 25.4e-3
[GlobalParams]
potential_units = V
use_moles = true
[]
[Mesh]
type = FileMesh
file = 'GEC_mesh.msh'
coord_type = RZ
rz_coord_axis = Y
[]
[Variables]
[em]
[]
[Ar+]
[]
[Ar*]
[]
[mean_en]
[]
[potential]
[]
[potential_ion]
[]
[]
[Kernels]
#Electron Equations (Same as in paper)
#Time Derivative term of electron
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons
[em_diffusion]
type = CoeffDiffusion
variable = em
position_units = ${dom0Scale}
[]
#Net electron production from ionization
[em_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from step-wise ionization
[em_stepwise_ionization]
type = EEDFReactionLog
variable = em
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net electron production from metastable pooling
[em_pooling]
type = ReactionSecondOrderLog
variable = em
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Ion Equations (Same as in paper)
#Time Derivative term of the ions
[Ar+_time_deriv]
type = ElectronTimeDerivative
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
potential = potential_ion
position_units = ${dom0Scale}
[]
[Ar+_diffusion]
type = CoeffDiffusion
variable = Ar+
position_units = ${dom0Scale}
[]
#Net ion production from ionization
[Ar+_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from step-wise ionization
[Ar+_stepwise_ionization]
type = EEDFReactionLog
variable = Ar+
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = 1
[]
#Net ion production from metastable pooling
[Ar+_pooling]
type = ReactionSecondOrderLog
variable = Ar+
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = 1
[]
#Argon Excited Equations (Same as in paper)
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = ElectronTimeDerivative
variable = Ar*
[]
#Diffusion term of excited Argon
[Ar*_diffusion]
type = CoeffDiffusion
variable = Ar*
position_units = ${dom0Scale}
[]
#Net excited Argon production from excitation
[Ar*_excitation]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar
mean_energy = mean_en
reaction = 'em + Ar -> em + Ar*'
coefficient = 1
[]
#Net excited Argon loss from step-wise ionization
[Ar*_stepwise_ionization]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
[]
#Net excited Argon loss from superelastic collisions
[Ar*_collisions]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
[]
#Net excited Argon loss from quenching to resonant
[Ar*_quenching]
type = EEDFReactionLog
variable = Ar*
electrons = em
target = Ar*
mean_energy = mean_en
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
[]
#Net excited Argon loss from metastable pooling
[Ar*_pooling]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
_v_eq_u = true
_w_eq_u = true
[]
#Net excited Argon loss from two-body quenching
[Ar*_2B_quenching]
type = ReactionSecondOrderLog
variable = Ar*
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
_v_eq_u = true
[]
#Net excited Argon loss from three-body quenching
[Ar*_3B_quenching]
type = ReactionThirdOrderLog
variable = Ar*
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
_v_eq_u = true
[]
#Voltage Equations (Same as in paper)
#Voltage term in Poissons Eqaution
[potential_diffusion_dom0]
type = CoeffDiffusionLin
variable = potential
position_units = ${dom0Scale}
[]
#Ion term in Poissons Equation
[Ar+_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Ar+
[]
#Electron term in Poissons Equation
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
[]
#Since the paper uses electron temperature as a variable, the energy equation is in
#a different form but should be the same physics
#Time Derivative term of electron energy
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
position_units = ${dom0Scale}
[]
#Energy loss from ionization
[Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + em + Ar+'
threshold_energy = -15.7
[]
#Energy loss from excitation
[Excitation_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar*'
threshold_energy = -11.56
[]
#Energy loss from step-wise ionization
[Stepwise_Ionization_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
threshold_energy = -4.14
[]
#Energy gain from superelastic collisions
[Collisions_Loss]
type = EEDFEnergyLog
variable = mean_en
electrons = em
target = Ar*
reaction = 'em + Ar* -> em + Ar'
threshold_energy = 11.56
[]
# Energy loss from elastic collisions
[Elastic_loss]
type = EEDFElasticLog
variable = mean_en
electrons = em
target = Ar
reaction = 'em + Ar -> em + Ar'
[]
#Effective potential for the Ions
[Ion_potential_time_deriv]
type = TimeDerivative
variable = potential_ion
[]
[Ion_potential_reaction]
type = ScaledReaction
variable = potential_ion
collision_freq = 1283370.875
[]
[Ion_potential_coupled_force]
type = CoupledForce
variable = potential_ion
v = potential
coef = 1283370.875
[]
[]
[AuxVariables]
[emDeBug]
[]
[Ar+_DeBug]
[]
[Ar*_DeBug]
[]
[mean_enDeBug]
[]
[potential_DeBug]
[]
[Te]
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[y]
order = CONSTANT
family = MONOMIAL
[]
[y_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar]
[]
[Efieldx]
order = CONSTANT
family = MONOMIAL
[]
[Efieldy]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[Current_Ar]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[emRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[exRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[swRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[deexRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[quRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[poolRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[TwoBRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[ThreeBRate]
order = CONSTANT
family = MONOMIAL
block = 'plasma'
[]
[]
[AuxKernels]
#[emDeBug]
# type = DebugResidualAux
# variable = emDeBug
# debug_variable = em
#[]
#[Ar+_DeBug]
# type = DebugResidualAux
# variable = Ar+_DeBug
# debug_variable = Ar+
#[]
#[mean_enDeBug]
# type = DebugResidualAux
# variable = mean_enDeBug
# debug_variable = mean_en
#[]
#[Ar*_DeBug]
# type = DebugResidualAux
# variable = Ar*_DeBug
# debug_variable = Ar*
#[]
#[Potential_DeBug]
# type = DebugResidualAux
# variable = potential_DeBug
# debug_variable = potential
#[]
[emRate]
type = ProcRateForRateCoeff
variable = emRate
v = em
w = Ar
reaction = 'em + Ar -> em + em + Ar+'
[]
[exRate]
type = ProcRateForRateCoeff
variable = exRate
v = em
w = Ar*
reaction = 'em + Ar -> em + Ar*'
[]
[swRate]
type = ProcRateForRateCoeff
variable = swRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
[]
[deexRate]
type = ProcRateForRateCoeff
variable = deexRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar'
[]
[quRate]
type = ProcRateForRateCoeff
variable = quRate
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
[]
[poolRate]
type = ProcRateForRateCoeff
variable = poolRate
v = Ar*
w = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
[]
[TwoBRate]
type = ProcRateForRateCoeff
variable = TwoBRate
v = Ar*
w = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
[]
[ThreeBRate]
type = ProcRateForRateCoeffThreeBody
variable = ThreeBRate
v = Ar*
w = Ar
x = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
[]
[Te]
type = ElectronTemperature
variable = Te
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[y_g]
type = Position
variable = y
position_units = ${dom0Scale}
[]
[y_ng]
type = Position
variable = y_node
position_units = ${dom0Scale}
[]
[em_lin]
type = DensityMoles
variable = em_lin
density_log = em
[]
[Ar+_lin]
type = DensityMoles
variable = Ar+_lin
density_log = Ar+
[]
[Ar*_lin]
type = DensityMoles
variable = Ar*_lin
density_log = Ar*
[]
[Ar_val]
type = ConstantAux
variable = Ar
# value = 3.22e2
value = -5.231208
execute_on = INITIAL
[]
[Efieldx_calc]
type = Efield
component = 0
potential = potential
variable = Efieldx
position_units = ${dom0Scale}
[]
[Efieldy_calc]
type = Efield
component = 1
potential = potential
variable = Efieldy
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 'plasma'
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
potential = potential_ion
density_log = Ar+
variable = Current_Ar
art_diff = false
block = 'plasma'
position_units = ${dom0Scale}
[]
[]
[BCs]
#Voltage Boundary Condition, same as in paper
[potential_top_plate]
type = FunctionDirichletBC
variable = potential
boundary = 'Top_Electrode'
function = potential_top_bc_func
[]
[potential_bottom_plate]
type = FunctionDirichletBC
variable = potential
boundary = 'Bottom_Electrode'
function = potential_bottom_bc_func
[]
[potential_dirichlet_bottom_plate]
type = DirichletBC
variable = potential
boundary = 'Walls'
value = 0
[]
[potential_Dielectric]
type = EconomouDielectricBC
variable = potential
boundary = 'Top_Insulator Bottom_Insulator'
electrons = em
ions = Ar+
ion_potentials = potential_ion
electron_energy = mean_en
dielectric_constant = 1.859382e-11
thickness = 0.0127
emission_coeffs = 0.01
position_units = ${dom0Scale}
[]
#New Boundary conditions for electons, same as in paper
[em_physical_diffusion]
type = SakiyamaElectronDiffusionBC
variable = em
electron_energy = mean_en
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[em_Ar+_second_emissions]
type = SakiyamaSecondaryElectronBC
variable = em
potential = potential_ion
ions = Ar+
emission_coeffs = 0.01
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_advection]
type = SakiyamaIonAdvectionBC
variable = Ar+
potential = potential_ion
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
#(except the metastables are not set to zero, since Zapdos uses log form)
[Ar*_physical_diffusion]
type = LogDensityDirichletBC
variable = Ar*
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
value = 100
[]
#New Boundary conditions for mean energy, should be the same as in paper
[mean_en_physical_diffusion]
type = SakiyamaEnergyDiffusionBC
variable = mean_en
electrons = em
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[mean_en_Ar+_second_emissions]
type = SakiyamaEnergySecondaryElectronBC
variable = mean_en
electrons = em
ions = Ar+
potential = potential_ion
Tse_equal_Te = true
emission_coeffs = 0.01
boundary = 'Top_Electrode Bottom_Electrode Top_Insulator Bottom_Insulator Walls'
position_units = ${dom0Scale}
[]
[]
[ICs]
[em_ic]
type = FunctionIC
variable = em
function = density_ic_func
[]
[Ar+_ic]
type = FunctionIC
variable = Ar+
function = density_ic_func
[]
[Ar*_ic]
type = FunctionIC
variable = Ar*
function = meta_density_ic_func
[]
[mean_en_ic]
type = FunctionIC
variable = mean_en
function = energy_density_ic_func
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_top_bc_func]
type = ParsedFunction
expression = '50*sin(2*3.1415926*13.56e6*t)'
[]
[potential_bottom_bc_func]
type = ParsedFunction
expression = '-50*sin(2*3.1415926*13.56e6*t)'
[]
[potential_ic_func]
type = ParsedFunction
expression = 0
[]
[density_ic_func]
type = ParsedFunction
expression = 'log((1e14)/6.022e23)'
[]
[meta_density_ic_func]
type = ParsedFunction
expression = 'log((1e16)/6.022e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
expression = 'log((3./2.) * 4) + log((1e14)/6.022e23)'
[]
[]
[Materials]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = true
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
potential = potential
mean_en = mean_en
user_se_coeff = 0.00
property_tables_file = Argon_reactions_paper_RateCoefficients/electron_moments.txt
[]
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Ar+
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
mobility = 1.44409938
diffusivity = 6.428571e-2
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-2
[]
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[reaction_00]
type = ZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_paper_RateCoefficients/ar_elastic.txt'
reaction = 'em + Ar -> em + Ar'
electrons = em
[]
[reaction_0]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excitation.txt'
reaction = 'em + Ar -> em + Ar*'
mean_energy = mean_en
electrons = em
[]
[reaction_1]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_ionization.txt'
reaction = 'em + Ar -> em + em + Ar+'
mean_energy = mean_en
electrons = em
[]
[reaction_2]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_deexcitation.txt'
reaction = 'em + Ar* -> em + Ar'
mean_energy = mean_en
electrons = em
[]
[reaction_3]
type = ZapdosEEDFRateConstant
property_file = 'Argon_reactions_paper_RateCoefficients/ar_excited_ionization.txt'
reaction = 'em + Ar* -> em + em + Ar+'
mean_energy = mean_en
electrons = em
[]
[reaction_4]
type = GenericRateConstant
reaction = 'em + Ar* -> em + Ar_r'
#reaction_rate_value = 2e-13
reaction_rate_value = 1.2044e11
[]
[reaction_5]
type = GenericRateConstant
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
#reaction_rate_value = 6.2e-16
reaction_rate_value = 373364000
[]
[reaction_6]
type = GenericRateConstant
reaction = 'Ar* + Ar -> Ar + Ar'
#reaction_rate_value = 3e-21
reaction_rate_value = 1806.6
[]
[reaction_7]
type = GenericRateConstant
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
#reaction_rate_value = 1.1e-42
reaction_rate_value = 398909.324
[]
[]
#New postprocessor that calculates the inverse of the plasma frequency
[Postprocessors]
[InversePlasmaFreq]
type = PlasmaFrequencyInverse
variable = em
use_moles = true
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 7.4e-3
dtmax = 1e-9
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 fgmres 1e-3'
nl_rel_tol = 1e-8
#nl_abs_tol = 7.6e-5
dtmin = 1e-14
l_max_its = 20
#Time steps based on the inverse of the plasma frequency
#[TimeSteppers]
# [Postprocessor]
# type = PostprocessorDT
# postprocessor = InversePlasmaFreq
# scale = 0.1
# []
#[]
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(test/tests/field_emission/field_emission.i)
dom0Scale = 1
dom0Size = 5E-6 #m
vhigh = -0.15 #kV
[GlobalParams]
offset = 20
potential_units = kV
# potential_units = V
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'micro_fe.msh'
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
end_time = 6E-6
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
nl_rel_tol = 1e-4
nl_abs_tol = 7.6e-5
dtmin = 1e-15
dtmax = 0.01E-7
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-12
growth_factor = 1.2
optimal_iterations = 15
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
# execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[Kernels]
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
block = 0
[]
# [em_advection_stabilization]
# type = EFieldArtDiff
# variable = em
# potential = potential
# block = 0
# []
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
block = 0
[]
# [Arp_advection_stabilization]
# type = EFieldArtDiff
# variable = Arp
# potential = potential
# block = 0
# []
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 15
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = PowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = PowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = Density
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = Density
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = Current
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = Current
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = EFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = DiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ip = Arp
data_provider = data_provider
em = em
mean_en = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = right
potential = potential
mean_en = mean_en
r = 0.99
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
em = em
ip = Arp
r = 0.99
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
potential = potential
mean_en = mean_en
r = 0
position_units = ${dom0Scale}
[]
# [sec_electrons_left]
# type = SecondaryElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# ip = Arp
# mean_en = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[FieldEmission_left]
type = FieldEmissionBC
variable = em
boundary = 'left'
potential = potential
ip = Arp
mean_en = mean_en
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
em = em
ip = Arp
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
# [em_ic]
# type = RandomIC
# variable = em
# block = 0
# []
# [Arp_ic]
# type = RandomIC
# variable = Arp
# block = 0
# []
# [mean_en_ic]
# type = RandomIC
# variable = mean_en
# block = 0
# []
# [potential_ic]
# type = RandomIC
# variable = potential
# []
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'period dutyCycle riseTime VHigh VLow'
symbol_values = '3E-6 0.1 5E-7 ${vhigh} -0.001'
expression = 'if((t % period) < dutyCycle*period , VHigh ,
if((t % period) < dutyCycle*period + riseTime, ((VLow - VHigh)/riseTime) * ((t % period) - period * dutyCycle) + VHigh,
if((t % period) < period - riseTime , VLow ,
if((t % period) < period , ((VHigh - VLow)/riseTime) * ((t % period) - period) + VHigh ,
0))))'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[cathode_temperature]
type = ParsedFunction
expression = 1500
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.05
user_work_function = 4.55 # eV
user_field_enhancement = 55
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]
(test/tests/1d_dc/NonlocalPotentialBCWithSchottky.i)
dom0Scale = 1
dom0Size = 2E-6 #m
vhigh = 230E-3 #kV
relaxTime = 1e-9 #s
resistance = 1
area = 5.02e-7 # Formerly 3.14e-6
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 'Geometry.msh'
[]
[left]
type = SideSetsFromNormalsGenerator
normals = '-1 0 0'
new_boundary = 'left'
input = file
[]
[right]
type = SideSetsFromNormalsGenerator
normals = '1 0 0'
new_boundary = 'right'
input = left
[]
[]
[Problem]
type = FEProblem
# kernel_coverage_check = false
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# line_search = none
end_time = 10E-6
steady_state_detection = 1
steady_state_tolerance = 1E-15
steady_state_start_time = '${fparse 3 * relaxTime}'
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
nl_abs_tol = 2e-6
dtmin = 1e-15
# dtmax = 1E-6
nl_max_its = 50
[TimeSteppers]
[Adaptive]
type = IterationAdaptiveDT
cutback_factor = 0.4
dt = 1e-13
growth_factor = 1.2
optimal_iterations = 20
[]
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
[out]
type = Exodus
execute_on = 'final'
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[current_density_user_object]
type = CurrentDensityShapeSideUserObject
boundary = left
potential = potential
em = em
ip = Arp
mean_en = mean_en
execute_on = 'linear nonlinear'
[]
[data_provider]
type = ProvideMobility
electrode_area = ${area}
ballast_resist = ${resistance}
e = 1.6e-19
[]
[]
[Kernels]
## Stabilization
[Arp_log_stabilization]
type = LogStabilizationMoles
variable = Arp
offset = 20
block = 0
[]
[em_log_stabilization]
type = LogStabilizationMoles
variable = em
offset = 20
block = 0
[]
[mean_en_log_stabilization]
type = LogStabilizationMoles
variable = mean_en
block = 0
offset = 35
[]
# [mean_en_advection_stabilization]
# type = EFieldArtDiff
# variable = mean_en
# potential = potential
# block = 0
# []
[em_time_deriv]
type = ElectronTimeDerivative
variable = em
block = 0
[]
[em_advection]
type = EFieldAdvection
variable = em
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[em_diffusion]
type = CoeffDiffusion
variable = em
block = 0
position_units = ${dom0Scale}
[]
[em_ionization]
type = ElectronsFromIonization
em = em
variable = em
potential = potential
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[potential_diffusion_dom1]
type = CoeffDiffusionLin
variable = potential
block = 0
position_units = ${dom0Scale}
[]
[Arp_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = Arp
block = 0
[]
[em_charge_source]
type = ChargeSourceMoles_KV
variable = potential
charged = em
block = 0
[]
[Arp_time_deriv]
type = ElectronTimeDerivative
variable = Arp
block = 0
[]
[Arp_advection]
type = EFieldAdvection
variable = Arp
potential = potential
position_units = ${dom0Scale}
block = 0
[]
[Arp_diffusion]
type = CoeffDiffusion
variable = Arp
block = 0
position_units = ${dom0Scale}
[]
[Arp_ionization]
type = IonsFromIonization
variable = Arp
potential = potential
em = em
mean_en = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_time_deriv]
type = ElectronTimeDerivative
variable = mean_en
block = 0
[]
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
potential = potential
block = 0
position_units = ${dom0Scale}
[]
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
block = 0
position_units = ${dom0Scale}
[]
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_ionization]
type = ElectronEnergyLossFromIonization
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_elastic]
type = ElectronEnergyLossFromElastic
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[mean_en_excitation]
type = ElectronEnergyLossFromExcitation
variable = mean_en
potential = potential
em = em
block = 0
position_units = ${dom0Scale}
[]
[]
[Variables]
[potential]
[]
[em]
block = 0
[]
[Arp]
block = 0
[]
[mean_en]
block = 0
[]
[]
[AuxVariables]
[e_temp]
block = 0
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[x_node]
[]
[rho]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Arp_lin]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Efield]
order = CONSTANT
family = MONOMIAL
[]
[Current_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[Current_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[tot_gas_current]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[EFieldAdvAux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[DiffusiveFlux_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_em]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[PowerDep_Arp]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_el]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_ex]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[ProcRate_iz]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[AuxKernels]
[PowerDep_em]
type = ADPowerDep
density_log = em
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
potential = potential
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_el]
type = ADProcRate
em = em
potential = potential
proc = el
variable = ProcRate_el
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_ex]
type = ADProcRate
em = em
potential = potential
proc = ex
variable = ProcRate_ex
position_units = ${dom0Scale}
block = 0
[]
[ProcRate_iz]
type = ADProcRate
em = em
potential = potential
proc = iz
variable = ProcRate_iz
position_units = ${dom0Scale}
block = 0
[]
[e_temp]
type = ElectronTemperature
variable = e_temp
electron_density = em
mean_en = mean_en
block = 0
[]
[x_g]
type = Position
variable = x
position_units = ${dom0Scale}
block = 0
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
block = 0
[]
[rho]
type = ParsedAux
variable = rho
coupled_variables = 'em_lin Arp_lin'
expression = 'Arp_lin - em_lin'
execute_on = 'timestep_end'
block = 0
[]
[tot_gas_current]
type = ParsedAux
variable = tot_gas_current
coupled_variables = 'Current_em Current_Arp'
expression = 'Current_em + Current_Arp'
execute_on = 'timestep_end'
block = 0
[]
[em_lin]
type = DensityMoles
# convert_moles = true
variable = em_lin
density_log = em
block = 0
[]
[Arp_lin]
type = DensityMoles
# convert_moles = true
variable = Arp_lin
density_log = Arp
block = 0
[]
[Efield_g]
type = Efield
component = 0
potential = potential
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Current_em]
type = ADCurrent
potential = potential
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Arp]
type = ADCurrent
potential = potential
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
potential = potential
density_log = em
variable = EFieldAdvAux_em
block = 0
position_units = ${dom0Scale}
[]
[DiffusiveFlux_em]
type = ADDiffusiveFlux
density_log = em
variable = DiffusiveFlux_em
block = 0
position_units = ${dom0Scale}
[]
[]
[BCs]
## Potential boundary conditions ##
# [potential_left]
# type = NeumannCircuitVoltageMoles_KV
# variable = potential
# boundary = left
# function = potential_bc_func
# ions = Arp
# data_provider = data_provider
# electrons = em
# electron_energy = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[potential_left]
boundary = left
type = PenaltyCircuitPotential
variable = potential
current = current_density_user_object
surface_potential = -${vhigh}
surface = 'cathode'
penalty = 1000
data_provider = data_provider
electrons = em
ions = Arp
electron_energy = mean_en
area = ${area}
potential_units = 'kV'
position_units = ${dom0Scale}
resistance = ${resistance}
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
## Electron boundary conditions ##
[Emission_left]
type = SchottkyEmissionBC
# type = SecondaryElectronBC
variable = em
boundary = 'left'
potential = potential
ions = Arp
electron_energy = mean_en
r = 1
position_units = ${dom0Scale}
tau = ${relaxTime}
relax = true
emission_coeffs = 0.02
[]
# [em_physical_left]
# type = HagelaarElectronBC
# variable = em
# boundary = 'left'
# potential = potential
# mean_en = mean_en
# r = 0
# position_units = ${dom0Scale}
# []
[em_physical_right]
type = HagelaarElectronAdvectionBC
variable = em
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Argon boundary conditions ##
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
potential = potential
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = right
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = right
potential = potential
r = 0
position_units = ${dom0Scale}
[]
## Mean energy boundary conditions ##
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = right
potential = potential
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[]
[ICs]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[em_ic]
type = ConstantIC
variable = em
value = -30
block = 0
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -30
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -25
block = 0
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
symbol_names = 'VHigh'
symbol_values = '${vhigh}'
expression = 'VHigh'
[]
[potential_ic_func]
type = ParsedFunction
expression = '-${vhigh} * (${dom0Size} - x) / ${dom0Size}'
[]
[]
[Materials]
[gas_block]
type = Gas
interp_trans_coeffs = true
interp_elastic_coeff = true
ramp_trans_coeffs = false
em = em
potential = potential
ip = Arp
mean_en = mean_en
user_se_coeff = 0.02
user_work_function = 4.55 # eV
user_field_enhancement = 55
user_Richardson_coefficient = 80E4
user_cathode_temperature = 1273
property_tables_file = td_argon_mean_en.txt
block = 0
[]
[]