- eigenstrain_nameMaterial property name for the eigenstrain tensor computed by this model. IMPORTANT: The name of this property must also be provided to the strain calculator.
C++ Type:std::string
Controllable:No
Description:Material property name for the eigenstrain tensor computed by this model. IMPORTANT: The name of this property must also be provided to the strain calculator.
- temperatureCoupled temperature variable
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled temperature variable
UPuZrGaseousEigenstrain
Computes and sums the change in fuel pellet volume due to gaseous fission product buildup in UPuZr.
Description
UPuZrGaseousEigenstrain computes a volumetric strain to account for gaseous swelling in U-Pu-Zr metal fuel systems. The derivation for the fuel swelling model for U-Pu-Zr used here was originally presented in Olander (1976). The model is able to simplify the gaseous swelling porosity into an analytical solution by making the following assumptions:
Fission gas diffusivity is infinite so that all fission gas is born in the bubbles;
The number density of bubbles is constant and their shape is perfectly spherical;
The gas within the bubbles can be treated as an ideal gas;
The gas/vacancy ratio in the bubbles is in equilibrium, i.e. the bubbles are not over- or under-pressurized;
Re-solution of fission gas atoms from the bubbles is neglected;
The solid is assumed to be un-stressed.
Following these assumptions, the number of gas atoms in each bubble at some time can be calculated directly from the total number of fissions, (1) where is the yield of gas atoms per fission, is the number density of bubbles (bub/m), is a fixed constant representing the amount of fission gas retained in the solid, and is the average number of fissions between and , where is the fission rate density.
Also included in Eq. (1) is the impact of interconnectivity of the bubbles on the total number of gas atoms per bubble. In the absence of a mechanistically informed interconnection model, the total bubble interconnection can be estimated from the porosity by, (2) where and is the interconnection initiating and terminating porosity respectively, and is the bulk porosity at time . and can be set via the input parameters interconnection_initiating_porosity and interconnection_terminating_porosity. Eq. (2) ensures a linear transition of interconnection from 0 to 1.0, capturing the smooth transition from non-interconnected to fully interconnected porosity. Additionally, an option to include densification during reactor operation has been added for novel fuel designs with fabricated porosities. Initial porosity is updated as a function of temperature: This densification model is derived from 2D mesoscale densification simulations. The gaseous swelling continues as long as the updated porosity is lower than the terminating porosity.
The bubble radius can be simply calculated as a function of the total number of fissions, where is the Boltzmann constant, is the temperature (K), is the surface tension of the fuel (J/m) (Karahan, 2009), is the gaseous fission product yield, is the fission rate density, is time, and is the number density of bubbles (bubbles/m).
Given the radius, the total eigenstrain can be calculated as, (3)
Several checks are performed on the value calculated by Eq. (3), ensuring that swelling due to gas bubbles only increases, and is not larger than the maximum permissible swelling calculated from , where is some initial porosity, e.g. fabrication porosity.
The porosity due to gas can be calculated from the swelling eigenstrain as, and the total porosity can then be calculated from the gaseous eigenstrain as,
Finally, the input parameter anisotropic_factor can be optionally specified between 1 and -1 to preferentially apply the volumetric strain in the radial direction when the axial direction is the y-axis. The factor is applied in Cartesian coordinates, so the x- and z-dimensions are equally modified with the axial y-dimension offsetting both. The factor is applied such that the trace of the volumetric swelling is the same as purely isotropic swelling, but preferential in the radial dimensions:
Example Input Syntax
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[gas_swelling]
type = UPuZrGaseousEigenstrain<<<{"description": "Computes and sums the change in fuel pellet volume due to gaseous fission product buildup in UPuZr.", "href": "UPuZrGaseousEigenstrain.html"}>>>
temperature<<<{"description": "Coupled temperature variable"}>>> = temp
initial_porosity<<<{"description": "Initial or fabrication porosity"}>>> = 0.1
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
output_properties<<<{"description": "List of material properties, from this material, to output (outputs must also be defined to an output type)"}>>> = 'porosity gaseous_porosity'
bubble_number_density<<<{"description": "Material property name for the number density of intragranular bubbles, [bubbles/m^3]"}>>> = 1e+20
eigenstrain_name<<<{"description": "Material property name for the eigenstrain tensor computed by this model. IMPORTANT: The name of this property must also be provided to the strain calculator."}>>> = gas_swelling_eigenstrain
anisotropic_factor<<<{"description": "Factor applied to radial strains to estimate macroscopic anisotropic swelling. Axial axis must be along Y-axis."}>>> = 0.3
[]
[](test/tests/solid_mechanics/upuzr_eigenstrains/upuzr_gaseous_eigenstrain/test.i)UPuZrGaseousEigenstrain must be used in conjunction with the solid mechanics quasi static action to apply the calculated eigenstrain:
[Physics<<<{"href": "../../../syntax/Physics/index.html"}>>>]
[SolidMechanics<<<{"href": "../../../syntax/Physics/SolidMechanics/index.html"}>>>]
[QuasiStatic<<<{"href": "../../../syntax/Physics/SolidMechanics/QuasiStatic/index.html"}>>>]
[all]
strain<<<{"description": "Strain formulation"}>>> = FINITE
add_variables<<<{"description": "Add the displacement variables"}>>> = true
eigenstrain_names<<<{"description": "List of eigenstrains to be applied in this strain calculation"}>>> = 'gas_swelling_eigenstrain'
generate_output<<<{"description": "Add scalar quantity output for stress and/or strain"}>>> = 'stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy'
[]
[]
[]
[](test/tests/solid_mechanics/upuzr_eigenstrains/upuzr_gaseous_eigenstrain/test.i)Input Parameters
- anisotropic_factor0Factor applied to radial strains to estimate macroscopic anisotropic swelling. Axial axis must be along Y-axis.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Factor applied to radial strains to estimate macroscopic anisotropic swelling. Axial axis must be along Y-axis.
- base_nameOptional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
C++ Type:std::string
Controllable:No
Description:Optional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- bubble_number_densityN_bubblesMaterial property name for the number density of intragranular bubbles, [bubbles/m^3]
Default:N_bubbles
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Material property name for the number density of intragranular bubbles, [bubbles/m^3]
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Options:NONE, ELEMENT, SUBDOMAIN
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- declare_suffixAn optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
- densificationFalseWhether densification occurs or not
Default:False
C++ Type:bool
Controllable:No
Description:Whether densification occurs or not
- fission_gas_yield0.3017Fission gas produced per fission
Default:0.3017
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Fission gas produced per fission
- fission_ratefission_rateFission rate material property name
Default:fission_rate
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Fission rate material property name
- initial_porosity0Initial or fabrication porosity
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Initial or fabrication porosity
- interconnection_initiating_porosity0.23Porosity at which fission gas release starts
Default:0.23
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Porosity at which fission gas release starts
- interconnection_terminating_porosity0.25Porosity at which fission gas release finishes
Default:0.25
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Porosity at which fission gas release finishes
- retained_gas_fraction0Retained gas fraction that does not contribute to gaseous swelling
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Retained gas fraction that does not contribute to gaseous swelling
- surface_energy0.8Surface energy of the bulk material
Default:0.8
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Surface energy of the bulk material
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.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Material Property Retrieval Parameters
- scalar1Scale factor to be applied to the gaseous swelling strain. Used for calibration and sensitivity studies
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scale factor to be applied to the gaseous swelling strain. Used for calibration and sensitivity studies
Advanced: Scaling Factors Parameters
Input Files
- (assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_1_5D_A.i)
- (assessment/metallic_fuel/FFTF/IFR1/analysis/IFR1_base.i)
- (assessment/metallic_fuel/EBRII/X430/analysis/template.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_1_5D_G.i)
- (test/tests/solid_mechanics/upuzr_eigenstrains/ad_upuzr_gaseous_eigenstrain/exact.i)
- (test/tests/standard_metallic_outputs_action/x441_mini_fuel_rod.i)
- (examples/constituent_redistribution/2d_thermo.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_grp_G.i)
- (test/tests/solid_mechanics/simple_fission_gas_viscoplasticity/old_method_comparison.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_1_5D_D.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_1_5D_F.i)
- (examples/thor_capsule_transfer/pin_with_heat_sink.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_grp_A.i)
- (test/tests/solid_mechanics/upuzr_eigenstrains/upuzr_gaseous_eigenstrain/exact.i)
- (test/tests/standard_metallic_outputs_action/x441_mini_fuel_rod_no_std_blk.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_grp_E.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_1_5D_E.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_grp_C.i)
- (examples/metal_fuel/x441_coarse/x441_group_A_nominal.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_1_5D_B.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/x441_base.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_grp_B.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_1_5D_C.i)
- (test/tests/solid_mechanics/upuzr_eigenstrains/upuzr_gaseous_eigenstrain/test.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_1_5D_H.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_grp_H.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/x441_base_1_5D.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_grp_D.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_grp_F.i)
- (test/tests/solid_mechanics/upuzr_eigenstrains/ad_upuzr_gaseous_eigenstrain/test.i)
- (examples/metal_fuel/uzr_densification/ebr2_2d_interpores_densification.i)
References
- Aydin Karahan.
Modeling of thermo-mechanical and irradiation behavior of metallic and oxide fuels for sodium fast reactors.
PhD thesis, Massachusetts Institute of Technology, Jun 2009.
URL: https://tinyurl.com/y72vqvbn.[BibTeX]
@phdthesis{karahan2009, author = "Karahan, Aydin", title = "Modeling of thermo-mechanical and irradiation behavior of metallic and oxide fuels for sodium fast reactors", school = "Massachusetts Institute of Technology", year = "2009", month = "Jun", url = "https://tinyurl.com/y72vqvbn" } - D. R. Olander.
Fundamental aspects of nuclear reactor fuel elements.
Technical Information Center, Energy Research and Development Administration, 1976.[BibTeX]
@BOOK{olander76, author = "Olander, D. R.", title = "Fundamental aspects of nuclear reactor fuel elements", publisher = "Technical Information Center, Energy Research and Development Administration", year = "1976" }
(test/tests/solid_mechanics/upuzr_eigenstrains/upuzr_gaseous_eigenstrain/test.i)
# @Requirement F4.40
# This tests UPuZrGaseousEigenstrain, a swelling model for UPuZr metal fuel
# that allows for variation in bubble radius, as well as to the fission gas release
# model for UPuZr fuel.
#
# The swelling model is based on Eq. (13.146) in "Fundamental aspects of nuclear
# reactor fuel elements" by Olander.
#
# The fission gas that is released is based on an empirical model
# which states that once the gaseous swelling reaches a value of
# 0.33 (corresponding to a porosity of 0.24812), 80% of the fission gas so far
# produced is immediately released. After that, 100% of the gas produced is released.
# For information regarding swelling and porosity, see the above reference or the
# following reference:
# Karahan A., Modeling of Thermo Mechanical and Irradiation Behavior of Metallic
# and Oxide Fuels for Sodium Fast Reactors, Thesis, Massachusetts Institute of Technology 2009.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
eigenstrain_names = 'gas_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy'
[]
[]
[AuxVariables]
[temp]
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[temp]
type = ConstantAux
variable = temp
value = 1700
[]
[volumetric_strain]
type = RankTwoScalarAux
variable = volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[gas_swell_aux]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
[]
[]
[Functions]
[fission_rate_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 2.5e19'
[]
[pressure_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 1e6'
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[Pressure]
[Side]
boundary = 'right top front'
function = pressure_func
[]
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
[]
[fission_rate]
type = GenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = 'fission_rate_func'
outputs = all
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
initial_porosity = 0.1
outputs = all
output_properties = 'porosity gaseous_porosity'
bubble_number_density = 1e+20
eigenstrain_name = gas_swelling_eigenstrain
anisotropic_factor = 0.3
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
outputs = all
output_properties = 'fis_gas_prod fis_gas_rel'
[]
[]
[Executioner]
type = Transient
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-4
l_tol = 1e-5
num_steps = 70
dt = 1e6
[]
[Postprocessors]
[gas_produced]
type = ElementAverageValue
variable = fis_gas_prod
[]
[gas_released]
type = ElementAverageValue
variable = fis_gas_rel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
[]
[gas_swell]
type = ElementAverageValue
variable = gas_swell
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
exodus = true
[]
(test/tests/solid_mechanics/upuzr_eigenstrains/upuzr_gaseous_eigenstrain/test.i)
# @Requirement F4.40
# This tests UPuZrGaseousEigenstrain, a swelling model for UPuZr metal fuel
# that allows for variation in bubble radius, as well as to the fission gas release
# model for UPuZr fuel.
#
# The swelling model is based on Eq. (13.146) in "Fundamental aspects of nuclear
# reactor fuel elements" by Olander.
#
# The fission gas that is released is based on an empirical model
# which states that once the gaseous swelling reaches a value of
# 0.33 (corresponding to a porosity of 0.24812), 80% of the fission gas so far
# produced is immediately released. After that, 100% of the gas produced is released.
# For information regarding swelling and porosity, see the above reference or the
# following reference:
# Karahan A., Modeling of Thermo Mechanical and Irradiation Behavior of Metallic
# and Oxide Fuels for Sodium Fast Reactors, Thesis, Massachusetts Institute of Technology 2009.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
eigenstrain_names = 'gas_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy'
[]
[]
[AuxVariables]
[temp]
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[temp]
type = ConstantAux
variable = temp
value = 1700
[]
[volumetric_strain]
type = RankTwoScalarAux
variable = volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[gas_swell_aux]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
[]
[]
[Functions]
[fission_rate_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 2.5e19'
[]
[pressure_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 1e6'
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[Pressure]
[Side]
boundary = 'right top front'
function = pressure_func
[]
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
[]
[fission_rate]
type = GenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = 'fission_rate_func'
outputs = all
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
initial_porosity = 0.1
outputs = all
output_properties = 'porosity gaseous_porosity'
bubble_number_density = 1e+20
eigenstrain_name = gas_swelling_eigenstrain
anisotropic_factor = 0.3
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
outputs = all
output_properties = 'fis_gas_prod fis_gas_rel'
[]
[]
[Executioner]
type = Transient
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-4
l_tol = 1e-5
num_steps = 70
dt = 1e6
[]
[Postprocessors]
[gas_produced]
type = ElementAverageValue
variable = fis_gas_prod
[]
[gas_released]
type = ElementAverageValue
variable = fis_gas_rel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
[]
[gas_swell]
type = ElementAverageValue
variable = gas_swell
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
exodus = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_1_5D_A.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/FFTF/IFR1/analysis/IFR1_base.i)
# IFR-1 ASSESSMENT CASE
# BISON recreation of the 169-pin IFR-1 experiment, which was irradiated in the
# FFTF from 9/1986 to 10/1988 to a peak burnup of about 10 at%. The assessment
# consists of three generic pins (U-10Zr, U-8Pu-10Zr, and U-19Pu-10Zr) which
# are compared against all available legacy calculations and PIE measurements
# for all 169 pins in the experiment. Composition-specific values are stored in
# three '.params' files. Units are in standard SI: J, K, kg, m, Pa, s.
# For a more complete description of the experiment, see [Dodds, 1986-1],
# [Dodds, 1986-2], [Porter and Tsai, 2011], and [Tsai et al., 1986]. For a more
# complete description of development and results of this assessment, see
# [Greenquist et al., 2021].
#
# To simulate one of the cases, use the combined input file option
# with one of the '.params' files. For example:
# mpiexec -n 4 ../../../../../bison-opt -i 'IFR1_base.i U-10Zr.params'
initial_fuel_density = 15800
[GlobalParams]
dim = 2
order = SECOND
family = LAGRANGE
elem_type = QUAD8
energy_per_fission = 3.2e-11 # [Shultis and Faw, 2008]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
temperature = T
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = ref
extra_tag_vectors = ref
[]
[Mesh]
coord_type = RZ
# Mesh includes a fuel slug, top and bottom blanket slugs, and cladding. All
# dimensions are in meters (m). Nominal dimensions come from [Dodds, 1986-2].
type = MeshGeneratorMesh
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
# build cladding
[bottom_plug]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.00287
nx = 3
ymin = 0.0
ymax = 0.015
ny = 5
[]
[bottom_corner]
type = GeneratedMeshGenerator
xmin = 0.00287
xmax = 0.00343
nx = 4
ymin = 0.0
ymax = 0.015
ny = 5
[]
[bottom_corner_rename_side]
type = SideSetsFromNormalsGenerator
input = bottom_corner
normals = '0 1 0'
new_boundary = new_side
[]
[combine_bottom_and_bottom_corner]
type = StitchedMeshGenerator
inputs = 'bottom_plug bottom_corner_rename_side'
stitch_boundaries_pairs = 'right left'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[cladding_wall]
type = GeneratedMeshGenerator
xmin = 0.00287
xmax = 0.00343
nx = 4
ymin = 0.015
ymax = 2.239
ny = 400
[]
[cladding_wall_rename_side]
type = SideSetsFromNormalsGenerator
input = cladding_wall
normals = '0 1 0'
new_boundary = new_side
[]
[combine_bottom_and_wall]
type = StitchedMeshGenerator
inputs = 'combine_bottom_and_bottom_corner cladding_wall_rename_side'
stitch_boundaries_pairs = '4 bottom'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[top_corner]
type = GeneratedMeshGenerator
xmin = 0.00287
xmax = 0.00343
nx = 4
ymin = 2.239
ymax = 2.254
ny = 5
[]
[top_corner_rename_side]
type = SideSetsFromNormalsGenerator
input = top_corner
normals = '-1 0 0'
new_boundary = new_side
[]
[combine_wall_and_top_corner]
type = StitchedMeshGenerator
inputs = 'combine_bottom_and_wall top_corner_rename_side'
stitch_boundaries_pairs = '4 bottom'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[top_plug]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.00287
nx = 3
ymin = 2.239
ymax = 2.254
ny = 5
[]
[cladding_all]
type = StitchedMeshGenerator
inputs = 'combine_wall_and_top_corner top_plug'
stitch_boundaries_pairs = '4 right'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
# build fuel and blanket
[bottom_blanket]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.00249
nx = 6
ymin = 0.0162
ymax = 0.1812
ny = 40
[]
[fuel_slug]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.00249
nx = 6
ymin = 0.1812
ymax = 1.0956
ny = 300
[]
[top_blanket]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.00249
nx = 6
ymin = 1.0956
ymax = 1.2606
ny = 40
[]
[fuel_two]
type = StitchedMeshGenerator
inputs = 'bottom_blanket fuel_slug'
stitch_boundaries_pairs = 'top bottom'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[fuel_all]
type = StitchedMeshGenerator
inputs = 'fuel_two top_blanket'
stitch_boundaries_pairs = 'top bottom'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
# combine and name subdomains
[combine_fuel_cladding]
type = CombinerGenerator
inputs = 'cladding_all fuel_all'
[]
[name_cladding]
type = SubdomainBoundingBoxGenerator
input = combine_fuel_cladding
bottom_left = '0.0 0.0 0.0'
top_right = '0.00343 2.254 0'
location = INSIDE
block_id = 0
block_name = clad
[]
[name_blanket]
type = SubdomainBoundingBoxGenerator
input = name_cladding
bottom_left = '0.0 0.0162 0.0'
top_right = '0.00249 1.2606 0.0'
location = INSIDE
block_id = 1
block_name = blanket
[]
[name_fuel]
type = SubdomainBoundingBoxGenerator
input = name_blanket
bottom_left = '0.0 0.1812 0.0'
top_right = '0.00249 1.0956 0.0'
location = INSIDE
block_id = 2
block_name = pellet
[]
# name boundaries
[name_centerline]
type = SideSetsFromNormalsGenerator
input = name_fuel
normals = '-1 0 0'
new_boundary = centerline
replace = true
[]
[name_slug_outer_surface]
type = SideSetsFromNormalsGenerator
input = name_centerline
normals = '1 0 0'
new_boundary = pellet_outer_radial_surface
replace = true
[]
[name_slug_ends]
type = SideSetsFromPointsGenerator
input = name_slug_outer_surface
points = '0.50e-3 0.0162 0.0
0.50e-3 1.2606 0.0'
new_boundary = 'bottom_of_bottom_pellet top_of_top_pellet'
replace = true
[]
[name_cladding_inside]
type = SideSetsFromPointsGenerator
input = name_slug_ends
points = '0.50e-3 0.015 0.0
0.00287 1.0956 0.0
0.50e-3 2.239 0.0'
new_boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
replace = true
[]
[name_cladding_outer_surface]
type = SideSetsFromPointsGenerator
input = name_cladding_inside
points = '0.00343 1.0956 0.0
0.50e-3 0.0 0.0
0.50e-3 2.254 0.0'
new_boundary = 'clad_outside_right clad_outside_bottom clad_outside_top'
replace = true
[]
[]
[Variables]
[T] # Temperature (K)
initial_condition = 298
[]
[]
[AuxVariables]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[fuel_clad_gap_width]
order = FIRST
family = LAGRANGE
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[fuel_volumetric_strain]
block = 'pellet blanket'
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_stress]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_elastic_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_total_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[local_power]
block = 'pellet blanket'
order = CONSTANT
family = MONOMIAL
[]
[T_coolant]
order = CONSTANT
family = MONOMIAL
[]
[pin_lhr]
block = 'pellet blanket'
order = CONSTANT
family = MONOMIAL
[]
[eutectic_thickness]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[assembly_lhr_avg_function]
# Subassembly average power as a function of time. x: time (s), y: Average
# LHGR (W/m). See [Greenquist et al., 2021].
type = PiecewiseLinear
x = '0 3600 11900880 11904480 21097440 21101040 29542320 29545920
35274240 35277840 42665040 42668640 53615520 53619120 53705520 53791920'
y = '0 38276 36089 33902 31988 33355 31988 30074
29254 27614 25153 26520 26247 26.2 26.2 26.2'
[]
[lhr_peaking_factor_function]
# Axial variation from the average LHGR. See [Porter and Tsai, 2011] and
# [Greenquist et al., 2021].
type = ParsedFunction
symbol_names = 'a0 a1 a2 a3 a4 mb bb mt bt
z_bot z_top bu_final bu_now'
symbol_values = '0.68687 2.6352 -3.20026 1.35e-5 2.69e-5 0.279 0.084 -0.301 0.416
0.1812 1.0956 0.05 burnup_max'
expression = 'bu_frac := bu_now / bu_final;
p_bot := (mb * y + bb) * bu_frac;
p_top := (mt * y + bt) * bu_frac;
z_bbot := 0.0162; p_b := if(y < z_bbot, 0, p_bot);
z_btop := 1.2606; p_t := if(y > z_btop, 0, p_top);
z1 := y - z_bot;
p_mid := a0 + a1 * z1 + a2 * z1^2 + a3 * z1^3 + a4 * z1^4;
if(y < z_bot, p_b, if(y > z_top, p_t, p_mid))'
[]
[pin_lhr_function]
type = CompositeFunction
functions = 'assembly_lhr_avg_function lhr_peaking_factor_function'
[]
[coolant_flux_function]
# Subassembly coolant mass flux. x: time (s), y: flux (kg m^-2 s^-1). See
# [Porter and Tsai, 2011].
type = PiecewiseLinear
x = '0 3600 11900880 11904480 21097440 21101040 29542320 29545920
42665040 42668640 53615520 53619120 53791920'
y = '5690 5740 5740 5900 5900 5930 5930 6040
6040 6090 6090 5690 5690'
[]
[coolant_pressure_function]
# Constant coolant inlet pressure (Pa) taken from [Cabell, 1980].
type = ConstantFunction
value = 1018327
[]
[coolant_T_in_function]
# Sodium coolant inlet temperature (K). See [Porter and Tsai, 2011] and
# [Greenquist et al., 2021].
type = PiecewiseLinear
x = '0 3600 53619120 53705520 53791920'
y = '298.0 633.15 633.15 305.0 305.0'
[]
[sodium_volume_function]
# The initial sodium height is assumed to be equal to the initial fuel
# height and sodium infiltration is ignored.
type = ParsedFunction
symbol_names = 'pellet_outer_radius cladding_gap_width blanket_top blanket_bottom'
symbol_values = '0.00249 0.00038 1.2606 0.0162'
expression = 'pi * ((pellet_outer_radius + cladding_gap_width)^2 -
pellet_outer_radius^2) * (blanket_top - blanket_bottom)'
[]
[gas_volume_function]
type = ParsedFunction
symbol_names = 'clad_internal_volume fuel_volume sodium_volume'
symbol_values = 'clad_internal_volume fuel_volume sodium_volume'
expression = 'abs(clad_internal_volume) - abs(fuel_volume) - abs(sodium_volume)'
[]
[sodium_conductivity_function]
# Thermal conductivity (W m^-1 K^-1) of the pin gap sodium according to
# [Fink and Leibowitz, 1995]
type = ParsedFunction
symbol_names = 'A B C D'
symbol_values = '124.67 -0.11381 5.5226e-5 -1.1842e-8'
expression = 'A + B * t + C * t^2 + D * t^3'
[]
[creep_timestep_min_function]
type = ParsedFunction
symbol_names = 'creep_timestep_fuel creep_timestep_blanket creep_timestep_clad'
symbol_values = 'creep_timestep_fuel creep_timestep_blanket creep_timestep_clad'
expression = 'min(min(creep_timestep_fuel, creep_timestep_blanket),
creep_timestep_clad)'
[]
[fuel_axial_elongation_max_pct_function]
type = ParsedFunction
symbol_names = 'fuel_axial_elongation_min fuel_axial_elongation_max pellet_height'
symbol_values = 'fuel_axial_elongation_min fuel_axial_elongation_max 0.9144'
expression = '(fuel_axial_elongation_max - fuel_axial_elongation_min) /
pellet_height * 100'
[]
[fuel_radial_dilation_max_pct_function]
type = ParsedFunction
symbol_names = 'fuel_radial_dilation_max pellet_outer_radius'
symbol_values = 'fuel_radial_dilation_max 0.00249'
expression = 'fuel_radial_dilation_max / pellet_outer_radius * 100'
[]
[clad_axial_elongation_max_pct_function]
type = ParsedFunction
symbol_names = 'clad_axial_elongation_max plug_height cladding_total_height'
symbol_values = 'clad_axial_elongation_max 0.015 2.254'
expression = 'clad_axial_elongation_max / (plug_height + cladding_total_height) *
100'
[]
[clad_radial_dilation_max_pct_function]
type = ParsedFunction
symbol_names = 'clad_radial_dilation_max cladding_outer_radius'
symbol_values = 'clad_radial_dilation_max 0.00343'
expression = 'clad_radial_dilation_max / cladding_outer_radius * 100'
[]
[plenum_compressibility_function]
# Accounts for nonideality in fission gas [Hobbs and Charboneau, 2020].
type = ParsedFunction
symbol_names = 'plenum_pressure A B C'
symbol_values = 'plenum_pressure 1.002 -3.4e-8 -1.9e-15'
expression = 'A + B * plenum_pressure + C * plenum_pressure^2'
[]
[compressibility_times_temperature_function]
type = ParsedFunction
symbol_names = 'plenum_temperature plenum_compressibility'
symbol_values = 'plenum_temperature plenum_compressibility'
expression = 'plenum_temperature * plenum_compressibility'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy
creep_strain_zz elastic_strain_xx elastic_strain_yy
elastic_strain_zz strain_xx strain_yy strain_zz'
[fuel_mechanics]
block = 'pellet blanket'
eigenstrain_names = 'fuel_thermal_strain fuel_gaseous_strain
fuel_solid_strain'
extra_vector_tags = ref
[]
[clad_mechanics]
block = clad
eigenstrain_names = 'clad_thermal_strain clad_gaseous_strain'
extra_vector_tags = ref
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = ref
[]
[heat_conduction_time_derivative]
type = HeatConductionTimeDerivative
variable = T
extra_vector_tags = ref
[]
[heat_conduction]
type = HeatConduction
variable = T
extra_vector_tags = ref
[]
[heat_source]
type = FissionRateHeatSource
block = 'pellet blanket'
variable = T
fission_rate = fission_rate
extra_vector_tags = ref
[]
[]
[AuxKernels]
[gap_conductance]
type = MaterialRealAux
variable = gap_conductance
property = gap_conductance
boundary = pellet_outer_radial_surface
[]
[fuel_clad_gap_width]
type = ParsedAux
variable = fuel_clad_gap_width
coupled_variables = penetration
expression = '-penetration'
[]
[failed_element]
type = MaterialRealAux
variable = element_failed
property = failed
boundary = clad_outside_right
[]
[fuel_volumetric_strain]
type = RankTwoScalarAux
block = 'pellet blanket'
variable = fuel_volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[clad_hoop_stress]
type = RankTwoAux
block = clad
variable = clad_hoop_stress
rank_two_tensor = stress
index_i = 2
index_j = 2
[]
[clad_hoop_creep_strain]
type = RankTwoAux
block = clad
variable = clad_hoop_creep_strain
rank_two_tensor = creep_strain
index_i = 2
index_j = 2
[]
[clad_hoop_elastic_strain]
type = RankTwoAux
block = clad
variable = clad_hoop_elastic_strain
rank_two_tensor = elastic_strain
index_i = 2
index_j = 2
[]
[clad_hoop_total_strain]
type = RankTwoAux
block = clad
variable = clad_hoop_total_strain
rank_two_tensor = total_strain
index_i = 2
index_j = 2
[]
[local_power]
type = FunctionAux
block = 'pellet blanket'
variable = local_power
function = lhr_peaking_factor_function
[]
[T_coolant]
type = MaterialRealAux
variable = T_coolant
property = coolant_temperature
boundary = clad_outside_right
[]
[pin_lhr]
type = FunctionAux
block = 'pellet blanket'
variable = pin_lhr
function = pin_lhr_function
[]
[eutectic_thickness]
type = DiffusionalEutecticThicknessFCCI
block = clad
variable = eutectic_thickness
temperature = T
boundary = clad_inside_right
execute_on = TIMESTEP_END
[]
[]
[Contact]
# Assessment uses frictionless contact. See [Greenquist et al., 2021] for
# a study comparing the various contact models.
[frictionless_fuel_clad_mechanical]
primary = clad_inside_right
secondary = pellet_outer_radial_surface
model = frictionless
formulation = kinematic
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = T
primary = clad_inside_right
secondary = pellet_outer_radial_surface
gap_geometry_type = CYLINDER
gap_conductivity_function = sodium_conductivity_function
gap_conductivity_function_variable = T
quadrature = true
min_gap = 0.00038 # Set to the initial gap width.
tangential_tolerance = 1e-4
[]
[]
[BCs]
[fix_disp_x_all]
type = DirichletBC
variable = disp_x
value = 0.0
boundary = centerline
[]
[fix_disp_y_all]
type = DirichletBC
variable = disp_y
value = 0.0
boundary = 'clad_outside_bottom bottom_of_bottom_pellet'
[]
[Pressure]
[coolant_pressure]
function = coolant_pressure_function
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
[]
[]
[PlenumPressure]
[plenum_pressure]
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
startup_time = 0
initial_pressure = 101325 # 1 atm [Greenquist et al., 2021]
volume = gas_volume
material_input = fission_gas_released
R = 8.3143
temperature = plenum_temperature
output = plenum_pressure
[]
[]
[]
[PlenumTemperature]
[plenum_temperature]
temperature = T
boundary = 'bottom_of_bottom_pellet pellet_outer_radial_surface
top_of_top_pellet clad_inside_bottom clad_inside_right
clad_inside_top'
inner_surfaces = 'bottom_of_bottom_pellet pellet_outer_radial_surface
top_of_top_pellet'
outer_surfaces = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[CoolantChannel]
[convective_clad_surface]
variable = T
inlet_temperature = coolant_T_in_function
inlet_pressure = coolant_pressure_function
inlet_massflux = coolant_flux_function
coolant_material = sodium
rod_diameter = 0.00686 # [Dodds, 1986-2]
rod_pitch = 0.00823 # [Greenquist et al., 2021]
linear_heat_rate = assembly_lhr_avg_function
axial_power_profile = lhr_peaking_factor_function
subchannel_geometry = triangular
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
[]
[]
[Materials]
###### FUEL ######
[fuel_fission_rate]
type = UPuZrFissionRate
block = pellet
rod_linear_power = assembly_lhr_avg_function
axial_power_profile = lhr_peaking_factor_function
pellet_radius = 0.00249 # [Dodds, 1986-2]
initial_X_Zr = 0.224 # [Dodds, 1986-2]
X_Zr = 0.224
outputs = exodus
output_properties = fission_rate
[]
[fuel_burnup]
type = UPuZrBurnup
block = pellet
density = ${initial_fuel_density} # [Dodds, 1986-2]
initial_X_Pu = ${initial_X_Pu} # [Dodds, 1986-2]
initial_X_Zr = 0.224 # [Dodds, 1986-2]
outputs = exodus
output_properties = burnup
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density} # [Dodds, 1986-2]
[]
[fuel_sodium_logging]
type = UPuZrSodiumLogging
block = pellet
porosity = porosity
sodium_infiltration_fraction = ${Na_infiltration_fraction} # [Bauer and Holland, 1995]
outputs = exodus
output_properties = sodium_logged_porosity
[]
[fuel_thermal_properties]
type = UPuZrThermal
block = pellet
X_Pu = ${initial_X_Pu} # [Dodds, 1986-2]
X_Zr = 0.224 # [Dodds, 1986-2]
spheat_model = savage
thcond_model = lanl
porosity_model = logged
porosity = porosity
sodium_logged_porosity = sodium_logged_porosity
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = pellet
X_Pu = ${initial_X_Pu} # [Dodds, 1986-2]
X_Zr = 0.224 # [Dodds, 1986-2]
porosity = porosity
[]
[fuel_creep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 3e-3
effective_inelastic_strain_name = fuel_effective_creep_strain
[]
[fuel_gaseous_swelling]
type = UPuZrGaseousEigenstrain
block = pellet
fission_rate = fission_rate
anisotropic_factor = 0.5 # [Pahl et al., 1990]
bubble_number_density = 5e17 # [Casagranda et al., 2020]
interconnection_initiating_porosity = ${interconnection_init_porosity} # [Casagranda et al., 2020]
interconnection_terminating_porosity = ${interconnection_term_porosity} # [Casagranda et al., 2020]
eigenstrain_name = fuel_gaseous_strain
outputs = exodus
output_properties = 'gas_swelling porosity interconnectivity'
[]
[fuel_solid_swelling]
type = BurnupDependentEigenstrain
block = pellet
eigenstrain_name = fuel_solid_strain
swelling_name = solid_swelling
outputs = exodus
output_properties = solid_swelling
swelling_factor = 0 # Solid swelling is negligible below 10% burnup
[]
[fuel_fission_gas_release]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
porosity = porosity
critical_porosity = ${critical_porosity} # [Casagranda et al., 2020]
fractional_fgr_initial = ${fgr_init} # [Casagranda et al., 2020]
fractional_fgr_post = ${fgr_post} # [Casagranda et al., 2020]
[]
[fuel_thermal_expansion]
type = UPuZrThermalExpansionEigenstrain
block = pellet
stress_free_temperature = 298
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
block = pellet
inelastic_models = fuel_creep
[]
###### BLANKET ######
[blanket_fission_rate]
type = UPuZrFissionRate
block = blanket
rod_linear_power = assembly_lhr_avg_function
axial_power_profile = lhr_peaking_factor_function
pellet_radius = 0.00249
initial_X_Zr = 0.224 # 10 wt% [Dodds, 1986-2]
X_Zr = 0.224
outputs = exodus
output_properties = fission_rate
[]
[blanket_burnup]
type = UPuZrBurnup
block = blanket
density = 15800 # [Dodds, 1986-2]
initial_X_Pu = 0 # [Dodds, 1986-2]
initial_X_Zr = 0.224 # [Dodds, 1986-2]
outputs = exodus
output_properties = burnup
[]
[blanket_density]
type = StrainAdjustedDensity
block = blanket
strain_free_density = 15800 # [Dodds, 1986-2]
[]
[blanket_sodium_logging]
type = UPuZrSodiumLogging
block = blanket
porosity = porosity
sodium_infiltration_fraction = 0.08 # [Bauer and Holland, 1995]
outputs = exodus
output_properties = sodium_logged_porosity
[]
[blanket_thermal_properties]
type = UPuZrThermal
block = blanket
X_Pu = 0 # [Dodds, 1986-2]
X_Zr = 0.224 # [Dodds, 1986-2]
spheat_model = savage
thcond_model = lanl
porosity_model = logged
porosity = porosity
sodium_logged_porosity = sodium_logged_porosity
[]
[blanket_elasticity_tensor]
type = UPuZrElasticityTensor
block = blanket
X_Pu = 0 # [Dodds, 1986-2]
X_Zr = 0.224 # [Dodds, 1986-2]
porosity = porosity
[]
[blanket_creep]
type = UPuZrCreepUpdate
block = blanket
porosity = porosity
max_inelastic_increment = 3e-3
effective_inelastic_strain_name = blanket_effective_creep_strain
[]
[blanket_gaseous_swelling]
type = UPuZrGaseousEigenstrain
block = blanket
fission_rate = fission_rate
anisotropic_factor = 0.5 # [Pahl et al., 1990]
bubble_number_density = 5e17 # [Casagranda et al., 2020]
interconnection_initiating_porosity = 0.25 # [Casagranda et al., 2020]
interconnection_terminating_porosity = 0.27 # [Casagranda et al., 2020]
eigenstrain_name = fuel_gaseous_strain
outputs = exodus
output_properties = 'gas_swelling porosity interconnectivity'
[]
[blanket_solid_swelling]
type = BurnupDependentEigenstrain
block = blanket
eigenstrain_name = fuel_solid_strain
swelling_name = solid_swelling
outputs = exodus
output_properties = solid_swelling
swelling_factor = 0 # Solid swelling is negligible below 10% burnup
[]
[blanket_fission_gas_release]
type = UPuZrFissionGasRelease
block = blanket
fission_rate = fission_rate
porosity = porosity
critical_porosity = 0.26 # [Casagranda et al., 2020]
fractional_fgr_initial = 0.454 # [Casagranda et al., 2020]
fractional_fgr_post = 0.714 # [Casagranda et al., 2020]
[]
[blanket_thermal_expansion]
type = UPuZrThermalExpansionEigenstrain
block = blanket
stress_free_temperature = 298
eigenstrain_name = fuel_thermal_strain
[]
[blanket_elastic_stress]
type = ComputeMultipleInelasticStress
block = blanket
inelastic_models = blanket_creep
[]
###### CLADDING ######
[fast_neutron_flux]
type = UPuZrFastNeutronFlux
pellet_radius = 0.00249
axial_power_profile = lhr_peaking_factor_function
rod_linear_power = assembly_lhr_avg_function
initial_density = 15800 # [Dodds, 1986-2]
initial_X_Pu = ${initial_X_Pu} # [Dodds, 1986-2]
initial_X_Zr = 0.224 # [Dodds, 1986-2]
enrichment_U235 = ${enrichment_U235} # [Dodds, 1986-2]
enrichment_Pu240 = 0.061 # [Dodds, 1986-2]
calculate_fluence = true
outputs = exodus
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7761 # [Hofman et al., 1989]
[]
[clad_thermal_properties]
type = D9Thermal
block = clad
[]
[clad_gaseous_swelling]
type = D9VolumetricSwellingEigenstrain
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_gaseous_strain
[]
[clad_thermal_expansion]
type = D9ThermalExpansionEigenstrain
block = clad
eigenstrain_name = clad_thermal_strain
stress_free_temperature = 298
[]
[clad_elasticity_tensor]
type = D9ElasticityTensor
block = clad
[]
[clad_creep]
type = D9CreepUpdate
block = clad
max_inelastic_increment = 3e-3 # 1e-2
effective_inelastic_strain_name = clad_effective_creep_strain
[]
[clad_failure]
type = D9FailureClad
method = steady_state
hoop_stress = stress_zz
boundary = clad_outside_right
outputs = exodus
output_properties = cdf_failure
[]
[inner_clad_wastage]
type = MetallicFuelWastage
block = clad
method = flux_d9
burnup = 0 # not used but must be specified
outputs = exodus
output_properties = wastage_thickness
[]
[outer_clad_wastage]
type = MetallicFuelCoolantWastage
block = clad
clad_material = SS316 # does not have D9
use_effective_method = true
outputs = exodus
[]
[clad_wastage_fraction]
type = MetallicFuelWastageDamage
block = clad
wastage_thickness = wastage_thickness
pellet_length = 0.9144
pellet_y_start = 0.1812
cladding_thickness = 0.00056
outputs = exodus
[]
[clad_damage_fraction]
type = ScalarMaterialDamage
block = clad
damage_index = thinning_fraction
outputs = exodus
[]
[clad_elastic_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = clad_creep
[]
[]
[Dampers]
[T_damper]
type = MaxIncrement
variable = T
max_increment = 25
[]
[disp_x_damper]
type = MaxIncrement
variable = disp_x
max_increment = 3.00E-04
[]
[disp_y_damper]
type = MaxIncrement
variable = disp_y
max_increment = 3.00E-04
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
automatic_scaling = true
compute_scaling_once = false
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package
-ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist
51'
line_search = NONE
l_max_its = 30
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 5e-7
start_time = 0
end_time = 53791920
dtmin = 1e-2
dtmax = 1e6
verbose = true
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 10
iteration_window = 4
growth_factor = 1.25
cutback_factor = 0.512
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = assembly_lhr_avg_function
timestep_limiting_postprocessor = creep_timestep_min
[]
[]
[Postprocessors]
###### POWER ######
[fission_rate_density_avg]
type = ElementAverageValue
block = 'pellet blanket'
variable = fission_rate
outputs = csv
[]
[fast_neutron_fluence_avg]
type = ElementAverageValue
variable = fast_neutron_fluence
outputs = 'csv chkfile'
[]
[fast_neutron_fluence_max]
type = ElementExtremeValue
variable = fast_neutron_fluence
value_type = max
outputs = 'csv chkfile'
[]
[pin_hr_tot]
type = ElementIntegralPower
block = 'pellet blanket'
variable = T # required but not actually used
use_material_fission_rate = true
fission_rate_material = fission_rate
outputs = csv
[]
[pin_lhr_avg]
type = FunctionValuePostprocessor
function = assembly_lhr_avg_function
outputs = csv
[]
###### HEAT TRANSFER ######
[radial_heat_flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = T
boundary = pellet_outer_radial_surface
diffusivity = thermal_conductivity
outputs = csv
[]
[radial_heat_flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = T
boundary = clad_outside_right
diffusivity = thermal_conductivity
outputs = csv
[]
###### FISSION GAS ###### (needed for simulation to run)
[fission_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = 'pellet blanket'
outputs = 'csv chkfile'
[]
[fission_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = 'pellet blanket'
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[fission_gas_released_pct]
type = FGRPercent
fission_gas_generated = fission_gas_produced
fission_gas_released = fission_gas_released
outputs = 'console csv chkfile'
[]
[clad_internal_volume]
type = InternalVolume
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[fuel_volume]
type = InternalVolume
boundary = 'bottom_of_bottom_pellet pellet_outer_radial_surface
top_of_top_pellet'
scale_factor = -1 # makes the fuel volume positive
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[sodium_volume]
type = FunctionValuePostprocessor
function = sodium_volume_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[gas_volume]
type = FunctionValuePostprocessor
function = gas_volume_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[plenum_compressibility]
type = FunctionValuePostprocessor
function = plenum_compressibility_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[compressibility_times_temperature]
type = FunctionValuePostprocessor
function = compressibility_times_temperature_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
###### BURNUP ######
[burnup_max]
type = ElementExtremeValue
block = pellet
variable = burnup
value_type = max
outputs = csv
[]
[burnup_max_pct]
type = LinearCombinationPostprocessor
pp_names = burnup_max
pp_coefs = 100
outputs = 'csv chkfile'
[]
[burnup_avg]
type = ElementAverageValue
block = pellet
variable = burnup
outputs = csv
[]
[burnup_avg_pct]
type = LinearCombinationPostprocessor
pp_names = burnup_avg
pp_coefs = 100
outputs = 'console csv chkfile'
[]
###### FUEL TEMPERATURE ######
[fuel_T_max]
type = ElementExtremeValue
block = pellet
variable = T
value_type = max
outputs = csv
[]
[fuel_T_max_peak]
type = TimeExtremeValue
postprocessor = fuel_T_max
value_type = max
outputs = 'csv chkfile'
[]
[fuel_T_surface_max]
type = NodalExtremeValue
boundary = pellet_outer_radial_surface
variable = T
value_type = max
outputs = csv
[]
[fuel_T_surface_max_peak]
type = TimeExtremeValue
postprocessor = fuel_T_surface_max
value_type = max
outputs = 'csv chkfile'
[]
###### CLADDING TEMPERATURE ######
[clad_T_max]
type = ElementExtremeValue
block = clad
variable = T
value_type = max
outputs = csv
[]
[clad_T_max_peak]
type = TimeExtremeValue
postprocessor = clad_T_max
value_type = max
outputs = csv
[]
[clad_T_inner_surface_max]
type = NodalExtremeValue
boundary = clad_inside_right
variable = T
value_type = max
outputs = csv
[]
[clad_T_inner_surface_max_peak]
type = TimeExtremeValue
postprocessor = clad_T_inner_surface_max
value_type = max
outputs = 'csv chkfile'
[]
[clad_T_outer_surface_max]
type = NodalExtremeValue
boundary = clad_outside_right
variable = T
value_type = max
outputs = csv
[]
[clad_T_outer_surface_max_peak]
type = TimeExtremeValue
postprocessor = clad_T_outer_surface_max
value_type = max
outputs = 'csv chkfile'
[]
###### COOLANT PARAMETERS ######
[T_coolant_in]
type = FunctionValuePostprocessor
function = coolant_T_in_function
outputs = csv
[]
[T_coolant_out]
type = ElementExtremeValue
block = clad
variable = T_coolant
value_type = max
outputs = csv
[]
[coolant_flux]
type = FunctionValuePostprocessor
function = coolant_flux_function
outputs = csv
[]
###### FUEL DEFORMATION ######
[fuel_axial_elongation_min]
type = NodalExtremeValue
block = pellet
variable = disp_y
value_type = min
outputs = csv
[]
[fuel_axial_elongation_max]
type = NodalExtremeValue
block = pellet
variable = disp_y
value_type = max
outputs = csv
[]
[fuel_axial_elongation_max_pct]
type = FunctionValuePostprocessor
function = fuel_axial_elongation_max_pct_function
outputs = 'console csv chkfile'
[]
[fuel_radial_dilation_max]
type = NodalExtremeValue
variable = disp_x
boundary = pellet_outer_radial_surface
value_type = max
outputs = csv
[]
[fuel_radial_dilation_max_pct]
type = FunctionValuePostprocessor
function = fuel_radial_dilation_max_pct_function
outputs = csv
[]
###### CLADDING DEFORMATION ######
[clad_axial_elongation_max]
type = NodalExtremeValue
block = clad
variable = disp_y
value_type = max
outputs = csv
[]
[clad_axial_elongation_max_pct]
type = FunctionValuePostprocessor
function = clad_axial_elongation_max_pct_function
outputs = 'csv chkfile'
[]
[clad_radial_dilation_max]
type = NodalExtremeValue
variable = disp_x
boundary = clad_outside_right
value_type = max
outputs = csv
[]
[clad_radial_dilation_max_pct]
type = FunctionValuePostprocessor
function = clad_radial_dilation_max_pct_function
outputs = 'console csv chkfile'
[]
###### GAP DEFORMATION AND MECHANICS ######
[gap_width_min]
type = NodalExtremeValue
variable = fuel_clad_gap_width
boundary = pellet_outer_radial_surface
value_type = min
outputs = csv
[]
[gap_width_max]
type = NodalExtremeValue
variable = fuel_clad_gap_width
boundary = pellet_outer_radial_surface
value_type = max
outputs = csv
[]
[gap_width_avg]
type = SideAverageValue
variable = fuel_clad_gap_width
boundary = pellet_outer_radial_surface
outputs = csv
[]
[contact_pressure_max]
type = NodalExtremeValue
variable = contact_pressure
boundary = pellet_outer_radial_surface
value_type = max
outputs = csv
[]
###### FUEL MECHANICS ######
[fuel_hydrostatic_stress_min]
type = ElementExtremeValue
block = 'pellet blanket'
variable = hydrostatic_stress
value_type = min
outputs = csv
[]
[fuel_hydrostatic_stress_max]
type = ElementExtremeValue
block = 'pellet blanket'
variable = hydrostatic_stress
value_type = max
outputs = csv
[]
[fuel_hydrostatic_stress_avg]
type = ElementAverageValue
block = 'pellet blanket'
variable = hydrostatic_stress
outputs = csv
[]
[fuel_volumetric_strain_avg]
type = ElementAverageValue
block = 'pellet blanket'
variable = fuel_volumetric_strain
outputs = 'csv chkfile'
[]
###### CLADDING MECHANICS ######
[clad_hoop_stress_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_stress
value_type = max
outputs = csv
[]
[clad_hoop_creep_strain_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_creep_strain
value_type = max
outputs = 'csv chkfile'
[]
[clad_hoop_elastic_strain_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_elastic_strain
value_type = max
outputs = 'csv chkfile'
[]
[clad_hoop_total_strain_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_total_strain
value_type = max
outputs = 'csv chkfile'
[]
[cdf_max]
type = ElementExtremeValue
variable = cdf_failure
value_type = max
outputs = 'console csv'
[]
###### PERFORMANCE ######
[creep_timestep_fuel]
type = MaterialTimeStepPostprocessor
block = pellet
outputs = csv
[]
[creep_timestep_blanket]
type = MaterialTimeStepPostprocessor
block = blanket
outputs = csv
[]
[creep_timestep_clad]
type = MaterialTimeStepPostprocessor
block = clad
outputs = csv
[]
[creep_timestep_min]
type = FunctionValuePostprocessor
function = creep_timestep_min_function
outputs = csv
[]
###### SWELLING ######
[solid_swelling_avg]
type = ElementAverageValue
block = pellet
variable = solid_swelling
outputs = 'csv chkfile'
[]
[gas_swelling_avg]
type = ElementAverageValue
block = pellet
variable = gas_swelling
outputs = 'csv chkfile'
[]
[porosity_avg]
type = ElementAverageValue
block = pellet
variable = porosity
outputs = 'csv chkfile'
[]
[sodium_logged_porosity_avg]
type = ElementAverageValue
block = pellet
variable = sodium_logged_porosity
outputs = 'csv chkfile'
[]
###### CLADDING WASTAGE ######
[wastage_max]
type = ElementExtremeValue
block = clad
variable = wastage_thickness
value_type = max
outputs = 'csv chkfile'
[]
[wastage_min]
type = ElementExtremeValue
block = clad
variable = wastage_thickness
value_type = min
outputs = csv
[]
[wastage_avg]
type = ElementAverageValue
block = clad
variable = wastage_thickness
outputs = csv
[]
[eutectic_max]
type = ElementExtremeValue
block = clad
variable = eutectic_thickness
value_type = max
outputs = csv
[]
[eutectic_min]
type = ElementExtremeValue
block = clad
variable = eutectic_thickness
value_type = min
outputs = csv
[]
[eutectic_avg]
type = ElementAverageValue
block = clad
variable = eutectic_thickness
outputs = csv
[]
[]
[VectorPostprocessors]
[fuel_centerline]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = centerline
sort_by = y
outputs = csv
[]
[fuel_surface]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = pellet_outer_radial_surface
sort_by = y
outputs = csv
[]
[clad_inner_surface]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = clad_inside_right
sort_by = y
outputs = csv
[]
[clad_outer_surface]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = clad_outside_right
sort_by = y
outputs = csv
[]
[]
[PerformanceMetricOutputs]
outputs = 'csv performance'
[]
[Outputs]
color = true
perf_graph = true
file_base = '${composition}'
[console]
type = Console
output_screen = true
[]
[exodus]
type = Exodus
execute_on = 'INITIAL TIMESTEP_END FINAL'
time_step_interval = 50
file_base = '${composition}_exodus'
[]
[csv]
type = CSV
execute_postprocessors_on = 'INITIAL TIMESTEP_END'
execute_vector_postprocessors_on = FINAL
file_base = '${composition}_csv'
[]
[chkfile]
type = CSV
execute_postprocessors_on = FINAL
file_base = '${composition}_chkfile'
[]
[performance]
type = CSV
hide = 'plenum_pressure plenum_temperature'
execute_postprocessors_on = FINAL
file_base = '${composition}_performance'
[]
[]
# REFERENCES
# [Bauer and Holland, 1995]
# T.H. Bauer, J.W. Holland "In-Pile Measurement of the Thermal Conductivity
# of Irradiated Metallic Fuel" Nuclear Technology Vol 110 Issue 3, 407-421,
# (1995)
# [Cabell, 1980]
# C.P. Cabell "A Summary Description of the Fast Flux Test Facility"
# Westinghouse Hanford Company HEDL-400, Hanford, Washington (1980)
# [Casagranda et al., 2020]
# A. Casagranda, S. Novascone, L. Aagesen, W. Jiang, J.H. Ke, D. Stafford,
# C. Matthews, A. Toptan, K. Gamble, J. Hales, "Summary of BISON Milestones:
# NEAMS FY-20 Report" Idaho National Laboratory INL/EXT-20-60002-Rev000,
# 1768565, Idaho Falls, Idaho (2020)
# [Dodds, 1986-1]
# N.E. Dodds, "Test design description. Volumne 1B. IFR-1 metal fuel
# irradiation (AK-181)" Argonne National Laboratory ANL-iFR-43, Argonne,
# Illinois, (1986)
# [Dodds, 1986-2]
# N.E. Dodds, "Test design description Volume 2, Part 1. IFR-1 metal fuel
# irradiation test (AK-181) element as-built data" Argonne National
# Laboratory ANL-IFR-44, Argonne, Illinois (1986)
# [Fink and Leibowitz, 1995]
# J. K. Fink and L. Leibowitz, "Thermodynamic and transport properties of
# sodium liquid and vapor", Argonne National Laboratory ANL/RE--95/2, 94649,
# Argonne, Illinois (1995)
# [Greenquist et al., 2021]
# I. Greenquist, K.M. Cunningham, J. Hu, J.J. Powers, D.C. Crawford,
# "Development of a U-19Pu-10Zr fuel performance benchmark case based on the
# IFR-1 experiment" Journal of Nuclear Materials Vol. 553, 152997 (2021)
# [Hirschhorn and Powers, 2021]
# J. Hirschhorn, J. Powers "Assessment of the BISON Metallic Fuel
# Performance Models", Oak Ridge National Laboratory ORNLTM-2020/1824,
# 1763469, Oak Ridge, Tennessee (2021)
# [Hobbs and Charboneau, 2020]
# I.M. Hobbs, J.A. Charboneau "Compressibility of gas mixtures pertaining to
# nuclear fuel rods" Journal of Physics Comminications Vol. 4, Iss. 9,
# 095008 (2020)
# [Hofman et al., 1989]
# G. L. Hofman, M. C. Billone, J. F. Koenig, J. M. Kramer, J. D. B. Lambert,
# L. Leibowitz, Y. Orechwa, D. R. Pedersen, D. L. Porter, H. Tsai, A. E.
# Wright, "Metallic Fuels Handbook", Argonne National Laboratory ANL-NSE-3,
# Argonne, Illinois (1989)
# [Janney, 2018]
# Dawn E. Janney, "Metallic Fuels Handbook, Part 1: Alloys Based on U-Zr,
# Pu-Zr, U-Pu, or U-Pu-Zr, Including Those with Minor Actinides (Np, Am,
# Cm), Rare-earth Elements (La, Ce, Pr, Nd, Gd), and Y", Idaho National
# Laboratory INL/EXT-15-36520, Idaho Falls, Idaho (2018)
# [Pahl et al., 1990]
# R.G. Pahl, D.L. Porter, C.E. Lahm, G.L. Hofman "Experimental studies of
# U-Pu-Zr fast reactor fuel pins in the Experimental Breeder Reactor-II"
# Metallurgic Transactions A Vol 21A, 1863-1870, (1990)
# [Porter and Tsai, 2011]
# D. L. Porter and H. Tsai, "Full-Length Metallic Fast Reactor Fuel Pin Test
# in FFTF (IFR-1)"", Idaho National Laboratory INL/LTD-11-21062, Idaho
# Falls, Idaho (2011)
# [Shultis and Faw, 2008]
# J.K. Shultis, R.E. Faw "Fundamentals of Nuclear Science and Engineering
# Second Edition" CRC Press, Boca Raton, Florida (2008)
# [Tsai et al., 1986]
# H. Tsai, L.A. Neimark, M.C. Billone, R.M. Fryer, J.F. Koenig, W.K. Lehto,
# D.J. Malloy, "Test Design Description (TDD). Volume 1A. Design description
# and safety analysis for IFR-1 metal fuels irradiation test in FFTF"
# Argonne National Laboratory ANL-IFR-33, Argonne, Illinois (1986)
(assessment/metallic_fuel/EBRII/X430/analysis/template.i)
# TEMPLATE FILE
# This is not an input file. It is a template used to populate the input files.
# Changes made to this file will be applied to all 25 X430 input files.
# Values used for individual pins are stored in pin_inputs.csv. Input files are
# generated using the Python script generate_input_files.py.
# X430 ASSESSMENT CASE
# BISON recreation of the 52-pin X430 experiment series, which was irradiated in
# EBR-II from 1987-88 to a peak burnup of about 10 at%. The subassembly
# contained 37 pins and was irradiated in three experiments: X430, X430A, and
# X430B. After each experiment, pins were removed, examined, replaced as
# necessary, and the subassembly was reconstructed. BISON simulations were
# developed for 25 of the pins, of which 2 are
# assessments. Legacy calculations and PIE measurements are available for all 25
# pins. Units are in standard SI: J, K, kg, m, Pa, s.
# For a more complete description of the experiments, see [Hayes et al., 1994].
# For a more complete description of the development and results of this
# assessment, see [Greenquist and Powers, 2021].
# This file simulates pin %{pin} with a composition of %{composition}.
[GlobalParams]
dim = 2
order = SECOND
family = LAGRANGE
elem_type = QUAD8
energy_per_fission = 3.2e-11 # [Shultis and Faw, 2008]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
temperature = T
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = ref
extra_tag_vectors = ref
[]
[Mesh]
coord_type = RZ
# Mesh includes a fuel slug and cladding. All dimensions are in meters. See
# [Hayes et al., 1994] and [Greenquist and Powers, 2021] for more complete
# descriptions.
type = MeshGeneratorMesh
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
# build cladding
[bottom_plug]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.0032786
nx = 5
ymin = 0.0
ymax = 0.015
ny = 4
[]
[bottom_corner]
type = GeneratedMeshGenerator
xmin = 0.0032786
xmax = 0.003685
nx = 8
ymin = 0.0
ymax = 0.015
ny = 4
[]
[bottom_corner_rename_side]
type = SideSetsFromNormalsGenerator
input = bottom_corner
normals = '0 1 0'
new_boundary = new_side
[]
[combine_bottom_and_bottom_corner]
type = StitchedMeshGenerator
inputs = 'bottom_plug bottom_corner_rename_side'
stitch_boundaries_pairs = 'right left'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[cladding_wall]
type = GeneratedMeshGenerator
xmin = 0.0032786
xmax = 0.003685
nx = 8
ymin = 0.015
ymax = 0.72565
ny = 120
[]
[cladding_wall_rename_side]
type = SideSetsFromNormalsGenerator
input = cladding_wall
normals = '0 1 0'
new_boundary = new_side
[]
[combine_bottom_and_wall]
type = StitchedMeshGenerator
inputs = 'combine_bottom_and_bottom_corner cladding_wall_rename_side'
stitch_boundaries_pairs = '4 bottom'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[top_corner]
type = GeneratedMeshGenerator
xmin = 0.0032786
xmax = 0.003685
nx = 8
ymin = 0.72565
ymax = 0.74065
ny = 4
[]
[top_corner_rename_side]
type = SideSetsFromNormalsGenerator
input = top_corner
normals = '-1 0 0'
new_boundary = new_side
[]
[combine_wall_and_top_corner]
type = StitchedMeshGenerator
inputs = 'combine_bottom_and_wall top_corner_rename_side'
stitch_boundaries_pairs = '4 bottom'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[top_plug]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.0032786
nx = 5
ymin = 0.72565
ymax = 0.74065
ny = 4
[]
[cladding_all]
type = StitchedMeshGenerator
inputs = 'combine_wall_and_top_corner top_plug'
stitch_boundaries_pairs = '4 right'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
# build fuel
[fuel_slug]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = %{fuel_r}
nx = 5
ymin = 0.019
ymax = %{fuel_top}
ny = 250
[]
# combine and name subdomains
[combine_fuel_cladding]
type = CombinerGenerator
inputs = 'cladding_all fuel_slug'
[]
[name_cladding]
type = SubdomainBoundingBoxGenerator
input = combine_fuel_cladding
bottom_left = '0.0 0.0 0.0'
top_right = '0.003685 0.74065 0.0'
location = INSIDE
block_id = 0
block_name = clad
[]
[name_fuel]
type = SubdomainBoundingBoxGenerator
input = name_cladding
bottom_left = '0.0 0.019 0.0'
top_right = '%{fuel_r} %{fuel_top} 0.0'
location = INSIDE
block_id = 1
block_name = pellet
[]
# name boundaries
[name_centerline]
type = SideSetsFromNormalsGenerator
input = name_fuel
normals = '-1 0 0'
new_boundary = centerline
replace = true
[]
[name_slug_outer_surface]
type = SideSetsFromNormalsGenerator
input = name_centerline
normals = '1 0 0'
new_boundary = pellet_outer_radial_surface
replace = true
[]
[name_slug_ends]
type = SideSetsFromPointsGenerator
input = name_slug_outer_surface
points = '0.50e-3 0.019 0.0
0.50e-3 %{fuel_top} 0.0'
new_boundary = 'bottom_of_bottom_pellet top_of_top_pellet'
replace = true
[]
[name_cladding_inside]
type = SideSetsFromPointsGenerator
input = name_slug_ends
points = '0.50e-3 0.015 0.0
0.0032786 0.36 0.0
0.50e-3 0.72565 0.0'
new_boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
replace = true
[]
[name_cladding_outer_surface]
type = SideSetsFromPointsGenerator
input = name_cladding_inside
points = '0.003685 0.36 0.0
0.50e-3 0.0 0.0
0.50e-3 0.74065 0.0'
new_boundary = 'clad_outside_right clad_outside_bottom clad_outside_top'
replace = true
[]
[]
[Variables]
[T]
initial_condition = 298
[]
[]
[AuxVariables]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[fuel_clad_gap_width]
order = FIRST
family = LAGRANGE
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[fuel_volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_stress]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_elastic_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_total_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[local_power]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[T_coolant]
order = CONSTANT
family = MONOMIAL
[]
[pin_lhr]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[eutectic_thickness]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[assembly_lhr_avg_function]
# Subassembly average LHR as a function of time. x: time (s), y: average
# LHGR (W/m). See [Greenquist and Powers, 2021].
type = PiecewiseLinear
x = ' 0 3600 8203212 8206812 13814423 13818023 14428975 14432575
21312419 21316019 25596874 25600474 26261755 26265355 32714598 32718198
32721798 32725398 32728998 32896765 32900365 39574695 39578295 42194062
42197662 43820808 43824408 43895709 43899309 44401212 44404812 47385472
47389072 48198548 48202148 48205748 48209348 48212948 52079977 52083577
53874489 53878089 62125235 62128835 62256058 62259658 62620357 62623957
64516928 64520528 64766586 64770186 67535546 67539146 72155534 72159134
72185697 72189297 76833647 76837247 77340548 77344148 77738400 77742000
80444447 80448047 80451647 80455247'
y = ' 0.0 44225.3 44225.3 43106.1 43106.1 41403.6 41403.6 41119.9
41119.9 38881.4 38881.4 38353.3 38353.3 39472.5 39472.5 0.0
0.0 0.0 33490.2 33490.2 36863.6 36863.6 37123.7 37123.7
32717.8 32717.8 38534.6 38534.6 38432.1 38432.1 36784.8 36784.8
36036.0 36036.0 0.0 0.0 0.0 35153.3 35153.3 35153.3
35153.3 35271.5 35271.5 33663.6 33663.6 34459.7 34459.7 34640.9
34640.9 34428.1 34428.1 34026.2 34026.2 33624.2 33624.2 33624.2
33624.2 33718.8 33718.8 34057.7 34057.7 34057.7 34057.7 34215.3
34215.3 0.0 0.0 0.0'
[]
[radial_peaking_factor_function]
# Adjusts the pin's average LHR based on its location in the subassembly.
# x: time [s], y: relative LHR change. See [Greenquist and Powers, 2021].
type = PiecewiseLinear
x = ' 0 32718198
32725398 48202148
48209348 80455247'
y = '%{rad_LHR_X430} %{rad_LHR_X430}
%{rad_LHR_X430a} %{rad_LHR_X430a}
%{rad_LHR_X430b} %{rad_LHR_X430b}'
[]
[lhr_peaking_factor_function]
# Axial variation from the average LHR. x: axial position (m), y: time (s),
# z: peaking factor. See [Hayes et al., 1994] and
# [Greenquist and Powers, 2021].
#
type = PiecewiseBilinear
xaxis = 1
yaxis = 0
y = '0 32725398 48209348 80455247'
x = '0.018 0.019 %{z01} %{z02} %{z03} %{z04}
%{z05} %{z06} %{z07} %{z08} %{z09}
%{fuel_top} %{z11}'
z = '0.0000 %{pX430_00} %{pX430_01} %{pX430_02} %{pX430_03} %{pX430_04}
%{pX430_05} %{pX430_06} %{pX430_07} %{pX430_08} %{pX430_09}
%{pX430_10} 0.0000
0.0000 %{pX430a_00} %{pX430a_01} %{pX430a_02} %{pX430a_03} %{pX430a_04}
%{pX430a_05} %{pX430a_06} %{pX430a_07} %{pX430a_08} %{pX430a_09}
%{pX430a_10} 0.0000
0.0000 %{pX430b_00} %{pX430b_01} %{pX430b_02} %{pX430b_03} %{pX430b_04}
%{pX430b_05} %{pX430b_06} %{pX430b_07} %{pX430b_08} %{pX430b_09}
%{pX430b_10} 0.0000
0.0000 %{pEOL_00} %{pEOL_01} %{pEOL_02} %{pEOL_03} %{pEOL_04}
%{pEOL_05} %{pEOL_06} %{pEOL_07} %{pEOL_08} %{pEOL_09}
%{pEOL_10} 0.0000'
[]
[coolant_flux_function]
# Subassembly coolant mass flux. x: time (s), y: flux (kg m^-2 s^-1). See
# [Hayes et al., 1994] and [Greenquist and Powers, 2021].
type = PiecewiseLinear
x = ' 0 3600 8203212 8206812 13814423 13818023 14428975 14432575
21312419 21316019 25596874 25600474 26261755 26265355 32714598 32718198
32721798 32725398 32728998 32896765 32900365 39574695 39578295 42194062
42197662 43820808 43824408 43895709 43899309 44401212 44404812 47385472
47389072 48198548 48202148 48205748 48209348 48212948 52079977 52083577
53874489 53878089 62125235 62128835 62256058 62259658 62620357 62623957
64516928 64520528 64766586 64770186 67535546 67539146 72155534 72159134
72185697 72189297 76833647 76837247 77340548 77344148 77738400 77742000
80444447 80448047 80451647 80455247'
y = ' 2699.1 2699.1 2699.1 2724.0 2724.0 2697.2 2697.2 2781.0
2781.0 2721.1 2721.1 2696.9 2696.9 2785.4 2785.4 2785.4
2785.4 2785.4 2793.7 2793.7 2803.5 2803.5 2814.2 2814.2
2799.6 2799.6 2840.1 2840.1 2839.6 2839.6 2873.7 2873.7
2855.7 2855.7 2855.7 2855.7 2855.7 2826.4 2826.4 2826.4
2826.4 2788.4 2788.4 2780.6 2780.6 2771.8 2771.8 2781.5
2781.5 2817.1 2817.1 2807.4 2807.4 2777.1 2777.1 2777.1
2777.1 2746.4 2746.4 2765.9 2765.9 2765.9 2765.9 2777.1
2777.1 2777.1 2777.1 2777.1'
[]
[pin_lhr_avg_function]
type = CompositeFunction
functions = 'assembly_lhr_avg_function radial_peaking_factor_function'
[]
[pin_lhr_function]
type = CompositeFunction
functions = 'pin_lhr_avg_function lhr_peaking_factor_function'
[]
[coolant_pressure_function]
type = ConstantFunction
value = 347702.6 # [Snyder, 1988]
[]
[T_coolant_in_function]
# Sodium coolant inlet temperature. x: time (s), y: temperature (K). See
# [Hayes et al., 1994].
type = PiecewiseLinear
x = ' 0 3600 32718198 32721798 32725398 32728998 48202148 48205748
48209348 48212948 80448047 80451647 80455247'
y = ' 298.00 644.15 644.15 305.00 305.00 644.15 644.15 305.00
305.00 644.15 644.15 305.00 305.00'
[]
[sodium_volume_function]
# the initial sodium height is assumed to be equal to the initial fuel
# height and sodium infiltration is ignored.
type = ParsedFunction
symbol_names = 'pellet_outer_radius cladding_gap_width pellet_height'
symbol_values = '%{fuel_r} %{gap_width} %{fuel_h}'
expression = 'pi * ((pellet_outer_radius + cladding_gap_width)^2 -
pellet_outer_radius^2) * pellet_height'
[]
[gas_volume_function]
type = ParsedFunction
symbol_names = 'clad_internal_volume fuel_volume sodium_volume'
symbol_values = 'clad_internal_volume fuel_volume sodium_volume'
expression = 'abs(clad_internal_volume) - abs(fuel_volume) - abs(sodium_volume)'
[]
[sodium_conductivity_function]
# Thermal conductivity (W m^-1 K^-1) of the pin gap sodium according to
# [Fink and Leibowitz, 1995]. t: temperature (K).
type = ParsedFunction
symbol_names = 'A B C D'
symbol_values = '124.67 -0.11381 5.5226e-5 -1.1842e-8'
expression = 'A + B * t + C * t^2 + D * t^3'
[]
[creep_timestep_min_function]
type = ParsedFunction
symbol_names = 'creep_timestep_fuel creep_timestep_clad'
symbol_values = 'creep_timestep_fuel creep_timestep_clad'
expression = 'min(creep_timestep_fuel, creep_timestep_clad)'
[]
[fuel_axial_elongation_max_pct_function]
type = ParsedFunction
symbol_names = 'fuel_axial_elongation_min fuel_axial_elongation_max pellet_height'
symbol_values = 'fuel_axial_elongation_min fuel_axial_elongation_max %{fuel_h}'
expression = '(fuel_axial_elongation_max - fuel_axial_elongation_min) /
pellet_height * 100'
[]
[fuel_radial_dilation_max_pct_function]
type = ParsedFunction
symbol_names = 'fuel_radial_dilation_max pellet_outer_radius'
symbol_values = 'fuel_radial_dilation_max %{fuel_r}'
expression = 'fuel_radial_dilation_max / pellet_outer_radius * 100'
[]
[clad_axial_elongation_max_pct_function]
type = ParsedFunction
symbol_names = 'clad_axial_elongation_max plug_height cladding_total_height'
symbol_values = 'clad_axial_elongation_max 0.015 0.74065'
expression = 'clad_axial_elongation_max /
(plug_height + cladding_total_height) * 100'
[]
[clad_radial_dilation_max_pct_function]
type = ParsedFunction
symbol_names = 'clad_radial_dilation_max cladding_outer_radius'
symbol_values = 'clad_radial_dilation_max 0.003685'
expression = 'clad_radial_dilation_max / cladding_outer_radius * 100'
[]
[plenum_compressibility_function]
# Accounts for nonideality in fission gas [Hobbs and Charboneau, 2020]
type = ParsedFunction
symbol_names = 'plenum_pressure A B C'
symbol_values = 'plenum_pressure 1.002 -3.4e-8 -1.9e-15'
expression = 'A + B * plenum_pressure + C * plenum_pressure^2'
[]
[compressibility_times_temperature_function]
type = ParsedFunction
symbol_names = 'plenum_temperature plenum_compressibility'
symbol_values = 'plenum_temperature plenum_compressibility'
expression = 'plenum_temperature * plenum_compressibility'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy
creep_strain_zz elastic_strain_xx elastic_strain_yy
elastic_strain_zz strain_xx strain_yy strain_zz'
[fuel_mechanics]
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_gaseous_strain
fuel_solid_strain'
extra_vector_tags = ref
[]
[clad_mechanics]
block = clad
eigenstrain_names = 'clad_thermal_strain clad_gaseous_strain'
extra_vector_tags = ref
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = ref
[]
[heat_conduction_time_derivative]
type = HeatConductionTimeDerivative
variable = T
extra_vector_tags = ref
[]
[heat_conduction]
type = HeatConduction
variable = T
extra_vector_tags = ref
[]
[heat_source]
type = FissionRateHeatSource
block = pellet
variable = T
fission_rate = fission_rate
extra_vector_tags = ref
[]
[]
[AuxKernels]
[gap_conductance]
type = MaterialRealAux
variable = gap_conductance
property = gap_conductance
boundary = pellet_outer_radial_surface
[]
[fuel_clad_gap_width]
type = ParsedAux
variable = fuel_clad_gap_width
coupled_variables = penetration
expression = '-penetration'
[]
[failed_element]
type = MaterialRealAux
variable = element_failed
property = failed
boundary = clad_outside_right
[]
[fuel_volumetric_strain]
type = RankTwoScalarAux
block = pellet
variable = fuel_volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[clad_hoop_stress]
type = RankTwoAux
block = clad
variable = clad_hoop_stress
rank_two_tensor = stress
index_i = 2
index_j = 2
[]
[clad_hoop_creep_strain]
type = RankTwoAux
block = clad
variable = clad_hoop_creep_strain
rank_two_tensor = creep_strain
index_i = 2
index_j = 2
[]
[clad_hoop_elastic_strain]
type = RankTwoAux
block = clad
variable = clad_hoop_elastic_strain
rank_two_tensor = elastic_strain
index_i = 2
index_j = 2
[]
[clad_hoop_total_strain]
type = RankTwoAux
block = clad
variable = clad_hoop_total_strain
rank_two_tensor = total_strain
index_i = 2
index_j = 2
[]
[local_power]
type = FunctionAux
block = pellet
variable = local_power
function = lhr_peaking_factor_function
[]
[T_coolant]
type = MaterialRealAux
variable = T_coolant
property = coolant_temperature
boundary = clad_outside_right
[]
[pin_lhr]
type = FunctionAux
block = pellet
variable = pin_lhr
function = pin_lhr_function
[]
[eutectic_thickness]
type = DiffusionalEutecticThicknessFCCI
block = clad
variable = eutectic_thickness
temperature = T
boundary = clad_inside_right
execute_on = TIMESTEP_END
[]
[]
[Contact]
[frictionless_fuel_clad_mechanical]
primary = clad_inside_right
secondary = pellet_outer_radial_surface
model = frictionless
formulation = kinematic
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = T
primary = clad_inside_right
secondary = pellet_outer_radial_surface
gap_geometry_type = CYLINDER
gap_conductivity_function = sodium_conductivity_function
gap_conductivity_function_variable = T
quadrature = true
min_gap = %{gap_width} # Initial gap thickness according to dimensions.
tangential_tolerance = 1e-4
[]
[]
[BCs]
[fix_disp_x_all]
type = DirichletBC
variable = disp_x
value = 0.0
boundary = centerline
[]
[fix_disp_y_all]
type = DirichletBC
variable = disp_y
value = 0.0
boundary = 'clad_outside_bottom bottom_of_bottom_pellet'
[]
[Pressure]
[coolant_pressure]
function = coolant_pressure_function
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
[]
[]
[PlenumPressure]
[plenum_pressure]
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
startup_time = 0
initial_pressure = 84000 # [Hayes et al., 1994]
volume = gas_volume
material_input = fission_gas_released
R = 8.3143
temperature = plenum_temperature
output = plenum_pressure
[]
[]
[]
[PlenumTemperature]
[plenum_temperature]
temperature = T
boundary = 'bottom_of_bottom_pellet pellet_outer_radial_surface
top_of_top_pellet clad_inside_bottom clad_inside_right
clad_inside_top'
inner_surfaces = 'bottom_of_bottom_pellet pellet_outer_radial_surface
top_of_top_pellet'
outer_surfaces = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[CoolantChannel]
[convective_clad_surface]
variable = T
inlet_temperature = T_coolant_in_function
inlet_pressure = coolant_pressure_function
inlet_massflux = coolant_flux_function
coolant_material = sodium
rod_diameter = 0.00737 # [Hayes et al., 1994]
rod_pitch = %{pin_pitch}
linear_heat_rate = pin_lhr_avg_function
axial_power_profile = lhr_peaking_factor_function
subchannel_geometry = triangular
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
[]
[]
[Materials]
###### FUEL ######
[fuel_fission_rate]
type = UPuZrFissionRate
block = pellet
rod_linear_power = pin_lhr_avg_function
axial_power_profile = lhr_peaking_factor_function
pellet_radius = %{fuel_r}
initial_X_Zr = %{x_Zr}
X_Zr = %{x_Zr}
outputs = exodus
output_properties = fission_rate
[]
[fuel_burnup]
type = UPuZrBurnup
block = pellet
density = %{fuel_density}
initial_X_Pu = %{x_Pu}
initial_X_Zr = %{x_Zr}
outputs = exodus
output_properties = burnup
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = %{fuel_density}
[]
[fuel_sodium_logging]
type = UPuZrSodiumLogging
block = pellet
porosity = porosity
sodium_infiltration_fraction = %{na_infiltration}
outputs = exodus
output_properties = sodium_logged_porosity
[]
[fuel_thermal_properties]
type = UPuZrThermal
block = pellet
X_Pu = %{x_Pu}
X_Zr = %{x_Zr}
spheat_model = savage
thcond_model = lanl
porosity_model = logged
porosity = porosity
sodium_logged_porosity = sodium_logged_porosity
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = pellet
X_Pu = %{x_Pu}
X_Zr = %{x_Zr}
porosity = porosity
[]
[fuel_creep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 3e-3
effective_inelastic_strain_name = fuel_effective_creep_strain
[]
[fuel_gaseous_swelling]
type = UPuZrGaseousEigenstrain
block = pellet
fission_rate = fission_rate
anisotropic_factor = 0.5
bubble_number_density = 5e17
interconnection_initiating_porosity = %{fgr_initiating_porosity}
interconnection_terminating_porosity = %{fgr_terminating_porosity}
eigenstrain_name = fuel_gaseous_strain
outputs = exodus
output_properties = 'gas_swelling porosity interconnectivity'
[]
[fuel_solid_swelling]
type = BurnupDependentEigenstrain
block = pellet
eigenstrain_name = fuel_solid_strain
swelling_name = solid_swelling
swelling_factor = 0 # Solid swelling is negligible below 10% burnup
outputs = exodus
output_properties = solid_swelling
[]
[fuel_fission_gas_release]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
porosity = porosity
critical_porosity = %{critical_porosity}
fractional_fgr_initial = %{fgr_initial}
fractional_fgr_post = %{fgr_post}
[]
[fuel_thermal_expansion]
type = UPuZrThermalExpansionEigenstrain
block = pellet
stress_free_temperature = 298
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
block = pellet
inelastic_models = fuel_creep
[]
###### CLADDING ######
[fast_neutron_flux]
type = UPuZrFastNeutronFlux
pellet_radius = %{fuel_r}
axial_power_profile = lhr_peaking_factor_function
rod_linear_power = pin_lhr_avg_function
initial_density = %{fuel_density}
initial_X_Pu = %{x_Pu}
initial_X_Zr = %{x_Zr}
enrichment_U235 = %{enrichment_U}
enrichment_Pu240 = %{enrichment_Pu}
calculate_fluence = true
outputs = exodus
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7771
[]
[clad_thermal_properties]
type = HT9Thermal
block = clad
[]
[clad_gaseous_swelling]
type = HT9VolumetricSwellingEigenstrain
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_gaseous_strain
[]
[clad_thermal_expansion]
type = HT9ThermalExpansionEigenstrain
block = clad
eigenstrain_name = clad_thermal_strain
stress_free_temperature = 298
[]
[clad_elasticity_tensor]
type = HT9ElasticityTensor
block = clad
[]
[clad_creep]
type = HT9CreepUpdate
block = clad
first_thermal_scalar = 1
second_thermal_scalar = 1
irradiation_scalar = 1
max_inelastic_increment = 3e-3 # 1e-2
effective_inelastic_strain_name = clad_effective_creep_strain
[]
[clad_failure]
type = HT9FailureClad
method = cdf_long
hoop_stress = stress_zz
boundary = clad_outside_right
outputs = exodus
output_properties = cdf_failure
[]
[inner_clad_wastage]
type = MetallicFuelWastage
block = clad
method = flux_ht9
burnup = 0 # not used but must be specified
outputs = exodus
output_properties = wastage_thickness
[]
[outer_clad_wastage]
type = MetallicFuelCoolantWastage
block = clad
clad_material = HT9
use_effective_method = true
outputs = exodus
[]
[clad_wastage_fraction]
type = MetallicFuelWastageDamage
block = clad
wastage_thickness = wastage_thickness
pellet_length = %{fuel_h}
pellet_y_start = 0.019
cladding_thickness = 0.0004064
outputs = exodus
[]
[clad_damage_fraction]
type = ScalarMaterialDamage
block = clad
damage_index = thinning_fraction
outputs = exodus
[]
[clad_elastic_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = clad_creep
[]
[]
[Dampers]
[T_damper]
type = MaxIncrement
variable = T
max_increment = 25
[]
[disp_x_damper]
type = MaxIncrement
variable = disp_x
max_increment = 3.00E-04
[]
[disp_y_damper]
type = MaxIncrement
variable = disp_y
max_increment = 3.00E-04
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
automatic_scaling = true
compute_scaling_once = false
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package
-ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist
51'
line_search = NONE
l_max_its = 30
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 5e-7
start_time = %{t_start}
end_time = %{t_end}
dtmin = 1e-2
dtmax = 1e6
verbose = true
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 10
iteration_window = 4
growth_factor = 1.25
cutback_factor = 0.512
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = assembly_lhr_avg_function
timestep_limiting_postprocessor = creep_timestep_min
[]
[]
[Postprocessors]
###### POWER ######
[fission_rate_density_avg]
type = ElementAverageValue
block = pellet
variable = fission_rate
outputs = csv
[]
[fast_neutron_fluence_avg]
type = ElementAverageValue
variable = fast_neutron_fluence
outputs = 'csv chkfile'
[]
[fast_neutron_fluence_max]
type = ElementExtremeValue
variable = fast_neutron_fluence
value_type = max
outputs = 'csv chkfile'
[]
[pin_hr_tot]
type = ElementIntegralPower
block = pellet
variable = T # required but not actually used
use_material_fission_rate = true
fission_rate_material = fission_rate
outputs = csv
[]
[pin_lhr_avg]
type = FunctionValuePostprocessor
function = pin_lhr_avg_function
outputs = csv
[]
###### HEAT TRANSFER ######
[radial_heat_flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = T
boundary = pellet_outer_radial_surface
diffusivity = thermal_conductivity
outputs = csv
[]
[radial_heat_flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = T
boundary = clad_outside_right
diffusivity = thermal_conductivity
outputs = csv
[]
###### FISSION GAS ###### (needed for simulation to run)
[fission_gas_produced]
type = ElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_prod
outputs = 'csv chkfile'
[]
[fission_gas_released]
type = ElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_rel
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[fission_gas_released_pct]
type = FGRPercent
fission_gas_generated = fission_gas_produced
fission_gas_released = fission_gas_released
outputs = 'console csv chkfile'
[]
[clad_internal_volume]
type = InternalVolume
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[fuel_volume]
type = InternalVolume
boundary = 'bottom_of_bottom_pellet pellet_outer_radial_surface
top_of_top_pellet'
scale_factor = -1 # makes the fuel volume positive
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[sodium_volume]
type = FunctionValuePostprocessor
function = sodium_volume_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[gas_volume]
type = FunctionValuePostprocessor
function = gas_volume_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[plenum_compressibility]
type = FunctionValuePostprocessor
function = plenum_compressibility_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[compressibility_times_temperature]
type = FunctionValuePostprocessor
function = compressibility_times_temperature_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
###### BURNUP ######
[burnup_max]
type = ElementExtremeValue
block = pellet
variable = burnup
value_type = max
outputs = csv
[]
[burnup_max_pct]
type = LinearCombinationPostprocessor
pp_names = burnup_max
pp_coefs = 100
outputs = 'csv chkfile'
[]
[burnup_avg]
type = ElementAverageValue
block = pellet
variable = burnup
outputs = csv
[]
[burnup_avg_pct]
type = LinearCombinationPostprocessor
pp_names = burnup_avg
pp_coefs = 100
outputs = 'console csv chkfile'
[]
###### FUEL TEMPERATURE ######
[fuel_T_max]
type = ElementExtremeValue
block = pellet
variable = T
value_type = max
outputs = csv
[]
[fuel_T_max_peak]
type = TimeExtremeValue
postprocessor = fuel_T_max
value_type = max
outputs = 'csv chkfile'
[]
[fuel_T_surface_max]
type = NodalExtremeValue
boundary = pellet_outer_radial_surface
variable = T
value_type = max
outputs = csv
[]
[fuel_T_surface_max_peak]
type = TimeExtremeValue
postprocessor = fuel_T_surface_max
value_type = max
outputs = 'csv chkfile'
[]
###### CLADDING TEMPERATURE ######
[clad_T_max]
type = ElementExtremeValue
block = clad
variable = T
value_type = max
outputs = csv
[]
[clad_T_max_peak]
type = TimeExtremeValue
postprocessor = clad_T_max
value_type = max
outputs = csv
[]
[clad_T_inner_surface_max]
type = NodalExtremeValue
boundary = clad_inside_right
variable = T
value_type = max
outputs = csv
[]
[clad_T_inner_surface_max_peak]
type = TimeExtremeValue
postprocessor = clad_T_inner_surface_max
value_type = max
outputs = 'csv chkfile'
[]
[clad_T_outer_surface_max]
type = NodalExtremeValue
boundary = clad_outside_right
variable = T
value_type = max
outputs = csv
[]
[clad_T_outer_surface_max_peak]
type = TimeExtremeValue
postprocessor = clad_T_outer_surface_max
value_type = max
outputs = 'csv chkfile'
[]
###### COOLANT PARAMETERS ######
[T_coolant_in]
type = FunctionValuePostprocessor
function = T_coolant_in_function
outputs = csv
[]
[T_coolant_out]
type = ElementExtremeValue
block = clad
variable = T_coolant
value_type = max
outputs = csv
[]
[coolant_flux]
type = FunctionValuePostprocessor
function = coolant_flux_function
outputs = csv
[]
###### FUEL DEFORMATION ######
[fuel_axial_elongation_min]
type = NodalExtremeValue
block = pellet
variable = disp_y
value_type = min
outputs = csv
[]
[fuel_axial_elongation_max]
type = NodalExtremeValue
block = pellet
variable = disp_y
value_type = max
outputs = csv
[]
[fuel_axial_elongation_max_pct]
type = FunctionValuePostprocessor
function = fuel_axial_elongation_max_pct_function
outputs = 'console csv chkfile'
[]
[fuel_radial_dilation_max]
type = NodalExtremeValue
variable = disp_x
boundary = pellet_outer_radial_surface
value_type = max
outputs = csv
[]
[fuel_radial_dilation_max_pct]
type = FunctionValuePostprocessor
function = fuel_radial_dilation_max_pct_function
outputs = csv
[]
###### CLADDING DEFORMATION ######
[clad_axial_elongation_max]
type = NodalExtremeValue
block = clad
variable = disp_y
value_type = max
outputs = csv
[]
[clad_axial_elongation_max_pct]
type = FunctionValuePostprocessor
function = clad_axial_elongation_max_pct_function
outputs = 'csv chkfile'
[]
[clad_radial_dilation_max]
type = NodalExtremeValue
variable = disp_x
boundary = clad_outside_right
value_type = max
outputs = csv
[]
[clad_radial_dilation_max_pct]
type = FunctionValuePostprocessor
function = clad_radial_dilation_max_pct_function
outputs = 'console csv chkfile'
[]
###### GAP DEFORMATION AND MECHANICS ######
[gap_width_min]
type = NodalExtremeValue
variable = fuel_clad_gap_width
boundary = pellet_outer_radial_surface
value_type = min
outputs = csv
[]
[gap_width_max]
type = NodalExtremeValue
variable = fuel_clad_gap_width
boundary = pellet_outer_radial_surface
value_type = max
outputs = csv
[]
[gap_width_avg]
type = SideAverageValue
variable = fuel_clad_gap_width
boundary = pellet_outer_radial_surface
outputs = csv
[]
[contact_pressure_max]
type = NodalExtremeValue
variable = contact_pressure
boundary = pellet_outer_radial_surface
value_type = max
outputs = csv
[]
###### FUEL MECHANICS ######
[fuel_hydrostatic_stress_min]
type = ElementExtremeValue
block = pellet
variable = hydrostatic_stress
value_type = min
outputs = csv
[]
[fuel_hydrostatic_stress_max]
type = ElementExtremeValue
block = pellet
variable = hydrostatic_stress
value_type = max
outputs = csv
[]
[fuel_hydrostatic_stress_avg]
type = ElementAverageValue
block = pellet
variable = hydrostatic_stress
outputs = csv
[]
[fuel_volumetric_strain_avg]
type = ElementAverageValue
block = pellet
variable = fuel_volumetric_strain
outputs = 'csv chkfile'
[]
###### CLADDING MECHANICS ######
[clad_hoop_stress_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_stress
value_type = max
outputs = csv
[]
[clad_hoop_creep_strain_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_creep_strain
value_type = max
outputs = 'csv chkfile'
[]
[clad_hoop_elastic_strain_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_elastic_strain
value_type = max
outputs = 'csv chkfile'
[]
[clad_hoop_total_strain_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_total_strain
value_type = max
outputs = 'csv chkfile'
[]
[cdf_max]
type = ElementExtremeValue
variable = cdf_failure
value_type = max
outputs = 'console csv'
[]
###### PERFORMANCE ######
[creep_timestep_fuel]
type = MaterialTimeStepPostprocessor
block = pellet
outputs = csv
[]
[creep_timestep_clad]
type = MaterialTimeStepPostprocessor
block = clad
outputs = csv
[]
[creep_timestep_min]
type = FunctionValuePostprocessor
function = creep_timestep_min_function
outputs = csv
[]
###### SWELLING ######
[solid_swelling_avg]
type = ElementAverageValue
block = pellet
variable = solid_swelling
outputs = 'csv chkfile'
[]
[gas_swelling_avg]
type = ElementAverageValue
block = pellet
variable = gas_swelling
outputs = 'csv chkfile'
[]
[porosity_avg]
type = ElementAverageValue
block = pellet
variable = porosity
outputs = 'csv chkfile'
[]
[sodium_logged_porosity_avg]
type = ElementAverageValue
block = pellet
variable = sodium_logged_porosity
outputs = 'csv chkfile'
[]
###### CLADDING WASTAGE ######
[wastage_max]
type = ElementExtremeValue
block = clad
variable = wastage_thickness
value_type = max
outputs = 'csv chkfile'
[]
[wastage_min]
type = ElementExtremeValue
block = clad
variable = wastage_thickness
value_type = min
outputs = csv
[]
[wastage_avg]
type = ElementAverageValue
block = clad
variable = wastage_thickness
outputs = csv
[]
[eutectic_max]
type = ElementExtremeValue
block = clad
variable = eutectic_thickness
value_type = max
outputs = csv
[]
[eutectic_min]
type = ElementExtremeValue
block = clad
variable = eutectic_thickness
value_type = min
outputs = csv
[]
[eutectic_avg]
type = ElementAverageValue
block = clad
variable = eutectic_thickness
outputs = csv
[]
[]
[VectorPostprocessors]
[fuel_centerline]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = centerline
sort_by = y
outputs = csv
[]
[fuel_surface]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = pellet_outer_radial_surface
sort_by = y
outputs = csv
[]
[clad_inner_surface]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = clad_inside_right
sort_by = y
outputs = csv
[]
[clad_outer_surface]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = clad_outside_right
sort_by = y
outputs = csv
[]
[]
[PerformanceMetricOutputs]
outputs = 'csv performance'
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_screen = true
[]
[exodus]
type = Exodus
execute_on = 'INITIAL TIMESTEP_END FINAL'
time_step_interval = 50
[]
[csv]
type = CSV
execute_postprocessors_on = 'INITIAL TIMESTEP_END'
execute_vector_postprocessors_on = FINAL
[]
[chkfile]
type = CSV
execute_postprocessors_on = FINAL
[]
[performance]
type = CSV
hide = 'plenum_pressure plenum_temperature'
execute_postprocessors_on = FINAL
[]
[]
# REFERENCES
# [Fink and Leibowitz, 1995]
# J. K. Fink and L. Leibowitz, "Thermodynamic and transport properties of
# sodium liquid and vapor", Argonne National Laboratory ANL/RE--95/2, 94649,
# Argonne, Illinois (1995)
# [Greenquist and Powers, 2021]
# I. Greenquist, J.J. Powers "25-Pin metallic fuel performance benchmark
# case based on the EBR-II X430 experiment series" Journal of Nuclear
# Materials Vol 556, 153211 (2021)
# [Hayes et al., 1994]
# S.L. Hayes, D.C. Crawford, R.G. Phal "Test Design and Postirradiation
# Examination of the HT9 Advanced Driver Fuel Test (X430)" Argonne National
# Laboratory ANL-IFR-225, Idaho Falls, Idaho (1994)
# [Hobbs and Charboneau, 2020]
# I.M. Hobbs, J.A. Charboneau "Compressibility of gas mixtures pertaining to
# nuclear fuel rods" Journal of Physics Comminications Vol. 4, Iss. 9,
# 095008 (2020)
# [Shultis and Faw, 2008]
# J.K. Shultis, R.E. Faw "Fundamentals of Nuclear Science and Engineering
# Second Edition" CRC Press, Boca Raton, Florida (2008)
# [Snyder, 1988]
# E. Snyder "Report of EBR-II Operations: Run 146 and 147", Argonne National
# Laboratory ANLEBR.R146 ANLEBR.R147, Idaho Falls, Idaho (1988)
(assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_1_5D_G.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(test/tests/solid_mechanics/upuzr_eigenstrains/ad_upuzr_gaseous_eigenstrain/exact.i)
# @Requirement F4.40
# This tests UPuZrGaseousEigenstrain, a swelling model for UPuZr metal fuel
# that allows for variation in bubble radius, as well as to the fission gas release
# model for UPuZr fuel.
#
# The swelling model is based on Eq. (13.146) in "Fundamental aspects of nuclear
# reactor fuel elements" by Olander.
#
# The fission gas that is released is based on an empirical model
# which states that once the gaseous swelling reaches a value of
# 0.33 (corresponding to a porosity of 0.24812), 80% of the fission gas so far
# produced is immediately released. After that, 100% of the gas produced is released.
# For information regarding swelling and porosity, see the above reference or the
# following reference:
# Karahan A., Modeling of Thermo Mechanical and Irradiation Behavior of Metallic
# and Oxide Fuels for Sodium Fast Reactors, Thesis, Massachusetts Institute of Technology 2009.
#
[GlobalParams]
displacements = 'disp_x'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
use_automatic_differentiation = true
eigenstrain_names = gas_swelling_eigenstrain
[]
[]
[AuxVariables]
[temp]
initial_condition = 1700
[]
[]
[AuxKernels]
[temp_aux]
type = FunctionAux
variable = temp
function = temp_fcn
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[]
[Functions]
[temp_fcn]
type = PiecewiseLinear
x = '0 1e7 1.1e7 3e7'
y = '100 1000 500 1000'
[]
[fsnrate_fcn]
type = PiecewiseConstant
x = '0 1e7 1.1e7 3e7'
y = '1e19 0 1e21 1e20'
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
[]
[fission_rate]
type = ADGenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = 'fsnrate_fcn'
outputs = all
[]
[gas_swelling]
type = ADUPuZrGaseousEigenstrain
temperature = temp
initial_porosity = 0.1
bubble_number_density = 1e+20
interconnection_terminating_porosity = 0.2
interconnection_initiating_porosity = 0.15
scalar = 0.5
surface_energy = 1.2
fission_gas_yield = 0.2
retained_gas_fraction = 0.2
outputs = all
eigenstrain_name = gas_swelling_eigenstrain
[]
[]
[Executioner]
type = Transient
nl_rel_tol = 1e-8
nl_abs_tol = 1e-4
num_steps = 40
dt = 5e5
[]
[Postprocessors]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[atoms]
type = ElementAverageValue
variable = atoms_per_bubble
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
[]
[gas_swell]
type = ElementAverageValue
variable = gas_swelling
[]
[radius]
type = ElementAverageValue
variable = radius
[]
[temp]
type = ElementAverageValue
variable = temp
[]
[interconnectivity]
type = ElementAverageValue
variable = interconnectivity
[]
[]
[Outputs]
csv = true
[]
(test/tests/standard_metallic_outputs_action/x441_mini_fuel_rod.i)
[GlobalParams]
density = 15800.0
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
# Nominal Design Geometric Parameters (X441)
type = FuelPinMeshGenerator
clad_thickness = 0.38e-03
pellet_outer_radius = 2.195e-03
pellet_height = 3.4e-2
clad_top_gap_height = 2.7e-2
clad_gap_width = 0.345e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 1
ny_p = 5
nx_c = 1
ny_c = 5
ny_cu = 1
ny_cl = 1
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 2
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 5e3'
y = '0 44722'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 5e3'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 5e3'
y = '298.0 648.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 8.1e-3
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.195e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 343.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
extra_vector_tags = 'ref'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 0.345e-3
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 2.195e-03
X_Zr = 0.225
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.225
density = 15800
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.0
block = pellet
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
interconnection_initiating_porosity = 0.23
interconnection_terminating_porosity = 0.25
anisotropic_factor = 0.4
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.0
spheat_model = savage
thcond_model = lanl
porosity = porosity
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 15800.0
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.24
fractional_fgr_initial = 0.8
fractional_fgr_post = 1.0
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 5e3
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e3
time_t = '0 1e4'
time_dt = '1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_clad_creep_strain_mag]
type = ElementExtremeValue
value_type = max
block = clad
variable = effective_creep_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 'all_pellet_exterior'
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.05 0.0'
num_points = 300
sort_by = y
outputs = 'vec1'
[]
[]
[StandardMetallicFuelRodOutputs]
initial_pressure = 0.084e6 # Pa
fuel_pellet_blocks = 'pellet'
plenum_boundary_name = 'inside_surfaces'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
time_step_interval = 1
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3'
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_mini_fuel_rod_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fission_gas_released_percentage max_clad_hoop_creep max_clad_creep_strain_mag max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[vec1]
type = CSV
file_base = x441_mini_fuel_rod_vec1
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(examples/constituent_redistribution/2d_thermo.i)
# This example demonstrates how to loosely couple the metallic fuel constituent
# redistribution model provided by ADUPuZrPhaseLookup and ADUPuZrMobility to a
# thermo solve using the MultiApps system. This file contains the AD thermo
# solve. The composition solve is contained in 2d_composition.i, which is
# executed as a SubApp. The MultiApps system allows for use of different mesh
# resolutions and solver options. The problem simulates irradiation of
# Experimental Breeder Reactor II Fuel Element DP81. The predicted zirconium
# profile (X_Zr) can be compared to the experimental EPMA scan stored in
# (X_Zr_ref) [1]. This example runs in about 4 minutes on 2 processors using
# the Newton method.
# References
# [1]: Hofman, G. L., Hayes, S. L., and Petri, M. C. Temperature Gradient
# Driven Constituent Redistribution in U-Zr Alloys. Journal of Nuclear
# Materials 227 (1996). 277-286.
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 3.810e-04
pellet_outer_radius = 2.192e-03
pellet_height = 3.428e-01
clad_top_gap_height = 2.714e-01
clad_gap_width = 3.480e-04
bottom_clad_height = 2.240e-03
top_clad_height = 2.240e-03
clad_bot_gap_height = 3.100e-04
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 10
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
elem_type = QUAD8
[]
[radial_slice]
type = BoundingBoxNodeSetGenerator
input = smeared_pellet_mesh
new_boundary = radial_slice
bottom_left = '-0.001e-03 2.688e-01 0'
top_right = '2.193e-03 2.690e-01 0'
[]
construct_side_list_from_node_list = true
[]
[MultiApps]
[composition]
type = TransientMultiApp
app_type = BisonApp
positions = '0 0 0'
input_files = 2d_composition.i
catch_up = true
max_catch_up_steps = 2
[]
[]
[Transfers]
[to_sub_T]
type = MultiAppGeometricInterpolationTransfer
to_multi_app = composition
source_variable = T
variable = T
[]
[from_sub_xZr]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = X_Zr
variable = X_Zr
[]
[from_sub_alpha]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = alpha
variable = alpha
[]
[from_sub_beta]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = beta
variable = beta
[]
[from_sub_gamma]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = gamma
variable = gamma
[]
[from_sub_delta]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = delta
variable = delta
[]
[from_sub_zeta]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = zeta
variable = zeta
[]
[]
[Variables]
[T]
order = SECOND
family = LAGRANGE
initial_condition = 298
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = T
order = SECOND
quadrature = true
gap_conductivity = 61.0
min_gap = 3.480e-04
primary = 5
secondary = 10
[]
[]
[CoolantChannel]
[convective_clad_surface]
variable = T
inlet_temperature = f_T_coolant_in
inlet_pressure = f_coolant_pressure
inlet_massflux = 2.315e+03
coolant_material = sodium
linear_heat_rate = f_power
axial_power_profile = f_axial_power
subchannel_geometry = triangular
rod_diameter = 5.842e-03
rod_pitch = 6.909e-03
thermal_conductivity = thermal_conductivity_reg
boundary = '1 2 3'
[]
[]
[Kernels]
# Transient heat generation and conduction
[heat_dt]
type = ADHeatConductionTimeDerivative
variable = T
specific_heat = specific_heat
density_name = density
[]
[heat_conduction]
type = ADHeatConduction
variable = T
thermal_conductivity = thermal_conductivity
[]
[heat_source]
type = ADFissionRateHeatSource
block = pellet
variable = T
fission_rate = fission_rate
[]
[]
[AuxVariables]
[gap_conductance_aux]
order = CONSTANT
family = MONOMIAL
[]
[X_Pu]
block = pellet
[]
[X_Zr]
block = pellet
[]
[X_Zr_ref]
block = pellet
[InitialCondition]
type = FunctionIC
function = f_X_Zr_ref
[]
[]
[alpha]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[beta]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gamma]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[delta]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[zeta]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[f_power]
type = PiecewiseLinear
x = '0 100000 4420000 5111200 11504800 18157600 24969600'
y = '0 31816 30504 29848 30504 29192 29192'
[]
[f_coolant_pressure]
type = PiecewiseLinear
x = '0 24969600'
y = '0.151e6 0.151e6'
[]
[f_T_coolant_in]
type = PiecewiseLinear
x = '0 1e5 24959600 24969600'
y = '298.0 644.0 644.0 644.0'
[]
[f_axial_power]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 3.428e-01
pellet_y_start = 2.440e-03
[]
[f_X_Zr_ref]
type = SplineFunction
x = '0.000e+00 1.099e-05 2.197e-05 3.296e-05 4.394e-05 5.493e-05 6.591e-05 7.690e-05 8.788e-05 9.887e-05 1.099e-04 1.208e-04 1.318e-04 1.428e-04 1.538e-04 1.648e-04 1.758e-04 1.867e-04 1.977e-04 2.087e-04 2.197e-04 2.307e-04 2.417e-04 2.527e-04 2.636e-04 2.746e-04 2.856e-04 2.966e-04 3.076e-04 3.186e-04 3.296e-04 3.405e-04 3.515e-04 3.625e-04 3.735e-04 3.845e-04 3.955e-04 4.064e-04 4.174e-04 4.284e-04 4.394e-04 4.504e-04 4.614e-04 4.724e-04 4.833e-04 4.943e-04 5.053e-04 5.163e-04 5.273e-04 5.383e-04 5.493e-04 5.602e-04 5.712e-04 5.822e-04 5.932e-04 6.042e-04 6.152e-04 6.261e-04 6.371e-04 6.481e-04 6.591e-04 6.701e-04 6.811e-04 6.921e-04 7.030e-04 7.140e-04 7.250e-04 7.360e-04 7.470e-04 7.580e-04 7.690e-04 7.799e-04 7.909e-04 8.019e-04 8.129e-04 8.239e-04 8.349e-04 8.458e-04 8.568e-04 8.678e-04 8.788e-04 8.898e-04 9.008e-04 9.118e-04 9.227e-04 9.337e-04 9.447e-04 9.557e-04 9.667e-04 9.777e-04 9.887e-04 9.996e-04 1.011e-03 1.022e-03 1.033e-03 1.044e-03 1.055e-03 1.066e-03 1.077e-03 1.088e-03 1.099e-03 1.109e-03 1.120e-03 1.131e-03 1.142e-03 1.153e-03 1.164e-03 1.175e-03 1.186e-03 1.197e-03 1.208e-03 1.219e-03 1.230e-03 1.241e-03 1.252e-03 1.263e-03 1.274e-03 1.285e-03 1.296e-03 1.307e-03 1.318e-03 1.329e-03 1.340e-03 1.351e-03 1.362e-03 1.373e-03 1.384e-03 1.395e-03 1.406e-03 1.417e-03 1.428e-03 1.439e-03 1.450e-03 1.461e-03 1.472e-03 1.483e-03 1.494e-03 1.505e-03 1.516e-03 1.527e-03 1.538e-03 1.549e-03 1.560e-03 1.571e-03 1.582e-03 1.593e-03 1.604e-03 1.615e-03 1.626e-03 1.637e-03 1.648e-03 1.659e-03 1.670e-03 1.681e-03 1.692e-03 1.703e-03 1.714e-03 1.725e-03 1.736e-03 1.747e-03 1.758e-03 1.769e-03 1.780e-03 1.791e-03 1.802e-03 1.813e-03 1.824e-03 1.834e-03 1.845e-03 1.856e-03 1.867e-03 1.878e-03 1.889e-03 1.900e-03 1.911e-03 1.922e-03 1.933e-03 1.944e-03 1.955e-03 1.966e-03 1.977e-03 1.988e-03 1.999e-03 2.010e-03 2.021e-03 2.032e-03 2.043e-03 2.054e-03 2.065e-03 2.076e-03 2.087e-03 2.098e-03 2.109e-03 2.120e-03 2.131e-03 2.142e-03 2.153e-03 2.164e-03 2.175e-03 2.186e-03'
y = '3.885e-01 3.885e-01 3.734e-01 3.590e-01 3.453e-01 3.801e-01 4.422e-01 4.596e-01 4.215e-01 3.965e-01 3.933e-01 4.167e-01 4.431e-01 4.037e-01 4.095e-01 4.104e-01 4.010e-01 3.799e-01 3.995e-01 4.261e-01 4.421e-01 4.450e-01 4.256e-01 4.510e-01 5.115e-01 4.718e-01 4.138e-01 4.158e-01 4.454e-01 3.952e-01 2.708e-01 1.811e-01 2.932e-01 3.956e-01 4.010e-01 4.438e-01 4.706e-01 4.574e-01 3.943e-01 3.271e-01 3.642e-01 4.024e-01 3.875e-01 3.970e-01 4.123e-01 4.326e-01 4.353e-01 4.202e-01 3.674e-01 3.546e-01 3.746e-01 4.111e-01 4.174e-01 3.858e-01 3.380e-01 3.172e-01 3.418e-01 3.884e-01 4.080e-01 3.816e-01 3.655e-01 3.654e-01 3.654e-01 3.677e-01 3.751e-01 3.649e-01 3.557e-01 3.597e-01 3.655e-01 3.656e-01 3.542e-01 3.659e-01 3.575e-01 3.202e-01 2.908e-01 3.047e-01 3.069e-01 3.287e-01 3.847e-01 3.949e-01 3.514e-01 3.297e-01 3.263e-01 3.546e-01 3.581e-01 3.608e-01 3.121e-01 2.694e-01 2.931e-01 3.235e-01 2.970e-01 2.552e-01 2.159e-01 1.917e-01 2.040e-01 2.168e-01 1.825e-01 1.284e-01 7.370e-02 4.785e-02 1.842e-02 7.600e-03 7.420e-03 1.751e-02 6.518e-02 7.871e-02 7.470e-02 6.046e-02 1.203e-01 2.068e-01 1.903e-01 8.591e-02 4.031e-02 2.911e-02 5.307e-02 8.001e-02 1.061e-01 1.072e-01 7.464e-02 4.104e-02 3.966e-02 7.244e-02 8.140e-02 7.180e-02 9.492e-02 1.281e-01 1.213e-01 1.188e-01 1.617e-01 2.258e-01 2.321e-01 1.980e-01 1.650e-01 1.621e-01 2.045e-01 2.132e-01 1.669e-01 1.865e-01 2.431e-01 2.144e-01 1.597e-01 1.821e-01 1.962e-01 1.905e-01 2.026e-01 2.446e-01 2.788e-01 2.705e-01 2.518e-01 2.454e-01 2.472e-01 2.465e-01 2.963e-01 3.190e-01 2.726e-01 2.280e-01 2.382e-01 2.713e-01 2.889e-01 2.408e-01 2.094e-01 2.454e-01 2.894e-01 2.808e-01 2.695e-01 2.769e-01 2.813e-01 2.802e-01 2.810e-01 3.856e-01 4.359e-01 3.762e-01 4.293e-01 4.049e-01 3.155e-01 2.501e-01 2.662e-01 3.887e-01 4.248e-01 3.808e-01 3.120e-01 2.897e-01 2.816e-01 2.762e-01 2.350e-01 2.032e-01 2.147e-01 2.246e-01 3.273e-01 3.938e-01 3.301e-01 2.641e-01 2.351e-01 2.482e-01 2.716e-01 2.403e-01 2.083e-01 1.802e-01 1.772e-01 2.982e-01'
[]
[]
[Materials]
[fuel_density]
type = ADGenericConstantMaterial
block = pellet
prop_names = density
prop_values = 1.580e+04
[]
# Heat generation and conduction
[fission_rate]
type = ADUPuZrFissionRate
block = pellet
X_Pu_function = 0
initial_X_Zr = 0.225
X_Zr = X_Zr
rod_linear_power = f_power
axial_power_profile = f_axial_power
pellet_radius = 2.192e-03
[]
[burnup]
type = ADUPuZrBurnup
block = pellet
initial_X_Pu = 0
initial_X_Zr = 0.225
density = 1.580e+04
outputs = all
[]
[gaseous_swelling]
type = ADUPuZrGaseousEigenstrain
block = pellet
eigenstrain_name = gaseous_swelling_eigenstrain
temperature = T
initial_porosity = 0
bubble_number_density = 1e20
outputs = 'all'
output_properties = 'gaseous_porosity porosity gas_swelling'
[]
[solid_swelling]
type = ADBurnupDependentEigenstrain
block = pellet
eigenstrain_name = solid_swelling_eigenstrain
swelling_name = solid_swelling
outputs = all
[]
[sodium_logging]
type = ADUPuZrSodiumLogging
block = pellet
porosity = porosity
interconnectivity = interconnectivity
sodium_infiltration_fraction = 0.08
outputs = all
[]
[fuel_thermal_conductivity]
type = ADUPuZrThermal
block = pellet
temperature = T
X_Zr = X_Zr
X_Pu = X_Pu
thcond_model = lanl
porosity_model = logged
porosity = porosity
sodium_logged_porosity = sodium_logged_porosity
spheat_model = savage
[]
[fission_gas_release]
type = ADUPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
porosity = porosity
[]
[clad_density]
type = ADGenericConstantMaterial
block = clad
prop_names = density
prop_values = 7874.0
[]
[clad_thermal_conductivity]
type = ADHT9Thermal
block = clad
temperature = T
[]
[clad_thermal_conductivity_converter]
# This material creates a non-AD version of the cladding thermal
# conductivity, which is used by the CoolantChannel model.
type = MaterialADConverter
block = clad
ad_props_in = thermal_conductivity
reg_props_out = thermal_conductivity_reg
[]
[]
[AuxKernels]
[gap_conductance_aux]
type = MaterialRealAux
variable = gap_conductance_aux
property = gap_conductance
boundary = 10
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
automatic_scaling = true
compute_scaling_once = false
scheme = bdf2
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = none
l_max_its = 15
l_tol = 1e-3
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
dtmin = 10
dtmax = 1e6
end_time = 24969600
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e5
iteration_window = 2
optimal_iterations = 9
growth_factor = 1.1
cutback_factor = 0.5
[]
[]
[Postprocessors]
[T_cl]
type = PointValue
variable = T
point = '0 2.689e-01 0'
[]
[burnup_avg]
type = SideAverageValue
variable = burnup
boundary = radial_slice
[]
[porosity_avg]
type = SideAverageValue
variable = porosity
boundary = radial_slice
[]
[logged_sodium_avg]
type = SideAverageValue
variable = sodium_logged_porosity
boundary = radial_slice
[]
[gas_porosity_avg]
type = SideAverageValue
variable = gaseous_porosity
boundary = radial_slice
[]
[solid_swelling_avg]
type = SideAverageValue
variable = solid_swelling
boundary = radial_slice
[]
[gaseous_swelling_avg]
type = SideAverageValue
variable = gas_swelling
boundary = radial_slice
[]
[fis_gas_produced]
type = ADElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_prod
[]
[fis_gas_released]
type = ADElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_rel
execute_on = 'initial timestep_end'
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[]
[VectorPostprocessors]
[profiles]
type = LineValueSampler
variable = 'T X_Pu X_Zr X_Zr_ref alpha beta gamma delta zeta'
sort_by = x
start_point = '0 2.689e-01 0'
end_point = '2.192e-03 2.689e-01 0'
num_points = 11
[]
[]
[Outputs]
perf_graph = true
exodus = true
[csv]
type = CSV
execute_vector_postprocessors_on = final
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_grp_G.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/solid_mechanics/simple_fission_gas_viscoplasticity/old_method_comparison.i)
# This test ensures that shows the differences between the old fission gas swelling and fission
# gas release model with the new combined model. Note, the method for calculating porosity
# is different between the two methods, so the final interconnection and porosities are different.
# What should be similar is the amount of fission gas produced and final radius. Also note, the
# old models do not keep track of the dissolved fission gas or gas in bubbles. Other small differences
# are due to small numerical differences in constants.
[GlobalParams]
displacements = 'disp_x'
[]
[Mesh]
[left]
type = GeneratedMeshGenerator
dim = 1
nx = 4
xmin = 0
xmax = 1
[]
[left_id]
type = SubdomainIDGenerator
input = left
subdomain_id = 1
[]
[right]
type = GeneratedMeshGenerator
dim = 1
nx = 4
xmin = 2
xmax = 3
[]
[right_id]
type = SubdomainIDGenerator
input = right
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'left_id right_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'left right'
[]
[block_sidesets]
type = SideSetsFromPointsGenerator
input = block_rename
points = '3 0 0'
new_boundary = 'far_right'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[left]
add_variables = true
strain = FINITE
use_automatic_differentiation = true
block = left
[]
[right]
add_variables = true
strain = FINITE
use_automatic_differentiation = true
block = right
eigenstrain_names = 'gas_swelling_eigenstrain'
[]
[]
[AuxVariables]
[temp]
initial_condition = 1700
[]
[]
[AuxKernels]
[temp_aux]
type = FunctionAux
variable = temp
function = temp_fcn
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = 'left far_right'
value = 0
[]
[]
[Functions]
[temp_fcn]
type = PiecewiseLinear
x = '0 1e7 1.1e7 3e7'
y = '100 1000 500 1000'
[]
[fsnrate_fcn]
type = PiecewiseConstant
x = '0 1e7 1.1e7 3e7'
y = '1e19 0 1e21 1e20'
[]
[fg_check_left]
type = ParsedFunction
symbol_values = 'fgm_produced_avg_left fgm_released_avg_left fgm_captured_avg_left fgm_dissolved_avg_left'
symbol_names = 'fgm_produced_avg_left fgm_released_avg_left fgm_captured_avg_left fgm_dissolved_avg_left'
expression = 'fgm_produced_avg_left-fgm_released_avg_left-fgm_captured_avg_left-fgm_dissolved_avg_left'
[]
[fg_check_right]
type = ParsedFunction
symbol_values = 'fgm_produced_avg_right fgm_released_avg_right fgm_captured_avg_right fgm_dissolved_avg_right'
symbol_names = 'fgm_produced_avg_right fgm_released_avg_right fgm_captured_avg_right fgm_dissolved_avg_right'
expression = 'fgm_produced_avg_right-fgm_released_avg_right-fgm_captured_avg_right-fgm_dissolved_avg_right'
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fission_rate]
type = ADGenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = 'fsnrate_fcn'
outputs = all
[]
[left_fuel_stress]
type = ADComputeMultipleInelasticStress
block = left
inelastic_models = 'left_gas_swelling'
[]
[porosity]
type = ADPorosityFromStrain
block = left
initial_porosity = 0.1
inelastic_strain = 'combined_inelastic_strain'
outputs = all
[]
[left_gas_swelling]
type = ADSimpleFissionGasViscoplasticityStressUpdate
block = left
fission_rate = fission_rate
temperature = temp
bubble_concentration = 1e20
initial_bubble_concentration = 1e20
interconnection_initiating_porosity = 0.15
interconnection_terminating_porosity = 0.2
compute_interconnectivity = true
scalar = 0.8
initial_fgm_dissolved = 0
initial_atoms_per_bubble = 1e-5
surface_energy = 1.2
fission_gas_yield = 0.15
retained_gas_fraction = 0.2
outputs = all
[]
[right_fuel_stress]
type = ADComputeFiniteStrainElasticStress
block = right
[]
[right_gas_swelling]
type = ADUPuZrGaseousEigenstrain
block = right
temperature = temp
initial_porosity = 0.1
bubble_number_density = 1e20
interconnection_initiating_porosity = 0.15
interconnection_terminating_porosity = 0.2
scalar = 0.8
surface_energy = 1.2
fission_gas_yield = 0.15
retained_gas_fraction = 0.2
outputs = all
eigenstrain_name = gas_swelling_eigenstrain
[]
[fission_gas_release]
type = ADUPuZrFissionGasRelease
block = right
fission_rate = fission_rate
porosity = porosity
fractional_yield = 0.15
critical_porosity = 0.20
time_average_fission_rate = false
use_old_porosity = false
outputs = all
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
end_time = 2e7
dt = 5e5
dtmin = 1
nl_abs_tol = 1e-15
[]
[Postprocessors]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[temp]
type = ElementAverageValue
variable = temp
[]
[atoms_left]
type = ElementAverageValue
variable = fgm_per_bubble
block = left
[]
[porosity_left]
type = ElementAverageValue
variable = porosity
block = left
[]
[gas_swelling_left]
type = ElementAverageValue
variable = effective_fission_gas_strain
block = left
[]
[radius_left]
type = ElementAverageValue
variable = radius
block = left
[]
[interconnectivity_left]
type = ElementAverageValue
variable = interconnectivity
block = left
[]
[fgm_produced_avg_left]
type = ElementAverageValue
variable = fgm_produced
block = left
[]
[fgm_released_avg_left]
type = ElementAverageValue
variable = fgm_released
block = left
[]
[fgm_captured_avg_left]
type = ElementAverageValue
variable = fgm_captured
block = left
[]
[fgm_dissolved_avg_left]
type = ElementAverageValue
variable = fgm_dissolved
block = left
[]
[fg_check_left]
type = FunctionValuePostprocessor
function = fg_check_left
[]
[atoms_right]
type = ElementAverageValue
variable = atoms_per_bubble
block = right
[]
[porosity_right]
type = ElementAverageValue
variable = porosity
block = right
[]
[gas_swelling_right]
type = ElementAverageValue
variable = gas_swelling
block = right
[]
[radius_right]
type = ElementAverageValue
variable = radius
block = right
[]
[interconnectivity_right]
type = ElementAverageValue
variable = interconnectivity
block = right
[]
[fgm_produced_avg_right]
type = ElementAverageValue
variable = fis_gas_prod
block = right
[]
[fgm_released_avg_right]
type = ElementAverageValue
variable = fis_gas_rel
block = right
[]
[fgm_captured_avg_right]
type = ElementAverageValue
variable = fgm_captured
block = right
[]
[fgm_dissolved_avg_right]
type = ElementAverageValue
variable = fgm_dissolved
block = right
[]
[fg_check_right]
type = FunctionValuePostprocessor
function = fg_check_right
[]
[]
[Outputs]
csv = true
exodus = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_1_5D_D.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_1_5D_F.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(examples/thor_capsule_transfer/pin_with_heat_sink.i)
# Example of adding a heat sink outside of an already irradiated pin.
# An example of using a base irradiation's output exodus file to initialize a
# pin with a heat sink next to it (like in THOR). This is useful for taking
# an EBR-II pin and putting it in TREAT in THOR.
initial_fuel_density = 15800.0
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
X_Pu = 0.16029880703609925
X_Zr = 0.22566146557004974
[]
[Problem]
type = AugmentedLagrangianContactProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
# mesh options
patch_size = 50
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
# These are the setting from the base irradiation for your information
#[smear_2drz]
# type = FuelPinMeshGenerator
# clad_thickness = 0.000381
# pellet_outer_radius = 0.0021971
# pellet_height = 0.342646
# clad_top_gap_height = 0.2620678
# clad_gap_width = 0.0003429
# bottom_clad_height = 0.0127
# top_clad_height = 0.0127
# clad_bot_gap_height = 0.001 # arbitrary
# # meshing parameters
# clad_mesh_density = customize
# pellet_mesh_density = customize
# nx_p = 5
# ny_p = 150
# nx_c = 4
# ny_c = 150
# ny_cu = 3
# ny_cl = 3
# pellet_quantity = 1
# elem_type = QUAD8
#[]
[file] # This is the pin's output exodus
type = FileMeshGenerator
file = base_irradiation_out.e
use_for_exodus_restart = true
[]
[sink] # Generic sink dimensions
type = GeneratedMeshGenerator
dim = 2
xmin = 0.0032639
xmax = 0.005461
nx = 5
ymin = 0.0
ymax = 0.6311138
ny = 100
elem_type = QUAD8
boundary_id_offset = 50
[]
[combine]
type = CombinerGenerator
inputs = 'file sink'
[]
[name_sink]
type = SubdomainBoundingBoxGenerator
input = 'combine'
bottom_left = '0.0032638 -0.00001 0'
top_right = '0.005462 0.6311139 0'
block_id = 5
block_name = 'heat_sink'
[]
[]
[Variables]
[T]
initial_from_file_var = T
[]
[disp_x]
initial_from_file_var = disp_x
[]
[disp_y]
initial_from_file_var = disp_y
[]
[]
[ICs]
[sink_T]
type = ConstantIC
block = heat_sink
variable = T
value = 298 # K
[]
[]
[Problem]
# initial condition is overriding the restarted T variable
allow_initial_conditions_with_restart = true
[]
[AuxVariables]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 360'
y = '23500 30000'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = custom
custom_params = '0.88416801 1.07334286 -1.26837226 0.00726538'
pellet_length = 0.342646
pellet_y_start = 0.0137
[]
[axial_flux_peaking_factors]
type = PowerPeakingFunction
fit = custom
custom_params = '0.78912541 1.7214792 -2.09297848 0.19040197'
pellet_length = 0.342646
pellet_y_start = 0.0137
zero_beyond_top_and_bottom = False
[]
[flux_history]
type = PiecewiseLinear
x = '0 86400 31536000' # 1 year
y = '1 2.0e19 1.0e19'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
[fuel]
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
block = 1
eigenstrain_names = 'clad_thermal_eigenstrain clad_volume_eigenstrain'
[]
[sink]
extra_vector_tags = 'ref'
block = heat_sink
eigenstrain_names = 'sink_thermal_eigenstrain'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = T
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = T
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.2
normalize_penalty = true
tangential_tolerance = 0.4
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 0.8
al_frictional_force_tolerance = 0.8
[]
[clad_sink_mechanical]
primary = 53
secondary = 2
penalty = 1e12
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.2
normalize_penalty = true
tangential_tolerance = 0.4
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 0.8
al_frictional_force_tolerance = 0.8
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = T
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 75.0
tangential_tolerance = 1e-4
min_gap = 0.0003429
[]
[thermal_sink]
type = GapHeatTransfer
variable = T
primary = 53
secondary = 2
quadrature = true
gap_conductivity = 75.0
tangential_tolerance = 1e-4
min_gap = 0.0003429
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_sink]
type = DirichletBC
variable = disp_y
boundary = 50
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 51
factor = 151000.0
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6
startup_time = 0
R = 8.3143
temperature = ave_temp_plenum
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
execute_on = timestep_end
[]
[]
[]
[Materials]
[phase]
type = PhaseUPuZr
block = pellet
AB_temp = 965.15
CD_temp = 995.15
outputs = all
calc_H = false
temperature = T
[]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 0.0021971
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.22566146557004974
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = pellet
temperature = T
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = T
porosity = porosity
max_inelastic_increment = 2e-3
fission_rate = fission_rate
[]
[fuel_thermal_expansion]
type = UPuZrThermalExpansionEigenstrain
block = pellet
temperature = T
stress_free_temperature = 298.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = T
initial_porosity = 0.0
bubble_number_density = 5e17
interconnection_initiating_porosity = 0.16
interconnection_terminating_porosity = 0.18
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
anisotropic_factor = 0.5
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_factor = 1.5
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
spheat_model = savage
thcond_model = billone
porosity = porosity
temperature = T
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fractional_yield = 0.25
critical_porosity = 0.17
fractional_fgr_initial = 0.4
fractional_fgr_post = 0.7354
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_creep'
block = clad
[]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
factor = 1
axial_power_profile = axial_flux_peaking_factors
rod_ave_lin_pow = flux_history
outputs = all
[]
[clad_creep]
type = D9CreepUpdate
fast_neutron_flux = fast_neutron_flux
block = clad
temperature = T
youngs_modulus = 1.88e11
[]
[thermal_expansion]
type = D9ThermalExpansionEigenstrain
block = clad
temperature = T
stress_free_temperature = 298.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = D9Thermal
block = clad
temperature = T
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[clad_volumetric_swelling]
type = D9VolumetricSwellingEigenstrain
eigenstrain_name = clad_volume_eigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
temperature = T
[]
[sink_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100e9
poissons_ratio = 0.35
block = heat_sink
[]
[sink_stress]
type = ComputeFiniteStrainElasticStress
block = heat_sink
[]
[sink_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = heat_sink
temperature = T
stress_free_temperature = 298.0
eigenstrain_name = sink_thermal_eigenstrain
thermal_expansion_coeff = 8.5e-6
[]
[sink_thermal]
type = HeatConductionMaterial
block = heat_sink
specific_heat = 540
thermal_conductivity = 17
[]
[sink_density]
type = StrainAdjustedDensity
block = heat_sink
strain_free_density = 4.51e3
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 5e-3
nl_abs_tol = 1e-5
end_time = 9
dtmin = 0.01
dtmax = 3
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.5
growth_factor = 2
cutback_factor = 0.1
iteration_window = 5
optimal_iterations = 20
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = T
execute_on = 'initial linear'
[]
[ave_temp_plenum]
type = SideAverageValue
boundary = 6
variable = T
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = T
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = T
[]
[avg_clad_temp]
type = ElementAverageValue
variable = T
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = T
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = T
value_type = max
block = pellet
[]
[avg_sink_temp]
type = ElementAverageValue
variable = T
block = heat_sink
[]
[peak_sink_temp]
type = ElementExtremeValue
variable = T
value_type = max
block = heat_sink
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = T
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = T
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_integral_power]
type = ElementIntegralPower
variable = T
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.343
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[peak_burnup]
type = ElementExtremeValue
block = pellet
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[disp_x_max]
type = NodalExtremeValue
variable = disp_x
block = clad
[]
[disp_y_max]
type = NodalExtremeValue
variable = disp_y
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_cladding_creep_strain]
type = ElementExtremeValue
variable = creep_strain_mag
block = clad
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[Outputs]
color = true
exodus = true
perf_graph = true
csv = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y T'
show_var_residual_norms = true
[]
[Dampers]
[max_inc_damp_x]
type = MaxIncrement
max_increment = 3e-4
variable = disp_x
[]
[max_inc_damp_y]
type = MaxIncrement
max_increment = 3e-4
variable = disp_y
[]
[max_inc_temp]
type = MaxIncrement
max_increment = 25
variable = T
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_grp_A.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/solid_mechanics/upuzr_eigenstrains/upuzr_gaseous_eigenstrain/exact.i)
# @Requirement F4.40
# This tests UPuZrGaseousEigenstrain, a swelling model for UPuZr metal fuel
# that allows for variation in bubble radius, as well as to the fission gas release
# model for UPuZr fuel.
#
# The swelling model is based on Eq. (13.146) in "Fundamental aspects of nuclear
# reactor fuel elements" by Olander.
#
# The fission gas that is released is based on an empirical model
# which states that once the gaseous swelling reaches a value of
# 0.33 (corresponding to a porosity of 0.24812), 80% of the fission gas so far
# produced is immediately released. After that, 100% of the gas produced is released.
# For information regarding swelling and porosity, see the above reference or the
# following reference:
# Karahan A., Modeling of Thermo Mechanical and Irradiation Behavior of Metallic
# and Oxide Fuels for Sodium Fast Reactors, Thesis, Massachusetts Institute of Technology 2009.
#
[GlobalParams]
displacements = 'disp_x'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
eigenstrain_names = 'gas_swelling_eigenstrain'
[]
[]
[AuxVariables]
[temp]
initial_condition = 1700
[]
[]
[AuxKernels]
[temp_aux]
type = FunctionAux
variable = temp
function = temp_fcn
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[]
[Functions]
[temp_fcn]
type = PiecewiseLinear
x = '0 1e7 1.1e7 3e7'
y = '100 1000 500 1000'
[]
[fsnrate_fcn]
type = PiecewiseConstant
x = '0 1e7 1.1e7 3e7'
y = '1e19 0 1e21 1e20'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
[]
[fission_rate]
type = GenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = 'fsnrate_fcn'
outputs = all
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
initial_porosity = 0.1
bubble_number_density = 1e+20
interconnection_terminating_porosity = 0.2
interconnection_initiating_porosity = 0.15
scalar = 0.5
surface_energy = 1.2
fission_gas_yield = 0.2
retained_gas_fraction = 0.2
outputs = all
eigenstrain_name = gas_swelling_eigenstrain
[]
[]
[Executioner]
type = Transient
nl_rel_tol = 1e-8
nl_abs_tol = 1e-4
num_steps = 40
dt = 5e5
[]
[Postprocessors]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[atoms]
type = ElementAverageValue
variable = atoms_per_bubble
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
[]
[gas_swell]
type = ElementAverageValue
variable = gas_swelling
[]
[radius]
type = ElementAverageValue
variable = radius
[]
[temp]
type = ElementAverageValue
variable = temp
[]
[interconnectivity]
type = ElementAverageValue
variable = interconnectivity
[]
[]
[Outputs]
csv = true
[]
(test/tests/standard_metallic_outputs_action/x441_mini_fuel_rod_no_std_blk.i)
initial_fuel_density = 15800
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
# Nominal Design Geometric Parameters (X441)
type = FuelPinMeshGenerator
clad_thickness = 0.38e-03
pellet_outer_radius = 2.195e-03
pellet_height = 3.4e-2
clad_top_gap_height = 2.7e-2
clad_gap_width = 0.345e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 1
ny_p = 5
nx_c = 1
ny_c = 5
ny_cu = 1
ny_cl = 1
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 2
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 5e3'
y = '0 44722'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 5e3'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 5e3'
y = '298.0 648.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 8.1e-3
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.195e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 343.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 0.345e-3
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
temperature = plenum_temperature
volume = plenum_volume
output = plenum_pressure
material_input = fission_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 2.195e-03
X_Zr = 0.225
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.225
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.0
block = pellet
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
interconnection_initiating_porosity = 0.23
interconnection_terminating_porosity = 0.25
anisotropic_factor = 0.4
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.0
spheat_model = savage
thcond_model = lanl
porosity = porosity
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.24
fractional_fgr_initial = 0.8
fractional_fgr_post = 1.0
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 5e3
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e3
time_t = '0 1e4'
time_dt = '1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[plenum_temperature]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[plenum_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = -1.53703e-6
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fission_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fission_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[fission_gas_released_percentage]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_produced
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_clad_creep_strain_mag]
type = ElementExtremeValue
value_type = max
block = clad
variable = effective_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 'all_pellet_exterior'
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.05 0.0'
num_points = 300
sort_by = y
outputs = 'vec1'
[]
[clad_radial_displacement]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
time_step_interval = 1
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3'
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_mini_fuel_rod_no_std_blk_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fission_gas_released_percentage max_clad_hoop_creep max_clad_creep_strain_mag max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[vec1]
type = CSV
file_base = x441_mini_fuel_rod_no_std_blk_vec1
execute_on = 'FINAL'
create_final_symlink = true
[]
[vec2]
type = CSV
file_base = x441_mini_fuel_rod_no_std_blk
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_grp_E.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_1_5D_E.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_grp_C.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(examples/metal_fuel/x441_coarse/x441_group_A_nominal.i)
initial_fuel_density = 15800
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.38e-03
pellet_outer_radius = 2.195e-03
pellet_height = 343.0e-3
clad_top_gap_height = 373.0e-3
clad_gap_width = 0.345e-3
bottom_clad_height = 7.9e-3
top_clad_height = 7.9e-3
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 3
ny_p = 40
nx_c = 2
ny_c = 40
ny_cu = 2
ny_cl = 2
pellet_quantity = 1
elem_type = QUAD4
[]
# mesh options
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = ParsedFunction
expression = 0.151e6
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 8.1e-3
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.195e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 343.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_strain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_zz
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductance = 176811.6
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 2.195e-03
X_Zr = 0.225
X_Pu_function = 0.163
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.225
initial_X_Pu = 0.163
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.163
block = pellet
temperature = temp
[]
[fuel_inlastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-2
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 5e17
interconnection_initiating_porosity = 0.29
interconnection_terminating_porosity = 0.31
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.163
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.30
fractional_fgr_initial = 0.4
fractional_fgr_post = 0.8
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-5
nl_abs_tol = 1e-7
end_time = 1e7
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 6
optimal_iterations = 20
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = -1.53703e-6
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = creep_strain_zz
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 'all_pellet_exterior'
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
time_step_interval = 1
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_group_A_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_1_5D_B.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/x441_base.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress effective_creep_strain volumetric_strain'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress effective_creep_strain hoop_creep_strain
hoop_elastic_strain hoop_strain'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_grp_B.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_1_5D_C.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(test/tests/solid_mechanics/upuzr_eigenstrains/upuzr_gaseous_eigenstrain/test.i)
# @Requirement F4.40
# This tests UPuZrGaseousEigenstrain, a swelling model for UPuZr metal fuel
# that allows for variation in bubble radius, as well as to the fission gas release
# model for UPuZr fuel.
#
# The swelling model is based on Eq. (13.146) in "Fundamental aspects of nuclear
# reactor fuel elements" by Olander.
#
# The fission gas that is released is based on an empirical model
# which states that once the gaseous swelling reaches a value of
# 0.33 (corresponding to a porosity of 0.24812), 80% of the fission gas so far
# produced is immediately released. After that, 100% of the gas produced is released.
# For information regarding swelling and porosity, see the above reference or the
# following reference:
# Karahan A., Modeling of Thermo Mechanical and Irradiation Behavior of Metallic
# and Oxide Fuels for Sodium Fast Reactors, Thesis, Massachusetts Institute of Technology 2009.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
eigenstrain_names = 'gas_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy'
[]
[]
[AuxVariables]
[temp]
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[temp]
type = ConstantAux
variable = temp
value = 1700
[]
[volumetric_strain]
type = RankTwoScalarAux
variable = volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[gas_swell_aux]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
[]
[]
[Functions]
[fission_rate_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 2.5e19'
[]
[pressure_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 1e6'
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[Pressure]
[Side]
boundary = 'right top front'
function = pressure_func
[]
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
[]
[fission_rate]
type = GenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = 'fission_rate_func'
outputs = all
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
initial_porosity = 0.1
outputs = all
output_properties = 'porosity gaseous_porosity'
bubble_number_density = 1e+20
eigenstrain_name = gas_swelling_eigenstrain
anisotropic_factor = 0.3
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
outputs = all
output_properties = 'fis_gas_prod fis_gas_rel'
[]
[]
[Executioner]
type = Transient
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-4
l_tol = 1e-5
num_steps = 70
dt = 1e6
[]
[Postprocessors]
[gas_produced]
type = ElementAverageValue
variable = fis_gas_prod
[]
[gas_released]
type = ElementAverageValue
variable = fis_gas_rel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
[]
[gas_swell]
type = ElementAverageValue
variable = gas_swell
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
exodus = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_1_5D_H.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_grp_H.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/x441_base_1_5D.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'effective_creep_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'effective_creep_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_grp_D.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_grp_F.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/solid_mechanics/upuzr_eigenstrains/ad_upuzr_gaseous_eigenstrain/test.i)
# @Requirement F4.40
# This tests UPuZrGaseousEigenstrain, a swelling model for UPuZr metal fuel
# that allows for variation in bubble radius, as well as to the fission gas release
# model for UPuZr fuel.
#
# The swelling model is based on Eq. (13.146) in "Fundamental aspects of nuclear
# reactor fuel elements" by Olander.
#
# The fission gas that is released is based on an empirical model
# which states that once the gaseous swelling reaches a value of
# 0.33 (corresponding to a porosity of 0.24812), 80% of the fission gas so far
# produced is immediately released. After that, 100% of the gas produced is released.
# For information regarding swelling and porosity, see the above reference or the
# following reference:
# Karahan A., Modeling of Thermo Mechanical and Irradiation Behavior of Metallic
# and Oxide Fuels for Sodium Fast Reactors, Thesis, Massachusetts Institute of Technology 2009.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
eigenstrain_names = 'gas_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[temp]
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fission_rate_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 2.5e19'
[]
[pressure_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 1e6'
[]
[]
[AuxKernels]
[temp]
type = ConstantAux
variable = temp
value = 1700
[]
[volumetric_strain]
type = ADRankTwoScalarAux
variable = volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[gas_swell_aux]
type = ADMaterialRealAux
variable = gas_swell
property = gas_swelling
[]
[]
[BCs]
[no_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[]
[no_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[no_z]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[]
[Pressure]
[Side]
boundary = 'right top front'
function = pressure_func
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
[]
[fission_rate]
type = ADGenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = 'fission_rate_func'
outputs = all
[]
[gas_swelling]
type = ADUPuZrGaseousEigenstrain
temperature = temp
initial_porosity = 0.1
outputs = all
output_properties = 'porosity gaseous_porosity'
bubble_number_density = 1e+20
eigenstrain_name = gas_swelling_eigenstrain
anisotropic_factor = 0.3
[]
[fission_gas_behavior]
type = ADUPuZrFissionGasRelease
fission_rate = 'fission_rate'
outputs = all
output_properties = 'fis_gas_prod fis_gas_rel'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-4
l_tol = 1e-5
num_steps = 70
dt = 1e6
dtmin = 1e6
[]
[Postprocessors]
[gas_produced]
type = ElementAverageValue
variable = fis_gas_prod
[]
[gas_released]
type = ElementAverageValue
variable = fis_gas_rel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
[]
[gas_swell]
type = ElementAverageValue
variable = gas_swell
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
exodus = true
[]
(examples/metal_fuel/uzr_densification/ebr2_2d_interpores_densification.i)
# Baseline of U10Zr DP21 pin without bond sodium in 2D.
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
temperature = Temperature
stress_free_temperature = 298.0
tangential_tolerance = 1e-4
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 50
patch_update_strategy = always
partitioner = centroid
centroid_partitioner_direction = y
[fuel_2d]
type = FuelPinMeshGenerator
clad_thickness = 3.81e-4
pellet_outer_radius = 24.4e-4
pellet_height = 250.0e-4
clad_top_gap_height = 240.0e-4
clad_gap_width = 1.0e-4
bottom_clad_height = 80.0e-4
top_clad_height = 80.0e-4
clad_bot_gap_height = 10.0e-4
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 20
ny_p = 150
nx_c = 4
ny_c = 150
ny_cu = 8
ny_cl = 8
pellet_quantity = 1
elem_type = QUAD4
[]
[]
[Variables]
[Temperature]
initial_condition = 298.0
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[energy_density]
order = CONSTANT
family = MONOMIAL
block = pellet
initial_condition = 0.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 109989115 110376000'
y = '0 45000 45000 0' # LHGR (not power density)
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 1.5552e7'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 2e5 109989115 110376000'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1.0
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.50e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 100.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[fission_rate_scale_factor]
type = ParsedFunction
expression = 1.670784726E+15
# 1/cross_sectional_area_of_fuel/energy_per_fission =
# Remember to remove hole area, when there are some
[]
[fission_history]
type = CompositeFunction
functions = 'power_history fission_rate_scale_factor'
# This converts it to a fission rate density.
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz hoop_stress'
[fuel]
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
additional_generate_output = 'volumetric_strain'
[]
[clad]
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
additional_generate_output = 'hoop_creep_strain hoop_elastic_strain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = Temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = Temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = FissionRateHeatSource
variable = Temperature
fission_rate = 'fission_rate'
extra_vector_tags = 'ref'
block = pellet
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[time_integral_fission]
type = VariableTimeIntegrationAux
block = pellet
variable = energy_density
variable_to_integrate = fission_rate
coefficient = 3.2e-11 # energy_per_fission
order = 2
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = Temperature
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 0.1e-3
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = Temperature
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5000.0 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 0.0069 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
outputs = all
output_properties = 'coolant_temperature coolant_channel_htc'
[]
[]
[Materials]
[fission_rate]
type = GenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = fission_history
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
block = pellet
density = ${initial_fuel_density}
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.0
block = pellet
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
eigenstrain_name = fuel_thermal_strain
block = pellet
thermal_expansion_coeff = 1.18e-5
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.3
bubble_number_density = 8.61e17
interconnection_initiating_porosity = 0.26
interconnection_terminating_porosity = 0.28
anisotropic_factor = 0.0
densification = true
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.0
spheat_model = savage
thcond_model = lanl
porosity = porosity
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.27
fractional_fgr_initial = 0.252
fractional_fgr_post = 0.801
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 3e13 # This was recommended in FastNeutronFluxAux for LHGR
# However, this gives 1.35e18 which is not what AL used
# before of 2.47e19. Not sure which is right.
calculate_fluence = true
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors # which is just 1
outputs = all
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = Temperature
max_increment = 50
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
end_time = 110376000 # 3.5 years. If need faster run, then 1 year should be fine
dtmin = 10
dtmax = 5e6
num_steps = 5
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 1.54656e7 1.5552e7'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = Temperature
execute_on = 'initial linear'
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = Temperature
[]
[peak_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = Temperature
[]
[peak_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = Temperature
block = clad
[]
[max_clad_temp]
type = ElementExtremeValue
variable = Temperature
value_type = max
block = clad
[]
[peak_clad_temp]
type = TimeExtremeValue
value_type = max
postprocessor = max_clad_temp
[]
[avg_fuel_temp]
type = ElementAverageValue
variable = Temperature
block = pellet
[]
[max_fuel_temp]
type = ElementExtremeValue
variable = Temperature
value_type = max
block = pellet
[]
[peak_fuel_temp]
type = TimeExtremeValue
value_type = max
postprocessor = max_fuel_temp
[]
[peak_coolant_temperature]
type = ElementExtremeValue
variable = coolant_temperature
value_type = max
block = clad
outputs = all
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[max_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = Temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = Temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = Temperature
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_burnup]
type = ElementExtremeValue
value_type = max
block = pellet
variable = burnup
[]
[min_burnup]
type = ElementExtremeValue
value_type = min
block = pellet
variable = burnup
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_rel
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_prod
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 11
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 10
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 3
[]
[etot_bison]
type = ElementIntegralVariablePostprocessor
block = pellet
variable = energy_density
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
color = true
exodus = true
perf_graph = true
csv = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y Temperature'
show_var_residual_norms = true
[]