- interp_elastic_coeffFalseWhether to interpolate the elastic collision townsend coefficient as a function of the mean energy. If false, coeffs are constant.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to interpolate the elastic collision townsend coefficient as a function of the mean energy. If false, coeffs are constant.
- interp_trans_coeffsFalseWhether to interpolate transport coefficients as a function of the mean energy. If false, coeffs are constant.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to interpolate transport coefficients as a function of the mean energy. If false, coeffs are constant.
- potential_unitsThe potential units.
C++ Type:std::string
Controllable:No
Description:The potential units.
- property_tables_fileThe file containing interpolation tables for material properties.
C++ Type:FileName
Controllable:No
Description:The file containing interpolation tables for material properties.
- ramp_trans_coeffsFalseWhether to ramp the non-linearity of coming from the electron energy dependence of the transport coefficients.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to ramp the non-linearity of coming from the electron energy dependence of the transport coefficients.
- use_molesFalseWhether to use units of moles as opposed to # of molecules.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to use units of moles as opposed to # of molecules.
GasElectronMoments
The GasElectronMoments has not been documented. The content listed below should be used as a starting point for documenting the class, which includes the typical automatic documentation associated with a MooseObject; however, what is contained is ultimately determined by what is necessary to make the documentation clear for users.
Material properties of electrons(Defines reaction properties with rate coefficients)
Overview
Example Input File Syntax
Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Options:NONE, ELEMENT, SUBDOMAIN
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- declare_suffixAn optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
- emSpecies concentration needed to calculate the poisson source
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Species concentration needed to calculate the poisson source
- ipThe ion density.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The ion density.
- mean_enThe electron mean energy in log form.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The electron mean energy in log form.
- pressure_dependent_electron_coeffFalseAre the values for the electron mobility and diffusion coefficient dependent on gas pressure
Default:False
C++ Type:bool
Controllable:No
Description:Are the values for the electron mobility and diffusion coefficient dependent on gas pressure
- time_units1Units of time
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Units of time
- user_Richardson_coefficient1.20173e+06The Richardson coefficient.
Default:1.20173e+06
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The Richardson coefficient.
- user_T_gas300The gas temperature in Kelvin.
Default:300
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The gas temperature in Kelvin.
- user_cathode_temperature300The cathode temperature in Kelvin.
Default:300
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The cathode temperature in Kelvin.
- user_electron_diffusion_coeff0The electron diffusion coefficient.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The electron diffusion coefficient.
- user_electron_mobility0The electron mobility coefficient.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The electron mobility coefficient.
- user_field_enhancement1The field enhancement factor.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The field enhancement factor.
- user_p_gasThe gas pressure in Pascals.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The gas pressure in Pascals.
- user_relative_permittivity1Multiplies the permittivity of free space.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Multiplies the permittivity of free space.
- user_se_coeff0.15The secondary electron emission coefficient.
Default:0.15
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The secondary electron emission coefficient.
- user_work_function5The work function.
Default:5
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The work function.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Material Property Retrieval Parameters
Input Files
- (test/tests/Lymberopoulos_rf_discharge/Lymberopoulos_with_argon_metastables.i)
- (test/tests/crane_action/rate_units.i)
- (test/tests/Conference_Syntax_Tests/Lymberopoulos_with_argon_metastables_2D_At100mTorr.i)
- (test/tests/DriftDiffusionAction/RF_Plasma_actions.i)
- (tutorial/tutorial03-PotentialWithIonLoss/ion-loss-for-IonOnlyPlasma.i)
- (test/tests/DriftDiffusionAction/RF_Plasma_no_actions.i)
- (tutorial/tutorial06-Building-InputFile/RF_Plasma_Blank.i)
- (test/tests/Conference_Syntax_Tests/Lymberopoulos_with_argon_metastables_2D_At1Torr.i)
- (test/tests/Conference_Syntax_Tests/Lymberopoulos_with_argon_metastables.i)
- (test/tests/DriftDiffusionAction/2D_RF_Plasma_no_actions.i)
- (test/tests/accelerations/Acceleration_By_Averaging_main.i)
- (test/tests/accelerations/Acceleration_By_Averaging_acceleration_sub.i)
- (test/tests/DriftDiffusionAction/2D_RF_Plasma_actions.i)
- (test/tests/Lymberopoulos_rf_discharge/Lymberopoulos_with_argon_metastables_2D_At100mTorr_CoarseMesh.i)
- (tutorial/tutorial06-Building-InputFile/RF_Plasma_WithOut_Metastables.i)
- (tutorial/tutorial01-Diffusion/diffusion-only.i)
- (test/tests/accelerations/Acceleration_By_Shooting_Method.i)
- (tutorial/tutorial04-PressureVsTe/RF_Plasma_WithOut_Metastables-1Torr.i)
- (test/tests/crane_action/townsend_units.i)
- (tutorial/tutorial05-PlasmaWaterInterface/DC_argon-With-Water.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
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+
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
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
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
variable = Efield
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
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+
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+
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
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/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
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+
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
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
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
variable = Efield
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
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+
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+
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
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'
[]
[]
(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
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+
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
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
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
variable = Efieldx
position_units = ${dom0Scale}
[]
[Efieldy_calc]
type = Efield
component = 1
variable = Efieldy
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
density_log = em
variable = Current_em
art_diff = false
block = 'plasma'
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
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
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+
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+
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = true
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
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/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
field = potential
Is_field_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+
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+
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
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
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/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')
field = potential
#Defines if this potential exist in only one block/material (set 'true' for single gases)
Is_field_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'
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
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/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
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+
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
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
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
variable = EFieldx
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
density_log = em
variable = Current_em
art_diff = false
position_units = ${dom0Scale}
[]
[Current_Ar+]
type = ADCurrent
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
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+
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+
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
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/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+
position_units = ${dom0Scale}
[]
#Boundary conditions for ions
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
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 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/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
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+
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
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
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
variable = Efieldx
position_units = ${dom0Scale}
[]
[Efieldy_calc]
type = Efield
component = 1
variable = Efieldy
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
density_log = em
variable = Current_em
art_diff = false
block = 'plasma'
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
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
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+
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+
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = true
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
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/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
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+
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
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
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
variable = Efield
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
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+
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+
position_units = ${dom0Scale}
[]
#New Boundary conditions for ions, should be the same as in paper
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
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/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
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+
field_property_name = field_solver_interface_property_eff
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
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
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
variable = Efieldx
position_units = ${dom0Scale}
[]
[Efieldy_calc]
type = Efield
component = 1
variable = Efieldy
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
density_log = em
variable = Current_em
art_diff = false
block = 'plasma'
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
field_property_name = field_solver_interface_property_eff
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
field_property_name = field_solver_interface_property_eff
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+
field_property_name = field_solver_interface_property_eff
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+
field_property_name = field_solver_interface_property_eff
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[field_solver_eff]
type = FieldSolverMaterial
potential = potential_ion
property_name = field_solver_interface_property_eff
[]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = true
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
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/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
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+
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
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
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
variable = Efield
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
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+
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+
position_units = ${dom0Scale}
[]
#Boundary conditions for ions
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
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/accelerations/Acceleration_By_Averaging_acceleration_sub.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]
[]
[]
[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
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+
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
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
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]
[Ar]
[]
[]
[AuxKernels]
[Ar_val]
type = ConstantAux
variable = Ar
#value = 3.22e22
value = -2.928623
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
#gamma = 1
ks = 1.19e5
#ks = 0.0
ions = Ar+
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+
position_units = ${dom0Scale}
[]
#Boundary conditions for ions
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
boundary = 'left'
position_units = ${dom0Scale}
[]
#Boundary conditions for ions Metastable
[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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = false
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
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
[]
[]
#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'
dtmin = 1e-14
l_max_its = 20
scheme = bdf2
dt = 1e-9
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
[]
[]
(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
field = potential
eff_fields = potential_ion
eff_fields_property_names = potential_ion_property
Is_field_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
field_property_name = potential_ion_property
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+
field_property_name = potential_ion_property
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+
field_property_name = potential_ion_property
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
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/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
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+
field_property_name = field_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
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
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
variable = Efieldx
position_units = ${dom0Scale}
[]
[Efieldy_calc]
type = Efield
component = 1
variable = Efieldy
position_units = ${dom0Scale}
[]
[Current_em]
type = ADCurrent
density_log = em
variable = Current_em
art_diff = false
block = 'plasma'
position_units = ${dom0Scale}
[]
[Current_Ar]
type = ADCurrent
field_property_name = field_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
field_property_name = field_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+
field_property_name = field_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+
field_property_name = field_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]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[field_solver_ion]
type = FieldSolverMaterial
potential = potential_ion
property_name = field_ion
[]
[GasBasics]
type = GasElectronMoments
interp_trans_coeffs = true
interp_elastic_coeff = false
ramp_trans_coeffs = false
user_p_gas = 133.322
em = em
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
[]
[]
(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+
field = potential
Is_field_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+
position_units = ${dom0Scale}
[]
[em_physical_left]
type = LymberopoulosElectronBC
variable = em
boundary = 'left'
emission_coeffs = 0.01
ks = 1.19e5
ions = Ar+
position_units = ${dom0Scale}
[]
#Boundary conditions for ions
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
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
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
[]
[]
(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/accelerations/Acceleration_By_Shooting_Method.i)
dom0Scale=25.4e-3
[GlobalParams]
potential_units = kV
use_moles = true
[]
[Mesh]
[geo]
type = FileMeshGenerator
file = 'Acceleration_By_Shooting_Method_Initial_Conditions.e'
use_for_exodus_restart = true
[]
[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
allow_initial_conditions_with_restart = true
[]
[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
[]
[SM_Ar*]
initial_from_file_var = SM_Ar*
[]
[]
[Kernels]
#Electron Equations
#Time Derivative term of electron
[em_time_deriv]
type = TimeDerivativeLog
variable = em
[]
#Advection term of electron
[em_advection]
type = EFieldAdvection
variable = em
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
#Time Derivative term of the ions
[Ar+_time_deriv]
type = TimeDerivativeLog
variable = Ar+
[]
#Advection term of ions
[Ar+_advection]
type = EFieldAdvection
variable = Ar+
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
#Time Derivative term of excited Argon
[Ar*_time_deriv]
type = TimeDerivativeLog
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 = ADReactionSecondOrderLog
variable = Ar*
v = em
w = Ar*
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
_w_eq_u = true
[]
#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
#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 = TimeDerivativeLog
variable = mean_en
[]
#Advection term of electron energy
[mean_en_advection]
type = EFieldAdvection
variable = mean_en
position_units = ${dom0Scale}
[]
#Diffusion term of electrons energy
[mean_en_diffusion]
type = CoeffDiffusion
variable = mean_en
position_units = ${dom0Scale}
[]
#The correction for electrons energy's diffusion term
[mean_en_diffusion_correction]
type = ThermalConductivityDiffusion
variable = mean_en
em = em
position_units = ${dom0Scale}
[]
#Joule Heating term
[mean_en_joule_heating]
type = JouleHeating
variable = mean_en
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
#Time Derivative term of excited Argon
[SM_Ar*_time_deriv]
type = MassLumpedTimeDerivative
variable = SM_Ar*
enable = false
[]
#Diffusion term of excited Argon
[SM_Ar*_diffusion]
type = CoeffDiffusionForShootMethod
variable = SM_Ar*
density = Ar*
position_units = ${dom0Scale}
enable = false
[]
#Net excited Argon loss from step-wise ionization
[SM_Ar*_stepwise_ionization]
type = EEDFReactionLogForShootMethod
variable = SM_Ar*
electron = em
density = Ar*
reaction = 'em + Ar* -> em + em + Ar+'
coefficient = -1
enable = false
[]
#Net excited Argon loss from superelastic collisions
[SM_Ar*_collisions]
type = EEDFReactionLogForShootMethod
variable = SM_Ar*
electron = em
density = Ar*
reaction = 'em + Ar* -> em + Ar'
coefficient = -1
enable = false
[]
#Net excited Argon loss from quenching to resonant
[SM_Ar*_quenching]
type = ReactionSecondOrderLogForShootMethod
variable = SM_Ar*
density = Ar*
v = em
reaction = 'em + Ar* -> em + Ar_r'
coefficient = -1
enable = false
[]
#Net excited Argon loss from metastable pooling
[SM_Ar*_pooling]
type = ReactionSecondOrderLogForShootMethod
variable = SM_Ar*
density = Ar*
v = Ar*
reaction = 'Ar* + Ar* -> Ar+ + Ar + em'
coefficient = -2
enable = false
[]
#Net excited Argon loss from two-body quenching
[SM_Ar*_2B_quenching]
type = ReactionSecondOrderLogForShootMethod
variable = SM_Ar*
density = Ar*
v = Ar
reaction = 'Ar* + Ar -> Ar + Ar'
coefficient = -1
enable = false
[]
#Net excited Argon loss from three-body quenching
[SM_Ar*_3B_quenching]
type = ReactionThirdOrderLogForShootMethod
variable = SM_Ar*
density = Ar*
v = Ar
w = Ar
reaction = 'Ar* + Ar + Ar -> Ar_2 + Ar'
coefficient = -1
enable = false
[]
[SM_Ar*_Null]
type = NullKernel
variable = SM_Ar*
[]
[]
#Variables for scaled nodes and background gas
[AuxVariables]
[SM_Ar*Reset]
initial_condition = 1.0
[]
[Ar*S]
[]
[x_node]
[]
[Ar]
[]
[Te]
order = CONSTANT
family = MONOMIAL
[]
[x]
order = CONSTANT
family = MONOMIAL
[]
[em_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar+_lin]
order = CONSTANT
family = MONOMIAL
[]
[Ar*_lin]
order = CONSTANT
family = MONOMIAL
[]
[]
#Kernels that define the scaled nodes and background gas
[AuxKernels]
[Ar*S_for_Shooting]
type = QuotientAux
variable = Ar*S
numerator = Ar*
denominator = 1.0
enable = false
execute_on = 'TIMESTEP_END'
[]
[Constant_SM_Ar*Reset]
type = ConstantAux
variable = SM_Ar*Reset
value = 1.0
execute_on = INITIAL
[]
[x_ng]
type = Position
variable = x_node
position_units = ${dom0Scale}
[]
[Ar_val]
type = FunctionAux
variable = Ar
# value = 3.22e22
function = 'log(3.22e22/6.02e23)'
execute_on = INITIAL
[]
[Te]
type = ElectronTemperature
variable = Te
electron_density = em
mean_en = mean_en
[]
[x_g]
type = Position
variable = x
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*
[]
[]
[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+
position_units = ${dom0Scale}
[]
[em_physical_left]
type = LymberopoulosElectronBC
variable = em
boundary = 'left'
emission_coeffs = 0.01
ks = 1.19e5
ions = Ar+
position_units = ${dom0Scale}
[]
#Boundary conditions for ions
[Ar+_physical_right_advection]
type = LymberopoulosIonBC
variable = Ar+
boundary = 'right'
position_units = ${dom0Scale}
[]
[Ar+_physical_left_advection]
type = LymberopoulosIonBC
variable = Ar+
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'
[]
#Boundary conditions for ions
[Ar*_physical_right_diffusion]
type = ADDirichletBC
variable = Ar*
boundary = 'right'
value = -50.0
[]
[Ar*_physical_left_diffusion]
type = ADDirichletBC
variable = Ar*
boundary = 'left'
value = -50.0
[]
[]
#Functions for IC and Potential BC
[Functions]
[potential_bc_func]
type = ParsedFunction
value = '0.100*sin(2*pi*13.56e6*t)'
[]
[density_ic_func]
type = ParsedFunction
value = 'log((1e13 + 1e15 * (1-x/(1.0))^2 * (x/(1.0))^2)/6.02e23)'
[]
[energy_density_ic_func]
type = ParsedFunction
value = 'log(32.) + log((1e13 + 1e15 * (1-x/(1.0))^2 * (x/(1.0))^2)/6.02e23)'
[]
[]
#Material properties of species and background gas
[Materials]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[GasBasics]
#If elecron mobility and diffusion are NOT constant, set
#"interp_elastic_coeff = true". This lets the mobility and
#diffusivity to be energy dependent, as dictated by the txt file
type = GasElectronMoments
em = em
mean_en = mean_en
interp_elastic_coeff = false
interp_trans_coeffs = false
ramp_trans_coeffs = false
user_p_gas = 133.33
user_T_gas = 300
user_electron_mobility = 30.0
user_electron_diffusion_coeff = 119.8757763975
property_tables_file = Argon_reactions_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_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
[]
[gas_species_1]
type = ADHeavySpecies
heavy_species_name = Ar*
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
diffusivity = 7.515528e-3
[]
[reaction_0]
#type = ADZapdosEEDFRateLinearInterpolation
type = InterpolatedCoefficientLinear
#type = ADZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_RateCoefficients/reaction_em + Ar -> em + Ar*.txt'
reaction = 'em + Ar -> em + Ar*'
file_location = '.'
electrons = em
[]
[reaction_1]
#type = ADZapdosEEDFRateLinearInterpolation
type = InterpolatedCoefficientLinear
#type = ADZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_RateCoefficients/reaction_em + Ar -> em + em + Ar+.txt'
reaction = 'em + Ar -> em + em + Ar+'
file_location = '.'
electrons = em
[]
[reaction_2]
#type = ADZapdosEEDFRateLinearInterpolation
type = InterpolatedCoefficientLinear
#type = ADZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_RateCoefficients/reaction_em + Ar* -> em + Ar.txt'
reaction = 'em + Ar* -> em + Ar'
file_location = '.'
electrons = em
[]
[reaction_3]
#type = ADZapdosEEDFRateLinearInterpolation
type = InterpolatedCoefficientLinear
#type = ADZapdosEEDFRateConstant
mean_energy = mean_en
property_file = 'Argon_reactions_RateCoefficients/reaction_em + Ar* -> em + em + Ar+.txt'
reaction = 'em + Ar* -> em + em + Ar+'
file_location = '.'
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
[]
[]
#Acceleration Schemes are dictated by MultiApps, Transfers,
#and PeriodicControllers
[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
[SM_Ar*Reset_to_Shooting]
type = MultiAppCopyTransfer
direction = to_multiapp
multi_app = Shooting
source_variable = SM_Ar*Reset
variable = SM_Ar*Reset
enable = false
[]
[Ar*_to_Shooting]
type = MultiAppCopyTransfer
direction = to_multiapp
multi_app = Shooting
source_variable = Ar*
variable = Ar*
enable = false
[]
[Ar*S_to_Shooting]
type = MultiAppCopyTransfer
direction = to_multiapp
multi_app = Shooting
source_variable = Ar*S
variable = Ar*S
enable = false
[]
[Ar*T_to_Shooting]
type = MultiAppCopyTransfer
direction = to_multiapp
multi_app = Shooting
source_variable = Ar*
variable = Ar*T
enable = false
[]
[SMDeriv_to_Shooting]
type = MultiAppCopyTransfer
direction = to_multiapp
multi_app = Shooting
source_variable = SM_Ar*
variable = SM_Ar*
enable = false
[]
[Ar*New_from_Shooting]
type = MultiAppCopyTransfer
direction = from_multiapp
multi_app = Shooting
source_variable = Ar*
variable = Ar*
enable = false
[]
[SM_Ar*Reset_from_Shooting]
type = MultiAppCopyTransfer
direction = from_multiapp
multi_app = Shooting
source_variable = SM_Ar*Reset
variable = SM_Ar*
enable = false
[]
[Ar*Relative_Diff]
type = MultiAppPostprocessorTransfer
direction = from_multiapp
multi_app = Shooting
from_postprocessor = Meta_Relative_Diff
to_postprocessor = Meta_Relative_Diff
reduction_type = minimum
enable = false
[]
[]
#The Action the add the TimePeriod Controls to turn off and on the MultiApps
[PeriodicControllers]
[Shooting]
Enable_at_cycle_start = '*::Ar*S_for_Shooting'
Enable_during_cycle = '*::SM_Ar*_time_deriv *::SM_Ar*_diffusion *::SM_Ar*_stepwise_ionization
*::SM_Ar*_collisions *::SM_Ar*_quenching *::SM_Ar*_pooling
*::SM_Ar*_2B_quenching *::SM_Ar*_3B_quenching'
Enable_at_cycle_end = 'MultiApps::Shooting
*::SM_Ar*Reset_to_Shooting *::Ar*_to_Shooting
*::Ar*S_to_Shooting *::Ar*T_to_Shooting
*::SMDeriv_to_Shooting *::Ar*New_from_Shooting
*::SM_Ar*Reset_from_Shooting *::Ar*Relative_Diff'
cycle_frequency = 13.56e6
#starting_cycle = 25
#cycles_between_controls = 25
starting_cycle = 50
cycles_between_controls = 50
cycles_per_controls = 1
num_controller_set = 2
name = Shooting
[]
[]
[Postprocessors]
#Hold the metastable relative difference during the
#Shooting Method acceleration
[Meta_Relative_Diff]
type = Receiver
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
[]
[fdp]
type = FDP
full = true
[]
[]
[Executioner]
type = Transient
start_time = 3.6873e-6
end_time = 3.798e-6
solve_type = NEWTON
line_search = none
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu NONZERO 1.e-10'
scheme = newmark-beta
dt = 1e-9
dtmin = 1e-14
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
execute_on = 'FINAL'
[]
[]
(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')
field = potential
#Defines if this potential exist in only one block/material (set 'true' for single gases)
Is_field_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
ions = Ar+
emission_coeffs = 0.01
boundary = 'left right'
position_units = ${dom0Scale}
[]
#Boundary conditions for ions
[Ar+_physical_advection]
type = SakiyamaIonAdvectionBC
variable = Ar+
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+
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 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/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
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
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
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
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
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
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
art_diff = false
potential_units = kV
variable = PowerDep_em
position_units = ${dom0Scale}
block = 0
[]
[PowerDep_Arp]
type = ADPowerDep
density_log = Arp
art_diff = false
potential_units = kV
variable = PowerDep_Arp
position_units = ${dom0Scale}
block = 0
[]
#[ProcRate_el]
# type = ProcRate
# em = em
# proc = el
# variable = ProcRate_el
# position_units = ${dom0Scale}
# block = 0
#[]
#[ProcRate_ex]
# type = ProcRate
# em = em
# proc = ex
# variable = ProcRate_ex
# position_units = ${dom0Scale}
# block = 0
#[]
#[ProcRate_iz]
# type = ProcRate
# em = em
# 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
variable = Efield
position_units = ${dom0Scale}
block = 0
[]
[Efield_l]
type = Efield
component = 0
variable = Efield
position_units = ${dom1Scale}
block = 1
[]
[Current_em]
type = ADCurrent
density_log = em
variable = Current_em
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_emliq]
type = ADCurrent
density_log = emliq
variable = Current_emliq
art_diff = false
block = 1
position_units = ${dom1Scale}
[]
[Current_Arp]
type = ADCurrent
density_log = Arp
variable = Current_Arp
art_diff = false
block = 0
position_units = ${dom0Scale}
[]
[Current_OHm]
block = 1
type = ADCurrent
density_log = OHm
variable = Current_OHm
art_diff = false
position_units = ${dom1Scale}
[]
[tot_flux_OHm]
block = 1
type = ADTotalFlux
density_log = OHm
variable = tot_flux_OHm
[]
[EFieldAdvAux_em]
type = ADEFieldAdvAux
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
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
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
[BCs]
[mean_en_physical_right]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
electrons = em
r = 0.99
#r = 0.0
position_units = ${dom0Scale}
[]
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
ions = 'Arp'
r = 0
emission_coeffs = 0.05
secondary_electron_energy = 3
position_units = ${dom0Scale}
[]
[potential_left]
type = NeumannCircuitVoltageMoles_KV
variable = potential
boundary = left
function = potential_bc_func
ions = Arp
data_provider = data_provider
electrons = em
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
electron_energy = mean_en
r = 0.99
#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'
r = 0
position_units = ${dom0Scale}
[]
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[emliq_right]
type = DCIonBC
variable = emliq
boundary = right
position_units = ${dom1Scale}
[]
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
position_units = ${dom1Scale}
[]
[]
[ICs]
[em_ic]
type = ConstantIC
variable = em
value = -21
block = 0
[]
[emliq_ic]
type = ConstantIC
variable = emliq
value = -21
block = 1
[]
[Arp_ic]
type = ConstantIC
variable = Arp
value = -21
block = 0
[]
[mean_en_ic]
type = ConstantIC
variable = mean_en
value = -20
block = 0
[]
[OHm_ic]
type = ConstantIC
variable = OHm
value = -15.6
block = 1
[]
[potential_ic]
type = FunctionIC
variable = potential
function = potential_ic_func
[]
[]
[Functions]
[potential_bc_func]
type = ParsedFunction
# expression = '1.25*tanh(1e6*t)'
expression = -1.25
[]
[potential_ic_func]
type = ParsedFunction
expression = '-1.25 * (1.0001e-3 - x)'
[]
[]
[Materials]
[field_solver]
type = FieldSolverMaterial
potential = potential
[]
[water_block]
type = Water
block = 1
[]
[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
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'
[]
[]
(tutorial/tutorial05-PlasmaWaterInterface/DC_argon-With-Water.i)
#This tutorial is of an argon DC discharge over water at
#different reflection coefficients. Reflection coefficients
#for electron and mean energy at the water are on lines 297 and 315.
#Scaling for block 0 (Plasma)
dom0Scale = 1e-3
#caling for block 1 (Water)
dom1Scale = 1e-7
[GlobalParams]
# off set for log stabilization, prevents log(0)
offset = 20
#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 Gmsh file
[file]
type = FileMeshGenerator
file = 'plasmaliquid.msh'
[]
[interface]
# interface allows for one directional fluxes
# interface going from air to water
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0' # block where the flux is coming from
paired_block = '1' # block where the flux is going to
new_boundary = 'master0_interface'
input = file # first input is where the msh is coming and it is then named air_to_water
[]
[interface_again]
# interface going from water to air
type = SideSetsBetweenSubdomainsGenerator
primary_block = '1' # block where the flux is coming from
paired_block = '0' # block where the flux is going to
new_boundary = 'master1_interface'
input = interface
[]
#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 = interface_again
[]
[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
[]
#The potential needs to be defined outside of the Action,
#since it is present in both Blocks
#Declare any variable that is present in mulitple blocks in the variables section
[Variables]
[potential]
[]
[]
[DriftDiffusionAction]
[Plasma]
#User define name for electrons (usually 'em')
electrons = em
#User define name for ions
charged_particle = Arp
#User define name for potential (usually 'potential')
field = potential
#Set False becuase both areas use the same potential
Is_field_unique = false
#User define name for the electron mean energy density (usually 'mean_en')
mean_energy = mean_en
#Helps prevent the log(0)
using_offset = true #helps prevent the log(0)
#The position scaling for the mesh, define at top of input file
position_units = ${dom0Scale}
#Name of material block for plasma
block = 0
#Additional outputs, such as ElectronTemperature, Current, and EField.
Additional_Outputs = 'ElectronTemperature Current EField'
[]
# treats water as a dense plasma
[Water]
charged_particle = 'emliq OHm'
field = potential
Is_field_unique = false
using_offset = true
position_units = ${dom1Scale}
#Name of material block for water
block = 1
Additional_Outputs = 'Current EField'
[]
[]
[Reactions]
[Argon]
#Name of reactant species that are variables
species = 'em Arp'
#Name of reactant species that are auxvariables
aux_species = 'Ar'
#Type of coefficient (rate or townsend)
reaction_coefficient_format = 'townsend'
#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 = 'townsend_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 for plasma
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 [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'
[]
[]
[AuxVariables]
#Background fluid in water
[H2O]
order = CONSTANT
family = MONOMIAL
initial_condition = 10.92252
block = 1
[]
#Background gas in plasma
[Ar]
block = 0
order = CONSTANT
family = MONOMIAL
initial_condition = 3.70109
[]
[]
[InterfaceKernels]
# interface conditions allow one this to go another
# These account for electrons going into the water
# if you want to account for electrons going out of the water into the air then you would need there to be interface conditions for master interface 0
[em_advection]
type = InterfaceAdvection
neighbor_var = em
#the main variable being affected. The em is going into the water so em -> emliq
# this affects emliq
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[em_diffusion]
type = InterfaceLogDiffusionElectrons
neighbor_var = em
variable = emliq
boundary = master1_interface
position_units = ${dom1Scale}
neighbor_position_units = ${dom0Scale}
[]
[]
#Electrode data needed for 1D BC of 'NeumannCircuitVoltageMoles_KV'
[UserObjects]
[data_provider]
type = ProvideMobility
electrode_area = 5.02e-7 # Formerly 3.14e-6
ballast_resist = 1e6
e = 1.6e-19
[]
[]
[BCs]
#DC BC on the air electrode
[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
[]
#Ground electrode under the water
[potential_dirichlet_right]
type = DirichletBC
variable = potential
boundary = right
value = 0
[]
#Electrons on the powered electrode
[em_physical_left]
type = HagelaarElectronBC
variable = em
boundary = 'left'
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
[]
[sec_electrons_left]
type = SecondaryElectronBC
variable = em
boundary = 'left'
ions = Arp
electron_energy = mean_en
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
[]
#Mean electron energy on the powered electrode
[mean_en_physical_left]
type = HagelaarEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
r = 0
position_units = ${dom0Scale}
[]
[secondary_energy_left]
type = SecondaryElectronEnergyBC
variable = mean_en
boundary = 'left'
electrons = em
ions = 'Arp'
r = 0
position_units = ${dom0Scale}
emission_coeffs = 0.05
secondary_electron_energy = 3
[]
#Argon ions on the powered electrode
[Arp_physical_left_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
[Arp_physical_left_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'left'
r = 0
position_units = ${dom0Scale}
[]
#Electrons on the plasma-liquid interface
[em_physical_right]
type = HagelaarElectronBC
variable = em
boundary = 'master0_interface'
electron_energy = mean_en
r = 0.00
position_units = ${dom0Scale}
[]
[Arp_physical_right_diffusion]
type = HagelaarIonDiffusionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
[mean_en_physical_right]
#Mean electron energy on the plasma-liquid interface
type = HagelaarEnergyBC
variable = mean_en
boundary = 'master0_interface'
electrons = em
r = 0.00
position_units = ${dom0Scale}
[]
#Argon ions on the plasma-liquid interface
[Arp_physical_right_advection]
type = HagelaarIonAdvectionBC
variable = Arp
boundary = 'master0_interface'
r = 0
position_units = ${dom0Scale}
[]
#Electrons on the electrode
[emliq_right]
type = DCIonBC
variable = emliq
boundary = 'right'
position_units = ${dom1Scale}
[]
#OH- on the ground electrode
[OHm_physical]
type = DCIonBC
variable = OHm
boundary = 'right'
position_units = ${dom1Scale}
[]
[]
#Initial conditions for variables.
#If left undefine, the IC is zero
[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
[]
[]
#Define function used throughout the input file (e.g. BCs and ICs)
[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]
#The material properties for electrons and ions in water
[water_block]
type = Water
block = 1
[]
#The material properties for electrons in plasma
#Also hold universal constant, such as Avogadro's number, elementary charge, etc.
[electrons_in_plasma]
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
mean_en = mean_en
block = 0
property_tables_file = 'townsend_coefficients/moments.txt'
[]
#Sets the pressure and temperature in the water
[water_block1]
type = GenericConstantMaterial
block = 1
prop_names = 'T_gas p_gas'
prop_values = '300 1.01e5'
[]
#The material properties of the argon ion
[gas_species_0]
type = ADHeavySpecies
heavy_species_name = Arp
heavy_species_mass = 6.64e-26
heavy_species_charge = 1.0
block = 0
[]
#The material properties of the background argon gas
[gas_species_2]
type = ADHeavySpecies
heavy_species_name = Ar
heavy_species_mass = 6.64e-26
heavy_species_charge = 0.0
block = 0
[]
[]
#Preconditioning options
#Learn more at: https://mooseframework.inl.gov/syntax/Preconditioning/index.html
[Preconditioning]
[smp]
type = SMP
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-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
[]
[]
[]
#Defines the output type of the file (multiple output files can be define per run)
[Outputs]
perf_graph = true
[out]
type = Exodus
execute_on = 'final'
[]
[]