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 energy dependent electrons"}>>> = em
    charged_particle<<<{"description": "User given variable name for energy independent charged particle"}>>> = Ar+
    Neutrals<<<{"description": "The names of the neutrals that should be added"}>>> = Ar*
    mean_energy<<<{"description": "The gives the mean energy a variable name"}>>> = 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

  • 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 \#.

Required Parameters

  • 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

  • First_DriftDiffusionAction_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.

  • 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

  • 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

  • blockThe subdomain that this action applies to.

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The subdomain that this action applies to.

  • charged_particleUser given variable name for energy independent charged particle

    C++ Type:std::vector<NonlinearVariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:User given variable name for energy independent charged particle

  • eff_fieldsThe effective fields that only affect their respective secondary charged particle.

    C++ Type:std::vector<NonlinearVariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The effective fields that only affect their respective secondary charged particle.

  • 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.

  • electronsUser given variable name for energy dependent electrons

    C++ Type:NonlinearVariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:User given variable name for energy dependent electrons

  • familyLAGRANGESpecifies the family of FE shape functions to use for this variable

    Default:LAGRANGE

    C++ Type:MooseEnum

    Options:LAGRANGE, MONOMIAL, HERMITE, SCALAR, HIERARCHIC, CLOUGH, XYZ, SZABAB, BERNSTEIN, L2_LAGRANGE, L2_HIERARCHIC, NEDELEC_ONE, LAGRANGE_VEC, MONOMIAL_VEC, RAVIART_THOMAS, RATIONAL_BERNSTEIN, SIDE_HIERARCHIC, L2_HIERARCHIC_VEC, L2_LAGRANGE_VEC, L2_RAVIART_THOMAS

    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

    Options:electrostatic, electromagnetic

    Controllable:No

    Description:Electrostatic or electromagnetic field solver (default = electrostatic).

  • 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

  • mean_energyThe gives the mean energy a variable name

    C++ Type:NonlinearVariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The gives the mean energy a variable name

  • 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

    Options:CONSTANT, FIRST, SECOND, THIRD, FOURTH

    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_charged_particlesThese are charged particles whose advection term in determined by an effective field.

    C++ Type:std::vector<NonlinearVariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:These are charged particles 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.

Advanced Parameters