- axial_directionThe axial direction of the model.
C++ Type:MooseEnum
Controllable:No
Description:The axial direction of the model.
- axial_relocation_output_optionsThe layered quantities to be output from the axial relocation userobject.
C++ Type:MultiMooseEnum
Controllable:No
Description:The layered quantities to be output from the axial relocation userobject.
- contact_pressure_variableThe contact pressure variable.
C++ Type:VariableName
Unit:(no unit assumed)
Controllable:No
Description:The contact pressure variable.
- fragmentation_modelCOINDREAUThe model used to calculate the number of large fragments.
Default:COINDREAU
C++ Type:MooseEnum
Controllable:No
Description:The model used to calculate the number of large fragments.
- mesh_generatorThe name of the generator to use as the prefix for mesh meta data properties.
C++ Type:MeshGeneratorName
Controllable:No
Description:The name of the generator to use as the prefix for mesh meta data properties.
- out_of_plane_strain_variableThe out-of-plane strain nodal variable.
C++ Type:VariableName
Unit:(no unit assumed)
Controllable:No
Description:The out-of-plane strain nodal variable.
- penetration_variableThe penetration variable.
C++ Type:VariableName
Unit:(no unit assumed)
Controllable:No
Description:The penetration variable.
- rod_ave_lin_powRod average linear power function.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Rod average linear power function.
- temperatureCoupled temperature
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled temperature
Axial Relocation Action System
Description
The AxialRelocation action simplifies the input file of a LWR simulation that includes axial relocation by creating the necessary AuxVariables, AuxKernels, Materials, UserObjects, and Postprocessors required for the Axial Relocation Model.
This action is designed for use with only Light Water Reactor simulations run with a mesh generated by Layered1DMeshGenerator or Layered2DMeshGenerator.
Constructed Objects
The objects constructed by the AxialRelocation action are summarized in Table 1. The Generated Name column refers to the name of the object constructed by the action. Depending on the functionality of the object, the name could represent an aux variable, material, postprocessor or userobject.
Table 1: Correspondence Among Action Functionality and Moose/BISON Objects for the AxialRelocation Action
| Functionality | Generated Name | Created Classes | Associated Parameters |
|---|---|---|---|
| Inner clad radius aux variable | inner_clad_radius | Radius | |
| Outer fuel radius aux variable | outer_fuel_radius | Radius | |
| Pulverized aux variable | pulverized | MaterialRealAux | |
| Axial relocation strain aux variable | axial_relocation_strain | MaterialRealAux | |
| Gap conductivity aux variable | gap_conductivity | MaterialRealAux | |
| Axial relocation output aux variables | layered_ + settings of axial_relocation_output_options parameter | AxialRelocationOutputAux | axial_relocation_output_options: the properties to output from the axial_relocation userobject |
| UserObject output aux variables | layered_average_contact_pressure | SpatialUserObjectAux | output_userobjects: whether or not to create aux variables for the properties calculated in the user objects used in the axial relocation calculation |
layered_pulverized_fuel_volume | SpatialUserObjectAux | ||
layered_average_burnup | SpatialUserObjectAux | ||
layered_maximum_clad_radius | SpatialUserObjectAux | ||
layered_average_gap_conductivity | SpatialUserObjectAux | ||
| UO pulverization material model | UO2Pulverization or UO2PulverizationMesoscale | burnup_variable: the burnup variable | |
temperature_variable: the temperature variable | |||
| UO axial relocation eigenstrain material model | UO2AxialRelocationEigenstrain | ||
| Linear heat rate postprocessor | rod_input_power | FunctionValuePostprocessor | rod_ave_lin_pow: function containing the linear heat generation rate |
| Maximum linear heat rate as a function of time postprocessor | maximum_power | TimeExtremeValue | |
| Clad internal volume postprocessor | clad_volume | LayeredInternalVolumePostprocessor | out_of_plane_strain_variable: the out-of-plane strain variable |
clad_inner_volume_addition: addition to the internal clad volume. Typically used for refabricated rods. | |||
| Fuel volume postprocessor | pellet_volume | LayeredCrumbledInternalVolumePostprocessor | out_of_plane_strain_variable: the out-of-plane strain variable |
| Gas volume postprocessor | gas_volume | LinearCombinationPostprocessor | |
| Fuel pin geometry user object | fuel_pin_geometry | Layered1DFuelPinGeometry or Layered2DFuelPinGeometry | formulation: the type of layered mesh being used in the analysis |
| Layered average contact pressure user object | layered_average_contact_pressure | LayeredSideAverage | contact_pressure_variable: the contact pressure variable (default name of contact_pressure comes from the contact modules) |
axial_direction: the axial direction of the layers | |||
num_layers: the number of layers | |||
| Layered axial relocation eigenstrain user object | layered_eigenstrain | LayeredAxialRelocationEigenstrainUserObject | penetration_variable: the penetration variable (default name of penetration comes from the contact module) |
axial_direction: the axial direction of the layers | |||
num_layers: the number of layers | |||
| Layered pulverized volume user object | layered_pulverized_fuel_volume | LayeredVariableIntegral | axial_direction: the axial direction of the layers |
num_layers: the number of layers | |||
| Layered average burnup user object | layered_average_burnup | LayeredAverage | axial_direction: the axial direction of the layers |
num_layers: the number of layers | |||
| Layered maximum inner cladding radius user object | layered_maximum_clad_radius | LayeredNodalExtremeValue | axial_direction: the axial direction of the layers |
num_layers: the number of layers | |||
| Layered clad internal volume user object | layered_clad_internal_volume | LayeredInternalVolume | out_of_plane_strain_variable: the out-of-plane strain variable |
axial_direction: the axial direction of the layers | |||
num_layers: the number of layers | |||
| Layered average gap conductivity user object | layered_average_gap_conductivity | LayeredNodalExtremeValue | axial_direction: the axial direction of the layers |
num_layers: the number of layers | |||
| Axial relocation user object | axial_relocation | AxialRelocationUserObject | axial_direction: the axial direction of the layers |
fragmentation_model: the fragmentation model to use | |||
num_layers: the number of layers | |||
density: as-fabricated fuel density | |||
gap_thickness_threshold: the threshold gap thickness required for axial relocation | |||
nonrelocatable_fuel_fraction: the fraction of the initial fuel in a layer that cannot relocate | |||
fragment_packing_fraction: the packing fraction of large fragments of fuel | |||
pulver_packing_fraction: the packing fraction of the smaller pulvers of fuel | |||
pulver_characteristic_length: the characteristic length of the pulvers | |||
tolerance: the tolerance used in the sub-newton iteration loop for determining the packing fraction | |||
| maximum_iterations: the maximum number of sub-newton iterations allowed when determining the packing fraction | |||
output_iteration_info: whether or not to output sub-newton iteration information |
If the full thermo-mechanical coupling during axial relocation is desired, the axial_relocation_object parameter must be set equal to axial_relocation in NeutronHeatSource, UO2Thermal, and UO2ElasticityTensor. The gap_thermal_conductivity parameter in UO2Thermal must also be set to layered_average_gap_conductivity.
Figure 1 provides an illustration on how all of the different components (AuxKernels, Materials, and UserObjects) of the axial relocation system created by the AxialRelocationAction interact to predict the redistribution of fuel during Loss of Coolant Accidents.

Figure 1: A flowchart that illustrates how the different components created by the AxialRelocationAction interact with one another.
Example Input File Syntax
An example of using the AxialRelocationAction is given by:
[AxialRelocation<<<{"href": "index.html"}>>>]
[relocation]
rod_ave_lin_pow<<<{"description": "Rod average linear power function."}>>> = power
axial_direction<<<{"description": "The axial direction of the model."}>>> = y
fuel_blocks<<<{"description": "The list of names of the blocks (subdomains) for the fuel pellets."}>>> = fuel
clad_blocks<<<{"description": "The list of names of the block (subdomain) for the cladding."}>>> = clad
contact_pressure_variable<<<{"description": "The contact pressure variable."}>>> = contact_pressure
out_of_plane_strain_variable<<<{"description": "The out-of-plane strain nodal variable."}>>> = strain_yy_0
penetration_variable<<<{"description": "The penetration variable."}>>> = penetration
clad_inner_volume_addition<<<{"description": "An additional volume to be included in the internal volume calculation. A time-dependent function is expected."}>>> = 0
burnup_variable<<<{"description": "The burnup variable."}>>> = burnup
temperature<<<{"description": "Coupled temperature"}>>> = temperature
axial_relocation_output_options<<<{"description": "The layered quantities to be output from the axial relocation userobject."}>>> = 'MASS_FRACTION PACKING_FRACTION'
mesh_generator<<<{"description": "The name of the generator to use as the prefix for mesh meta data properties."}>>> = layered1D_mesh
[]
[](test/tests/axial_relocation/axial_relocation_eigenstrain_action.i)An example of NeutronHeatSource when using full thermo-mechanical coupling is given by:
[Kernels<<<{"href": "../Kernels/index.html"}>>>]
[heat_source]
type = NeutronHeatSource<<<{"description": "Compute heat generation due to fission.", "href": "../../source/kernels/NeutronHeatSource.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temperature
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
burnup_function<<<{"description": "Burnup function"}>>> = burnup
axial_relocation_object<<<{"description": "Name of the AxialRelocationUserObject that determines whether the fuel has crumbled."}>>> = axial_relocation
extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = 'ref'
[]
[](assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part1.i)An example of UO2Thermal when using full thermo-mechanical coupling is given by:
[Materials<<<{"href": "../Materials/index.html"}>>>]
[fuel_thermal]
type = UO2Thermal<<<{"description": "Computes thermal conductivity and specific heat capacity of uranium dioxide fuel.", "href": "../../source/materials/UO2Thermal.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
thermal_conductivity_model<<<{"description": "The thermal conductivity model."}>>> = STAICU
hbs_porosity_correction<<<{"description": "The porosity correction method for the thermal conductivity model in the high burnup structure."}>>> = KAMPF
model_hbs_formation<<<{"description": "Flag on whether to take into account the volume fraction of high burnup structure that has formed on the thermal conductivity calculation."}>>> = true
temperature<<<{"description": "Coupled temperature"}>>> = temperature
burnup_function<<<{"description": "Burnup function"}>>> = burnup
axial_relocation_object<<<{"description": "Name of the AxialRelocationUserObject that determines whether the fuel has crumbled."}>>> = axial_relocation
gap_thermal_conductivity<<<{"description": "The layered average thermal conductivity across the gas gap."}>>> = layered_average_gap_conductivity
[]
[](assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part1.i)An example of UO2ElasticityTensor when using full thermo-mechanical coupling is given by:
[Materials<<<{"href": "../Materials/index.html"}>>>]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor<<<{"description": "Computes the isotropic elastic constants for UO2 fuel as a scaled function of the number of cracks in the fuel.", "href": "../../source/materials/solid_mechanics/UO2IsotropicDamageElasticityTensor.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
fragmentation_model<<<{"description": "The model used to calculate the number of cracks in the fuel."}>>> = BARANI
temperature<<<{"description": "Coupled temperature"}>>> = temperature
rod_ave_lin_pow<<<{"description": "Average linear power function"}>>> = power_history
axial_relocation_object<<<{"description": "Name of the AxialRelocationUserObject that determines whether the fuel has crumbled."}>>> = axial_relocation
crumbling_scale_factor<<<{"description": "Scaling factor to apply to the Young's modulus in layers that have crumbled during axial relocation."}>>> = 0.0001
[]
[](assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part1.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
- burnup_functionBurnup function
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Burnup function
- burnup_variableThe burnup variable.
C++ Type:VariableName
Unit:(no unit assumed)
Controllable:No
Description:The burnup variable.
- clad_blocksThe list of names of the block (subdomain) for the cladding.
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of names of the block (subdomain) for the cladding.
- clad_inner_volume_addition0An additional volume to be included in the internal volume calculation. A time-dependent function is expected.
Default:0
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:An additional volume to be included in the internal volume calculation. A time-dependent function is expected.
- critical_gb_stress1.3e+08Critical stress at which a grain boundary fractures for the pulverization model
Default:1.3e+08
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Critical stress at which a grain boundary fractures for the pulverization model
- density10431As-fabricated fuel pellet density.
Default:10431
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:As-fabricated fuel pellet density.
- evolve_bubble_pressure_hbsTrueAllow bubble pressure to evolve from initial conditions based on evolution equations.
Default:True
C++ Type:bool
Controllable:No
Description:Allow bubble pressure to evolve from initial conditions based on evolution equations.
- fission_rateCoupled fission rate
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled fission rate
- formulationLayered1DThe layered formulation being used in the simulation.
Default:Layered1D
C++ Type:MooseEnum
Controllable:No
Description:The layered formulation being used in the simulation.
- fragment_packing_fraction0.69The packing fraction of large fragments of fuel.
Default:0.69
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The packing fraction of large fragments of fuel.
- fragment_particle_shapeTriangular_PrismThe larger particle shape used to calculate the pulverized binary packing fraction: Sphere Cube Octahedron Ideal_Cylinder Triangular_Prism
Default:Triangular_Prism
C++ Type:MooseEnum
Controllable:No
Description:The larger particle shape used to calculate the pulverized binary packing fraction: Sphere Cube Octahedron Ideal_Cylinder Triangular_Prism
- fuel_blocksThe list of names of the blocks (subdomains) for the fuel pellets.
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of names of the blocks (subdomains) for the fuel pellets.
- gap_thickness_threshold0.0002The threshold gap thickness required for axial relocation.
Default:0.0002
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The threshold gap thickness required for axial relocation.
- hbs_materialhbs_formationName of the HighBurnupStructureFormation block.
Default:hbs_formation
C++ Type:MaterialName
Controllable:No
Description:Name of the HighBurnupStructureFormation block.
- id_offset0This offset is added to the generated boundary IDs
Default:0
C++ Type:short
Controllable:No
Description:This offset is added to the generated boundary IDs
- 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.
- maximum_iterations10Maximum number of sub-newton iterations allowed when calculating the packing fraction.
Default:10
C++ Type:unsigned int
Controllable:No
Description:Maximum number of sub-newton iterations allowed when calculating the packing fraction.
- name_prefixIf provided, prefix the built in boundary names with this string
C++ Type:std::string
Controllable:No
Description:If provided, prefix the built in boundary names with this string
- nonrelocatable_fuel_fraction0.01The fraction of the initial fuel in a layer that cannot relocate.
Default:0.01
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The fraction of the initial fuel in a layer that cannot relocate.
- output_iteration_infoFalseSet true to output sub-newton iteration information when calculating the packing fraction.
Default:False
C++ Type:bool
Controllable:No
Description:Set true to output sub-newton iteration information when calculating the packing fraction.
- output_userobjectsTrueWhether or not to create AuxVariables and AuxKernels to output the results of the userobjects used in the axial relocation calculation.
Default:True
C++ Type:bool
Controllable:No
Description:Whether or not to create AuxVariables and AuxKernels to output the results of the userobjects used in the axial relocation calculation.
- pulver_characteristic_length0.0001The characteristic length of the pulvers.
Default:0.0001
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The characteristic length of the pulvers.
- pulver_packing_fraction0.72The packing fraction of the smaller pulvers of fuel.
Default:0.72
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The packing fraction of the smaller pulvers of fuel.
- pulver_particle_shapeOctahedronThe smaller particle shape used to calculate the pulverized binary packing fraction: Sphere Cube Octahedron Ideal_Cylinder Triangular_Prism
Default:Octahedron
C++ Type:MooseEnum
Controllable:No
Description:The smaller particle shape used to calculate the pulverized binary packing fraction: Sphere Cube Octahedron Ideal_Cylinder Triangular_Prism
- pulverization_thresholdTURNBULLThe model to use for the pulverization threshold.
Default:TURNBULL
C++ Type:MooseEnum
Controllable:No
Description:The model to use for the pulverization threshold.
- residual_gap_size2e-06The residual gap remaining in layers that have crumbled.
Default:2e-06
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The residual gap remaining in layers that have crumbled.
- scalar_critical_pressure1Multiplicative scalar to adjust the value of the critical fragmentation pressure in the pulverization model
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Multiplicative scalar to adjust the value of the critical fragmentation pressure in the pulverization model
- tolerance1e-10Absolute convergence tolerance for the sub-newton iteration used to calculate the packing fraction.
Default:1e-10
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Absolute convergence tolerance for the sub-newton iteration used to calculate the packing fraction.
- translation_vector0 0 0The value to use for the translation. The xyz coordinates are applied in each direction respectively.
Default:0 0 0
C++ Type:libMesh::VectorValue<double>
Unit:(no unit assumed)
Controllable:No
Description:The value to use for the translation. The xyz coordinates are applied in each direction respectively.
- use_automatic_differentiationFalseFlag to use automatic differentiation (AD) objects when possible
Default:False
C++ Type:bool
Controllable:No
Description:Flag to use automatic differentiation (AD) objects when possible
- use_axial_gas_communicationFalseUsed when the axial gas communication model is run with relocation.
Default:False
C++ Type:bool
Controllable:No
Description:Used when the axial gas communication model is run with relocation.
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
Associated Actions
Available Actions
- Bison App
- AxialRelocationActionSets up AuxVariables, AuxKernels, Materials, Postprocessors, and Userobjects for simulations containing axial fuel relocation.