Species Trapping Physics using a Continuous Galerkin Finite Element discretization / SpeciesTrappingPhysics

This Physics creates ordinary differential equations at every node to represent the local trapping / releasing of species.

The ordinary differential equation solved at every node is:

where are the species of interest, is the trapping rate coefficient, which has dimensions of , is the atomic number density of the host material, is the concentration of empty trapping sites, and is the concentration of the mobile species, is the concentration of trapped species, is the releasing rate coefficient, which may be a function of temperature. See the respective kernels for the definition of the rate coefficients.

Objects created

The equation(s) are created using the following nodal kernels:

Additionally, the rate of release minus trapping of the species being trapped is added to the mobile concentration being tracked using a CoupledTimeDerivative regular kernel.

No boundary conditions are created, the nodal kernels are created on the boundary nodes similarly to how they are created in the nodes inside the volume.

Interaction with ActionComponents

The SpeciesTrappingPhysics can be defined on a regular mesh or it can be defined by specifying the physics parameter of an ActionComponent to include the name of the particular SpeciesTrappingPhysics. The name of the Physics can be found nested under [Physics/SpeciesTrapping/<name>].

When specified on an ActionComponent, the block restriction of the component is added to the domain of definition of the SpeciesTrappingPhysics. Certain parameters of the SpeciesTrappingPhysics can be specified on components that are specifically implemented to interact with the SpeciesTrappingPhysics. For example, the "species" and "species_initial_concentrations" parameters can be specified on a Structure1D. The SpeciesTrappingPhysics will then take care of defining the variable and its initial condition, on the subdomains of the Structure1D.

Input Parameters

  • blockBlocks (subdomains) that this Physics is active on.

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

    Controllable:No

    Description:Blocks (subdomains) that this Physics is active on.

  • mobileThe variable(s) representing the mobile concentration(s) of solute species on each component. If a single vector is specified, the same mobile species are used on each component.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The variable(s) representing the mobile concentration(s) of solute species on each component. If a single vector is specified, the same mobile species are used on each component.

  • separate_variables_per_componentFalseWhether to create new variables for each trapped species on every component, or whether to only create variables.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to create new variables for each trapped species on every component, or whether to only create variables.

  • speciesSpecies that can be trapped on each component. If a single vector is specified, the same species will be used on every component

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Species that can be trapped on each component. If a single vector is specified, the same species will be used on every component

  • species_initial_concentrationsInitial values for each species. If specified, will be used for every component. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial values for each species. If specified, will be used for every component. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • species_scaling_factorsScaling factors for each species equation on each component. If specified, the same scaling factors will be used on every component

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Scaling factors for each species equation on each component. If specified, the same scaling factors will be used on every component

  • system_namesnl0 Name of the solver system(s) for the variables. If a single name is specified, that system is used for all solver variables.

    Default:nl0

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

    Controllable:No

    Description:Name of the solver system(s) for the variables. If a single name is specified, that system is used for all solver variables.

  • transientsame_as_problemWhether the physics is to be solved as a transient

    Default:same_as_problem

    C++ Type:MooseEnum

    Options:true, false, same_as_problem

    Controllable:No

    Description:Whether the physics is to be solved as a transient

  • verboseFalseFlag to facilitate debugging a Physics

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to facilitate debugging a Physics

Optional Parameters

  • Ct0The fraction of host sites that can contribute to trapping

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The fraction of host sites that can contribute to trapping

  • NThe atomic number density of the host material for each component, shared for all species.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The atomic number density of the host material for each component, shared for all species.

  • alpha_tThe trapping rate coefficient for each component and species. This has units of 1/time (e.g. no number densities are involved)If a single vector is specified, the same trapping rate coefficient will be used on every component

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The trapping rate coefficient for each component and species. This has units of 1/time (e.g. no number densities are involved)If a single vector is specified, the same trapping rate coefficient will be used on every component

  • different_traps_for_each_speciesFalseWheter the traps are shared by each species or not

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Wheter the traps are shared by each species or not

  • trap_per_freeThe number of trapped species per free species

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The number of trapped species per free species

  • trapping_energyThe trapping energy in units of Kelvin. If a single vector is specified, the same trapping energy will be used on every component

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The trapping energy in units of Kelvin. If a single vector is specified, the same trapping energy will be used on every component

Trapping 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

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

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

Advanced Parameters

  • alpha_rThe release rate coefficient. If a single vector is specified, the same release rate coefficient will be used on every component

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The release rate coefficient. If a single vector is specified, the same release rate coefficient will be used on every component

  • detrapping_energyThe detrapping energy in units of Kelvin. If a single vector is specified, the same detrapping energy will be used on every component

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The detrapping energy in units of Kelvin. If a single vector is specified, the same detrapping energy will be used on every component

  • temperatureFunctor providing the temperature. If specified, the same functor is used on every component. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Functor providing the temperature. If specified, the same functor is used on every component. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

Releasing Parameters

  • dont_create_aux_kernelsFalseWhether to skip the 'add_aux_kernel' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_aux_kernel' task

  • dont_create_aux_variablesFalseWhether to skip the 'add_aux_variable' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_aux_variable' task

  • dont_create_bcsFalseWhether to skip the 'add_bc' task for each boundary condition type

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_bc' task for each boundary condition type

  • dont_create_correctorsFalseWhether to skip the 'add_correctors' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_correctors' task

  • dont_create_functionsFalseWhether to skip the 'add_function' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_function' task

  • dont_create_icsFalseWhether to skip the 'add_ic' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_ic' task

  • dont_create_kernelsFalseWhether to skip the 'add_kernel' task for each kernel type

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_kernel' task for each kernel type

  • dont_create_materialsFalseWhether to skip the 'add_material' task for each material type

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_material' task for each material type

  • dont_create_postprocessorsFalseWhether to skip the 'add_postprocessors' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_postprocessors' task

  • dont_create_solver_variablesFalseWhether to skip the 'add_variable' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_variable' task

  • dont_create_user_objectsFalseWhether to skip the 'add_user_object' task. This does not apply to UserObject derived classes being created on a different task (for example: postprocessors, VPPs, correctors)

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_user_object' task. This does not apply to UserObject derived classes being created on a different task (for example: postprocessors, VPPs, correctors)

  • dont_create_vectorpostprocessorsFalseWhether to skip the 'add_vectorpostprocessors' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_vectorpostprocessors' task

Reduce Physics Object Creation Parameters

  • initial_from_file_timestepLATESTGives the time step number (or "LATEST") for which to read the Exodus solution

    Default:LATEST

    C++ Type:std::string

    Controllable:No

    Description:Gives the time step number (or "LATEST") for which to read the Exodus solution

  • initialize_variables_from_mesh_fileFalseDetermines if the variables that are added by the action are initializedfrom the mesh file (only for Exodus format)

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Determines if the variables that are added by the action are initializedfrom the mesh file (only for Exodus format)

Restart From Exodus Parameters

  • preconditioningdeferWhich preconditioning to use/add for this Physics, or whether to defer to the Preconditioning block, or another Physics

    Default:defer

    C++ Type:MooseEnum

    Options:default, defer

    Controllable:No

    Description:Which preconditioning to use/add for this Physics, or whether to defer to the Preconditioning block, or another Physics

Numerical Scheme Parameters