- 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
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
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:
A TimeDerivativeNodalKernel for the time derivative of the concentration of each species being trapped, if simulating a transient. This term is not added if the Executioner is not transient
A TrappingNodalKernel for the trapping term
A ReleasingNodalKernel for the releasing term
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
- 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
Controllable:No
Description:Which preconditioning to use/add for this Physics, or whether to defer to the Preconditioning block, or another Physics