- position_unitsUnits of position
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Units of position
- potential_unitsUnits of potential (V or kV)
C++ Type:std::string
Controllable:No
Description:Units of potential (V or kV)
- use_molesFalseWhether to convert from units of moles to \#.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to convert from units of moles to \#.
AddDriftDiffusionAction
This Action automatically adds the necessary variables and objects to model the drift-diffusion equations within a domain block.
Overview
The DriftDiffusionAction object provides the necessary variables and objects to model the transport of plasma species using the drift-diffusion approximation.
The equation for the species density using the drift-diffusion approximation is:
Where:
the subscript represents properties of the plasma species,
indicates the advection behavior ( for positively charged species, for negatively charged species, and for neutral species),
is the mobility coefficient,
is the diffusion coefficient,
is the density,
is the electric field, and
is the source term.
In addition to the species density, Zapdos also tracks the mean energy density of the electrons using the equation:
Where:
the subscript represents properties of the electrons,
is the electron mean energy density (defined as )
is the electron mean energy in units of eV,
is the electron mean energy density mobility coefficient (defined as by default),
is the electron mean energy density diffusion coefficient (defined as by default), and
is the electron mean energy source term.
DriftDiffusionAction provides the objects for the right hand side of the above equations, while CRANE's AddZapdosReactions action is often used to supply the chemistry network which defines and .
If using the electrostatic approximation for the electric field, DriftDiffusionAction supplies the Poisson's equation, in the form of:
Where:
is the electrostatic potential, and
is the permittivity of free space.
DriftDiffusionAction can supply additional outputs for electron temperature, current, and electric field by supplying the auxkernels ElectronTemperature, Current, and Efield respectively.
Example Input File Syntax
[DriftDiffusionAction<<<{"href": "../../syntax/DriftDiffusionAction/index.html"}>>>]
[Plasma]
electrons<<<{"description": "User given variable name for electrons"}>>> = em
ions<<<{"description": "List of user given variable names for ions"}>>> = Ar+
neutrals<<<{"description": "The names of the neutrals that should be added"}>>> = Ar*
electron_energy<<<{"description": "User given variable name for the mean electron energy density"}>>> = mean_en
field<<<{"description": "The gives the field a variable name"}>>> = potential
is_field_unique<<<{"description": "Is the field unique to this block?If not, then the field variable should be defined in the Variable Block."}>>> = true
using_offset<<<{"description": "Is the LogStabilizationMoles Kernel being used"}>>> = false
position_units<<<{"description": "Units of position"}>>> = ${dom0Scale}
additional_outputs<<<{"description": "Current list of available ouputs options in this action: Current, ElectronTemperature, EField"}>>> = 'ElectronTemperature Current EField'
[]
[](test/tests/DriftDiffusionAction/RF_Plasma_actions.i)Input Parameters
- active__all__ If specified only the blocks named will be visited and made active
Default:__all__
C++ Type:std::vector<std::string>
Controllable:No
Description:If specified only the blocks named will be visited and made active
- additional_outputsCurrent list of available ouputs options in this action: Current, ElectronTemperature, EField
C++ Type:std::vector<std::string>
Controllable:No
Description:Current list of available ouputs options in this action: Current, ElectronTemperature, EField
- blockThe subdomain that this action applies to.
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The subdomain that this action applies to.
- eff_fieldsThe effective fields that only affect their respective secondary ions.
C++ Type:std::vector<NonlinearVariableName>
Unit:(no unit assumed)
Controllable:No
Description:The effective fields that only affect their respective secondary ions.
- eff_fields_property_namesName of the solver interface material property for the effective fields.
C++ Type:std::vector<std::string>
Controllable:No
Description:Name of the solver interface material property for the effective fields.
- electron_energyUser given variable name for the mean electron energy density
C++ Type:NonlinearVariableName
Unit:(no unit assumed)
Controllable:No
Description:User given variable name for the mean electron energy density
- electronsUser given variable name for electrons
C++ Type:NonlinearVariableName
Unit:(no unit assumed)
Controllable:No
Description:User given variable name for electrons
- familyLAGRANGESpecifies the family of FE shape functions to use for this variable
Default:LAGRANGE
C++ Type:MooseEnum
Controllable:No
Description:Specifies the family of FE shape functions to use for this variable
- fieldThe gives the field a variable name
C++ Type:std::string
Controllable:No
Description:The gives the field a variable name
- field_property_namefield_solver_interface_propertyName of the solver interface material property.
Default:field_solver_interface_property
C++ Type:std::string
Controllable:No
Description:Name of the solver interface material property.
- field_solverelectrostaticElectrostatic or electromagnetic field solver (default = electrostatic).
Default:electrostatic
C++ Type:MooseEnum
Controllable:No
Description:Electrostatic or electromagnetic field solver (default = electrostatic).
- first_drift_diffusion_action_in_blockTrueIs this the first DriftDiffusionAction for this block?If not, then the field solver kernels and Position auxkernel will NOT be supplied by this action.
Default:True
C++ Type:bool
Controllable:No
Description:Is this the first DriftDiffusionAction for this block?If not, then the field solver kernels and Position auxkernel will NOT be supplied by this action.
- inactiveIf specified blocks matching these identifiers will be skipped.
C++ Type:std::vector<std::string>
Controllable:No
Description:If specified blocks matching these identifiers will be skipped.
- initial_conditionSpecifies a constant initial condition for this variable
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Specifies a constant initial condition for this variable
- initial_from_file_varGives the name of a variable for which to read an initial condition from a mesh file
C++ Type:std::string
Controllable:No
Description:Gives the name of a variable for which to read an initial condition from a mesh file
- ionsList of user given variable names for ions
C++ Type:std::vector<NonlinearVariableName>
Unit:(no unit assumed)
Controllable:No
Description:List of user given variable names for ions
- is_field_uniqueFalseIs the field unique to this block?If not, then the field variable should be defined in the Variable Block.
Default:False
C++ Type:bool
Controllable:No
Description:Is the field unique to this block?If not, then the field variable should be defined in the Variable Block.
- neutralsThe names of the neutrals that should be added
C++ Type:std::vector<NonlinearVariableName>
Unit:(no unit assumed)
Controllable:No
Description:The names of the neutrals that should be added
- offset20The offset parameter that goes into the exponential function
Default:20
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The offset parameter that goes into the exponential function
- orderFIRSTSpecifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)
Default:FIRST
C++ Type:MooseEnum
Controllable:No
Description:Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)
- scalingSpecifies a scaling factor to apply to this variable
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Specifies a scaling factor to apply to this variable
- secondary_ionsThese are ions whose advection term in determined by an effective field.
C++ Type:std::vector<NonlinearVariableName>
Unit:(no unit assumed)
Controllable:No
Description:These are ions whose advection term in determined by an effective field.
- using_offsetFalseIs the LogStabilizationMoles Kernel being used
Default:False
C++ Type:bool
Controllable:No
Description:Is the LogStabilizationMoles Kernel being used
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.