- axial_relocation_objectName of the AxialRelocationUserObject that determines whether the fuel has crumbled.
C++ Type:UserObjectName
Controllable:No
Description:Name of the AxialRelocationUserObject that determines whether the fuel has crumbled.
- 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
- 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
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
- crumbling_scale_factor0.0001Scaling factor to apply to the Young's modulus in layers that have crumbled during axial relocation.
Default:0.0001
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor to apply to the Young's modulus in layers that have crumbled during axial relocation.
- 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.
- densityInitial fuel density
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Initial fuel density
- elasticity_tensor_prefactorOptional function to use as a scalar prefactor on the elasticity tensor.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Optional function to use as a scalar prefactor on the elasticity tensor.
- matpro_poissons_ratioFalseFlag for using MATPRO to compute Poisson's ratio
Default:False
C++ Type:bool
Controllable:No
Description:Flag for using MATPRO to compute Poisson's ratio
- matpro_youngs_modulusFalseFlag for using MATPRO to compute Young's modulus
Default:False
C++ Type:bool
Controllable:No
Description:Flag for using MATPRO to compute Young's modulus
- oxygen_to_metal_ratio2Oxygen to metal ratio
Default:2
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Oxygen to metal ratio
- po2_fraction0Weight fraction of PO2
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Weight fraction of PO2
- temperatureCoupled temperature
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled temperature
- youngs_modulus_scale_factor1Scaling factor to apply to the Young's modulus.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor to apply to the Young's modulus.
UO2ElasticityTensor
Either provides constant elasticty constants for UO2 fuel or calculates the Young's modulus and/or the Poisson's ratio for UO2 fuel using Matpro relations as a function of temperature, burnup, and fuel composition.
Description
This class, UO2ElasticityTensor, determines the Young's modulus and Poisson's ratio of UO fuel: the user can select whether to use the predetermined constant values for UO or can select to use MATPRO functions to calculate changing values for these elastic constants.
Constant Elastic Constants
The preset elastic constant values are given in Eq. (1). The use of these constant values is the default behavior for this class. (1) Both the Young's modulus and the Poisson's ratio are held constant for the full operating temperature range of the material if the MATPRO options are not activated.
MATPRO Calculated Variable Constants
If the user selects to use the MATPRO options, the MATPRO (Siefken et al., 2001) functions felmod and fpoir are used to calculate the Young's modulus and Poisson's ratio, respectively, as a function of temperature (K), initial fuel density ratio (actual to theoretical), oxygen-to-metal ratio of the fuel (atoms O to atoms metal), and the weight fraction of PuO2 content in the fuel.
Example Input Syntax
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[elasticity_tensor]
type = UO2ElasticityTensor<<<{"description": "Either provides constant elasticty constants for UO2 fuel or calculates the Young's modulus and/or the Poisson's ratio for UO2 fuel using Matpro relations as a function of temperature, burnup, and fuel composition.", "href": "UO2ElasticityTensor.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '1 2 3 4 5 6 7'
temperature<<<{"description": "Coupled temperature"}>>> = temp
matpro_youngs_modulus<<<{"description": "Flag for using MATPRO to compute Young's modulus"}>>> = true
matpro_poissons_ratio<<<{"description": "Flag for using MATPRO to compute Poisson's ratio"}>>> = false
[]
[](test/tests/solid_mechanics/uo2_mechanics/uo2_creep_matpro_ym.i)Input 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
Input Files
- (test/tests/axial_relocation/crumbled_elasticity.i)
- (examples/spent_fuel/full_life_cycle_coarse/discrete.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK5/FK05.i)
- (test/tests/example_problem_test/example_problem_test.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02.i)
- (test/tests/solid_mechanics/uo2_mechanics/uo2_creep_matpro_pr.i)
- (assessment/LWR/validation/HbepR1/analysis/H8364/HbepR1_H8364.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFL009/BFL009.i)
- (assessment/LWR/benchmark/RIA_benchmark/analysis/RIA_benchmark.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM043/BFM043.i)
- (assessment/LWR/validation/IFA_597_3/analysis/rod_7/IFA_597_rod7_frictionless.i)
- (examples/axial_relocation/layered2D/single_balloon/single_balloon.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK9/FK09.i)
- (examples/axial_relocation/layered2D/single_balloon/single_balloon_translated.i)
- (assessment/LWR/validation/Super_Ramp/analysis/Super_Ramp_Base.i)
- (assessment/LWR/validation/IFA_636/analysis/IFA_636_solid_swell/IFA_636_solid_swell.i)
- (assessment/LWR/validation/Super_Ramp/analysis/PK62/PK62_weighted_gap_VCP.i)
- (examples/axial_relocation/layered2D/twin_balloon/twin_balloon.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM034/BFM034.i)
- (assessment/LWR/validation/IFA_431/analysis/IFA_431_General.i)
- (test/tests/ifba_he_production/ifba_only_template.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2c/27_2c.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM156/BFM156.i)
- (test/tests/fuelrodlinevaluesampler/example_problem_smeared_test2.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK8/FK08.i)
- (test/tests/ifba_he_production/ifba_examp_template.i)
- (assessment/LWR/validation/IFA_535/analysis/rod_809/IFA_535_rod_809.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE019/UFE019.i)
- (assessment/LWR/validation/IFA_535/analysis/rod_812/IFA_535_rod_812.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM073/BFM073.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFL031/BFL031.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/RIA/REP_Na_4_RIA.i)
- (assessment/LWR/validation/HbepR1/analysis/A184/HbepR1_A184.i)
- (assessment/LWR/validation/IFA_432/analysis/IFA_432_Base.i)
- (assessment/LWR/validation/IFA_597_3/analysis/rod_8/IFA_597_rod8_frictionless.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2b/27_2b.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE067/UFE067.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03_ccm.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK6/FK06.i)
- (test/tests/multi_sample_action/test2.i)
- (assessment/LWR/validation/IFA_534/analysis/IFA_534_Base.i)
- (test/tests/solid_mechanics/uo2_mechanics/uo2_creep_matpro_none.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFG092/BFG092.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFJ027/BFJ027.i)
- (test/tests/fuelrodlinevaluesampler/example_problem_smeared_test.i)
- (assessment/LWR/validation/HBEP/analysis/BK365/HBEP_BK365.i)
- (assessment/LWR/validation/IFA_515_RodA1/analysis/IFA515.i)
- (test/tests/standard_lwr_outputs_action/pellet_only_ad.i)
- (assessment/LWR/validation/OSIRIS_J12/analysis/OSIRIS_J12.i)
- (assessment/LWR/validation/HbepR1/analysis/A364/HbepR1_A364.i)
- (test/tests/standard_lwr_outputs_action/pellet_only.i)
- (assessment/LWR/validation/Riso_Base_sub.i)
- (assessment/LWR/validation/FUMEXII_Regate/analysis/discrete/Regate_discrete.i)
- (test/tests/solid_mechanics/uo2_mechanics/uo2_creep_matpro_ym.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2d/27_2d.i)
- (assessment/LWR/validation/IFA_519/analysis/IFA_519_Base.i)
- (assessment/LWR/validation/IFA_535/analysis/rod_810/IFA_535_rod_810.i)
- (assessment/LWR/validation/IFA_636/analysis/IFA_636/IFA_636.i)
- (assessment/LWR/validation/HBEP/analysis/BK363/HBEP_BK363.i)
- (assessment/LWR/validation/IFA_597_3/analysis/rod_7/IFA_597_rod7_glued.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_2/IFA_650_2.i)
- (examples/axial_relocation/layered2D/single_balloon/single_balloon_two_rods.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/REP_Na_4.i)
- (assessment/LWR/validation/IFA_535/analysis/rod_811/IFA_535_rod_811.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BEN013/BEN013.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM071/BFM071.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK4/FK04.i)
- (assessment/LWR/validation/OSIRIS_H09/analysis/OSIRIS_H09.i)
- (examples/Burnup_profile_displaced_mesh/RadialProfileSampler.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01.i)
- (test/tests/ifba_he_production/fill_gas_xenon_w_ifba.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK7/FK07.i)
- (assessment/LWR/validation/HBEP/analysis/BK370/HBEP_BK370.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM070/BFM070.i)
- (assessment/LWR/validation/FUMEXII_Regate/analysis/Regate_smeared.i)
References
- LJ Siefken, EW Coryell, EA Harvego, and JK Hohorst.
SCDAP/RELAP5/MOD3.3 Code Manual: MATPRO-A Library of Materials Properties for Light-Water-Reactor Accident Analysis.
Technical Report NUREG/CR-6150, Vol.4, Rev.2, U.S. Nuclear Regulatory Commission, 2001.[BibTeX]
@TECHREPORT{matpro, author = "Siefken, LJ and Coryell, EW and Harvego, EA and Hohorst, JK", title = "{SCDAP/RELAP5/MOD3.3} {C}ode {M}anual: {MATPRO}-{A} {L}ibrary of {M}aterials {P}roperties for {L}ight-{W}ater-{R}eactor {A}ccident {A}nalysis", institution = "U.S. Nuclear Regulatory Commission", year = "2001", number = "NUREG/CR-6150, Vol.4, Rev.2" }
(test/tests/solid_mechanics/uo2_mechanics/uo2_creep_matpro_ym.i)
# Tests material model UO2CreepUpdate, which computes the combined thermal
# and irradiation creep for UO2 fuel.
#
# The test is a single element unit cube which is pulled in the y direction
# with a pressure of 5.0e7 Pa. The temperature is ramped up and the fission
# rate within the cube is constant.
# MATPRO is used to calculate Young's modulus. Young's modulus decreases with
# temperature, and the displacements increase accordingly.
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 300.0
scaling = 1e7
[]
[]
[Functions]
[top_pull]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[power]
type = ParsedFunction
expression = 2.5e4
[]
[temp]
type = ParsedFunction
expression = 300+1.2e3*t
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = FINITE
incremental = true
add_variables = true
generate_output = 'stress_yy'
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = '1 2 3 4 5 6 7'
order = FIRST
family = LAGRANGE
rod_ave_lin_pow = power
num_radial = 11
num_axial = 2
a_lower = 0
a_upper = .00041
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1
rpf_active = false
[]
[]
[BCs]
[u_top_pull]
type = Pressure
variable = disp_y
boundary = 11
factor = -0.5e8
function = top_pull
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[u_yz_fix]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[u_xy_fix]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[temp]
type = FunctionDirichletBC
variable = temp
boundary = '9 11'
function = temp
[]
[]
[Materials]
[elasticity_tensor]
type = UO2ElasticityTensor
block = '1 2 3 4 5 6 7'
temperature = temp
matpro_youngs_modulus = true
matpro_poissons_ratio = false
[]
[creep]
type = UO2CreepUpdate
block = '1 2 3 4 5 6 7'
temperature = temp
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
a7 = 3.72264e-35
q3 = 2617
burnup_function = burnup
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'creep'
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = HeatConductionMaterial
block = '1 2 3 4 5 6 7'
specific_heat = 1.0
thermal_conductivity = 100.
[]
[density]
type = StrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10431.0
[]
[]
[Dampers]
[maxY]
type = MaxIncrement
variable = disp_y
max_increment = 1e-4
[]
[maxTemp]
type = MaxIncrement
variable = temp
max_increment = 120.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 10
nl_rel_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 1
dt = 1e-1
[Predictor]
type = SimplePredictor
scale = 1.0
[]
[]
[Outputs]
exodus = true
[]
(test/tests/axial_relocation/crumbled_elasticity.i)
# The purpose of this test is to verify the scaling of the Young's modulus
# in the fuel in the event that an axial layer has crumbled (accommodated
# additional mass) during axial relocation in Layered 1D. The scaling is used
# to make movement of the fuel into point-wise contact with the clad upon
# crumbling easier.
#
# In this test the default `crumbling_scale_factor` of 1.0e-4 is selected.
# Five layers are included in the analysis. The crumbling of the middle layer
# (layer 2 since indexing of the layers begins at zero) occurs at the end of
# the simulation. Since only this layer is deemed crumbled it is the only
# layer that has it's Young's modulus scaled. The default Young's modulus of
# UO2 when not using the Matpro options is 2.0e11. Therefore, after crumbling
# the Young's modulus in this layer is 2.0e7.
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = disp_x
temperature = temperature
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
elem_type = EDGE2
slices_per_block = 5
pellet_outer_radius = 4.5e-3
fuel_height = 0.5
include_plenum = false
nx_p = 10
clad_gap_width = 0.0
pellet_mesh_density = customize
pellet_bottom_coor = 0.0
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 1200
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[strain_yy_0]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 'x*100.0/4.275'
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '15000 15000'
[]
[clad_displacement_function]
type = ParsedFunction
expression = '2.0e-5 * t * sin(pi * y / 0.5)'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[gps_fuel]
add_scalar_variables = true
add_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = fuel
eigenstrain_names = 'axial_relocation_eigenstrain'
decomposition_method = EigenSolution
mesh_generator = layered1D_mesh
[]
[gps_clad]
add_scalar_variables = true
add_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = clad
decomposition_method = EigenSolution
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
gap_conductivity = 1
[]
[]
[BCs]
[temperature]
type = DirichletBC
boundary = '10 12 5 2'
variable = temperature
value = 1200
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[inner_clad_displacement]
type = FunctionDirichletBC
variable = disp_x
boundary = '5'
function = clad_displacement_function
[]
[]
[Materials]
[fuel_thermal]
type = HeatConductionMaterial
block = fuel
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
density = 10431.0
block = fuel
crumbling_scale_factor = 0.0001
axial_relocation_object = axial_relocation
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[]
[AxialRelocation]
[reloc]
rod_ave_lin_pow = power
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy_0
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered1D_mesh
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
num_steps = 14
dt = 2
[]
[Outputs]
exodus = true
hide = 'penetration'
[]
(examples/spent_fuel/full_life_cycle_coarse/discrete.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
# Modifying the base model to simulate the complete fuel life cycle from
# irradiation through dry storage
# Irradiation Time 3 years (6% burnup, ~ 60 MWd/kgU)
# Spent Fuel Pool 3 years
# Vacuum Drying 24 hours
# Dry Cask Storage (DCSS) 5 years
#
irrad_ramp = 8.64e4
irrad_end = 9.46944e7
cool_start = 9.47808e7
cool_end = 4.101408e8
dry_start = 4.101409e8
# dry_end = 4.102272e8 # 24 hour drying
dry_end = 4.101696e8 # 8 hour drying
# store_end = 5.679072e8 # 5 yrs storage
store_end = 4.732416e8 # 2 yrs storage
#
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 20 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = coarse10_rz.e
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temp]
initial_condition = 298.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[max_fission_rate]
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear
x = '0 ${irrad_ramp} ${irrad_end} ${cool_start}'
y = '0 25e3 25e3 0'
[]
[axial_peaking_factors]
type = PiecewiseLinear
axis = y
x = '0.00324 0.0151 0.10998 0.12184'
y = '1.0 1.0 1.0 1.0'
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[coolant_pressure]
type = PiecewiseLinear
# ---- irrad ---- --- pool --- - storage -
x = '0 ${irrad_ramp} ${irrad_end} ${cool_start} ${cool_end} ${dry_start} ${dry_end} ${store_end}'
y = '1e5 15.5e6 15.5e6 2e5 2e5 1e5 1e5 1e5'
[]
[coolant_temperature]
type = PiecewiseLinear
# ---- irrad ---- --- pool --- - storage -
x = '0 ${irrad_ramp} ${irrad_end} ${cool_start} ${cool_end} ${dry_start} ${dry_end} ${store_end}'
y = '300 587 587 308 308 308 308 308'
[]
[coolant_htc]
type = PiecewiseLinear
# From CoolantChannel model, HTC falls from 37000 to 22000 as the oxide grows.
# Coolant flow is maintained until after CZP, then 1 more day. Flow is then reduced until the
# correct htc for natural convection is achieved (~400 W/m2-K).
# Drying is handled by DryCaskHeatFlux.
x = '0 ${irrad_ramp} 7e7 ${irrad_end} ${cool_start} ${cool_end} ${dry_start} ${dry_end} ${store_end}'
y = '37e3 37e3 25e3 22e3 400 400 0 0 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
fission_rate = fission_rate
decay_heat_function = decay_heat_function
max_fission_rate = max_fission_rate
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[max_fission_rate]
type = MaxFissionRateAux
variable = max_fission_rate
block = pellet_type_1
fission_rate = fission_rate
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = nonlinear
[]
[creep_strain_mag]
type = MaterialRealAux
block = clad
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 1.0
function = coolant_pressure
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[convective_clad_surface] # apply convective boundary to clad outer surface
type = ConvectiveFluxFunction
boundary = '1 2 3'
variable = temp
coefficient = 'coolant_htc'
T_infinity = 'coolant_temperature'
[]
[cask_cooling]
type = DryCaskHeatFlux
variable = temp
boundary = '1 2 3'
bwr_or_pwr = 'pwr'
fill_gas = 'helium'
ambient_temperature = 298
cask_effective_htc = 3.1 # W/K from each assembly to ambient
start_time = ${cool_end}
drying_duration = 86400
[]
[]
[Controls]
[DCSS]
type = TimePeriod
disable_objects = 'BCs/convective_clad_surface'
start_time = ${cool_end}
end_time = 1e9
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 'pellet_type_1'
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[ZryOxidation]
type = ZryOxidation
boundary = '2'
clad_inner_radius = 0.00418
clad_outer_radius = 0.00474
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
outputs = all
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
initial_fuel_density = 10431.0
gas_swelling_model_type = SIFGRS
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1'
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160e-6
burnup_relocation_stop = 0.3
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 'clad'
[]
[clad_creep_model]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 'clad'
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 298.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_growth_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
# PETSC options:
# petsc_options
# petsc_options_iname
# petsc_options_value
#
# controls for linear iterations
# l_max_its
# l_tol
#
# controls for nonlinear iterations
# nl_max_its
# nl_rel_tol
# nl_abs_tol
#
# time control
# start_time
# dt
# optimal_iterations
# iteration_window
# linear_iteration_ratio
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 35
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -200
n_startup_steps = 1
end_time = ${store_end}
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 20
iteration_window = 6
time_t = '0 ${irrad_ramp} ${irrad_end} ${cool_start} ${cool_end} ${dry_start} ${dry_end} ${store_end}'
time_dt ='1e3 1e4 1e3 100 100 100 100 100'
growth_factor = 1.5
cutback_factor = .6
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = linear
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[_dt] # time step
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
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[decay_heat_function]
type = DecayHeatFunction
time_at_shutdown = ${cool_start}
table_or_sum = sum
[]
[peak_clad_temp]
type = NodalExtremeValue
variable = temp
block = 'clad'
execute_on = 'timestep_end'
[]
[max_clad_hoop_stress]
type = ElementExtremeValue
variable = stress_zz
block = 'clad'
value_type = 'max'
execute_on = 'timestep_end'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[peak_oxide_thickness]
type = ElementExtremeValue
variable = oxide_thickness
block = 'clad'
value_type = 'max'
execute_on = 'timestep_end'
[]
[]
[VectorPostprocessors]
[clad_surf_props]
type = LineValueSampler
variable = 'oxide_thickness temp stress_zz'
start_point = '0.00467 0.0001 0'
end_point = '0.00467 0.1279 0'
num_points = 100
sort_by = y
outputs = 'outfile_1'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[chkfile]
type = CSV
show = 'peak_clad_temp peak_oxide_thickness max_clad_hoop_stress'
execute_on = final
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK5/FK05.i)
# This file was created using BIF with the following inputs:
# FK05/FK05.var - md5sum: 789d603cfbdaaeb2625ea98056214f6f
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.5e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.20e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/example_problem_test/example_problem_test.i)
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = 2_pellet_discrete.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain
fuel_relocation_eigenstrain fuel_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 0.987775
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'initial timestep_end'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
initial_porosity = 0.0
temperature = temp
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = pellet_type_1
stress_free_temperature = 295
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[hotpressing]
type = UO2HotPressingCreepUpdate
block = pellet_type_1
burnup_function = burnup
initial_grain_radius = 10.0e-6
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = ' hotpressing'
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = 'pin_geometry'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000 #TM default value
burnup_relocation_stop = 1.e20
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 300
[]
[]
[Preconditioning]
[SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-pc_type_asm'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-5 #8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
start_time = -200
num_steps = 2
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 6
iteration_window = 2
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
component = 1
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[nonlinear_its] # number of nonlinear iterations at each timestep
type = NumNonlinearIterations
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372 # rod height
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
exodus = true
color = false
[console]
type = Console
output_linear = true
max_rows = 25
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02.i)
# This file was created using BIF with the following inputs:
# FK02.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.03481
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[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
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/solid_mechanics/uo2_mechanics/uo2_creep_matpro_pr.i)
# Tests material model UO2CreepUpdate, which computes the combined thermal
# and irradiation creep for UO2 fuel.
#
# The test is a single element unit cube which is pulled in the y direction
# with a pressure of 5.0e5 Pa. The temperature is ramped up and the fission
# rate within the cube is constant.
# MATPRO is used to calculate Poisson's ratio.
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 300.0
scaling = 1e7
[]
[]
[Functions]
[top_pull]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[power]
type = ParsedFunction
expression = 2.5e4
[]
[temp]
type = ParsedFunction
expression = 300+1.2e3*t
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
block = '1 2 3 4 5 6 7'
add_variables = true
strain = FINITE
generate_output = 'stress_yy'
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = '1 2 3 4 5 6 7'
order = FIRST
family = LAGRANGE
rod_ave_lin_pow = power
num_radial = 11
num_axial = 2
a_lower = 0
a_upper = .00041
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1
rpf_active = false
[]
[]
[BCs]
[u_top_pull]
type = Pressure
variable = disp_y
boundary = 11
factor = -0.5e6
function = top_pull
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[u_yz_fix]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[u_xy_fix]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[temp]
type = FunctionDirichletBC
variable = temp
boundary = '9 11'
function = temp
[]
[]
[Materials]
[elasticity_tensor]
type = UO2ElasticityTensor
block = '1 2 3 4 5 6 7'
temperature = temp
matpro_youngs_modulus = false
matpro_poissons_ratio = true
[]
[creep]
type = UO2CreepUpdate
block = '1 2 3 4 5 6 7'
temperature = temp
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
burnup_function = burnup
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'creep'
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = HeatConductionMaterial
block = '1 2 3 4 5 6 7'
specific_heat = 1.0
thermal_conductivity = 100.
[]
[density]
type = StrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10431.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
end_time = 1
dt = 1e-1
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/HbepR1/analysis/H8364/HbepR1_H8364.i)
initial_fuel_density = 10490
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
temperature = temp
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.95e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .0049695
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.68
ny_cl = 3
clad_top_gap_height = 0.244325
clad_gap_width = 1.005e-4
elem_type = QUAD8
[]
patch_size = 100 # 1000 lowering this and setting the strategy to auto will reduce the amount of memory required to run the job.
patch_update_strategy = iteration #auto
partitioner = centroid # this will help with run time
centroid_partitioner_direction = y # this will help with run time
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 273 #K
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.148e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseConstant
data_file = H8364-power.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = H8364-axial-profile.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '-100 0 166323600 166327200' #
y = '0.014429 1 1 0.014429'
[]
[temp_ramp]
type = PiecewiseBilinear
data_file = H8364-axial-tempprofile.csv
scale_factor = 1
axis = 1
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress hydrostatic_stress'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz creep_strain_xx
creep_strain_xy creep_strain_yy vonmises_stress creep_strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 3 # fission rate applied to the fuel (block 2) only
fission_rate = fission_rate # coupling to the fission_rate aux variable
extra_vector_tags = 'ref'
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.6727e13 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.68478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0049695 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0139 .9861 0 0 0 0'
RPF = RPF
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 1.1e-6
roughness_secondary = 3.5e-7
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 # Pa
function = pressure_ramp
[]
[]
[coolant_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = temp_ramp
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 0.375e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
initial_porosity = 0.04
temperature = temp
burnup = burnup
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00507
clad_outer_radius = 0.005865
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 273
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
diameter = 0.009939 # fuel pellet diameter in meters
diametral_gap = 100.5e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = .049 # turn off relocation
relocation_activation1 = 5000
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 273
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10490
total_densification = .0043
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[UserObjects]
[integral_burnup] # Added the computation of the average fuel rod burnup
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 166327200
dtmax = 1e6
dtmin = 0.1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
# Clad postprocessor (The rest are created with StandardLWRFuelRodOutputs)
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFL009/BFL009.i)
################################################################################
#
# Description: Calvert Cliffs BFL009
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFL009_power.csv
# axial peaking factor file BFL009_axial_peaking.csv
# flux boundary condition file BFL009_fast_flux.csv
#
################################################################################
initial_fuel_density = 10460.45
[GlobalParams]
density = ${initial_fuel_density} #95.332 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = BFL009_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFL009_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFL009_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 167148794 167149154'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 167148794 167149154'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFL009_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0013589
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '9 13'
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10460.45
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 273
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 167149154
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_2984]
type = NodalVariableValue
nodeid = 2983
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/benchmark/RIA_benchmark/analysis/RIA_benchmark.i)
# RIA Benchmark - Case 5 with full output in CSV
initial_fuel_density = 10531
[GlobalParams]
density = ${initial_fuel_density} # UO2 with 4% porosity
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_iterations = 20
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 10
ny_p = 40
ny_cu = 3
ny_c = 40
ny_cl = 3
nx_c = 5
clad_thickness = 5.7e-4
pellet_outer_radius = 4.13e-3
pellet_quantity = 10
pellet_height = 1e-2
clad_top_gap_height = 0.0186616493139897
clad_bot_gap_height = 0.0186616493139897
clad_gap_width = 0.0
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.15
[]
[]
[AuxVariables]
[plastic_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[clad_water_htc]
order = CONSTANT
family = MONOMIAL
[]
[clad_water_flux]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0
[]
[]
[Functions]
[power_history] # triangular pulse power history defined by benchmark
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 0
10 0
20 0
30 0
40 0
50 0
60 0
70 0
80 0
90 0
100 0
100.0003 0.01
100.0006 0.02
100.0009 0.03
100.030 1
100.060 0
100.081 0
100.082 0
100.083 0
100.084 0
100.085 0
100.086 0
100.087 0
100.088 0
100.089 0
100.090 0
100.091 0
100.092 0
100.093 0
100.094 0
100.095 0
100.096 0
100.097 0
100.098 0
100.099 0
100.100 0
100.105 0
100.110 0
100.115 0
100.120 0
100.125 0
100.130 0
100.135 0
100.140 0
100.145 0
100.150 0
100.155 0
100.160 0
100.165 0
100.170 0
100.175 0
100.180 0
100.185 0
100.190 0
100.195 0
100.200 0
100.210 0
100.220 0
100.230 0
100.240 0
100.250 0
100.260 0
100.270 0
100.280 0
100.290 0
100.300 0
100.310 0
100.320 0
100.330 0
100.340 0
100.350 0
100.360 0
100.370 0
100.380 0
100.390 0
100.400 0
100.410 0
100.420 0
100.430 0
100.440 0
100.450 0
100.460 0
100.470 0
100.480 0
100.490 0
100.500 0
100.510 0
100.520 0
100.530 0
100.540 0
100.550 0
100.560 0
100.570 0
100.580 0
100.590 0
100.600 0
100.610 0
100.620 0
100.630 0
100.640 0
100.650 0
100.660 0
100.670 0
100.680 0
100.690 0
100.700 0
100.710 0
100.720 0
100.730 0
100.740 0
100.750 0
100.760 0
100.770 0
100.780 0
100.790 0
100.800 0
100.810 0
100.820 0
100.830 0
100.840 0
100.850 0
100.860 0
100.870 0
100.880 0
100.890 0
100.900 0
100.910 0
100.920 0
100.930 0
100.940 0
100.950 0
100.960 0
100.970 0
100.980 0
100.990 0
101.000 0
101.100 0
101.200 0
101.300 0
101.400 0
101.500 0
101.600 0
101.700 0
101.800 0
101.900 0
102.000 0
102.100 0
102.200 0
102.300 0
102.400 0
102.500 0
102.600 0
102.700 0
102.800 0
102.900 0
103.000 0
103.100 0
103.200 0
103.300 0
103.400 0
103.500 0
103.600 0
103.700 0
103.800 0
103.900 0
104.000 0
104.100 0
104.200 0
104.300 0
104.400 0
104.500 0
104.600 0
104.700 0
104.800 0
104.900 0
105.000 0
105.100 0
105.200 0
105.300 0
105.400 0
105.500 0
105.600 0
105.700 0
105.800 0
105.900 0
106.000 0
106.100 0
106.200 0
106.300 0
106.400 0
106.500 0
106.600 0
106.700 0
106.800 0
106.900 0
107.000 0
107.100 0
107.200 0
107.300 0
107.400 0
107.500 0
107.600 0
107.700 0
107.800 0
107.900 0
108.000 0
108.100 0
108.200 0
108.300 0
108.400 0
108.500 0
108.600 0
108.700 0
108.800 0
108.900 0
109.000 0
109.100 0
109.200 0
109.300 0
109.400 0
109.500 0
109.600 0
109.700 0
109.800 0
109.900 0
110 0
111 0
112 0
113 0
114 0
115 0
116 0
117 0
118 0
119 0
120 0
130 0
140 0
150 0
160 0
170 0
180 0
190 0
200 0'
[]
[pressure_ramp] # inlet coolant pressure evolution
type = PiecewiseLinear
scale_factor = 1.0
xy_data = '0 1e5
50 1.55e7
200 1.55e7'
[]
[temp_ramp] # inlet coolant temperature evolution
type = PiecewiseLinear
scale_factor = 1.0
xy_data = '0 293.15
50 553.15
200 553.15'
[]
[Fuel_CTE_function] #Fuel CTE as a function of temp from MATPRO data
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 1.00005E-05
300 1.00005E-05
350 1.00005E-05
400 1.00015E-05
450 0.000010004
500 1.00091E-05
550 0.000010018
600 1.00321E-05
650 1.00522E-05
700 1.00791E-05
750 1.01131E-05
800 1.01544E-05
850 1.02028E-05
900 1.02577E-05
950 1.03187E-05
1000 0.000010385
1050 0.000010456
1100 1.05308E-05
1150 1.06087E-05
1200 1.06891E-05
1250 1.07712E-05
1300 1.08545E-05
1350 1.09384E-05
1400 1.10224E-05
1450 1.11061E-05
1500 1.11891E-05
1550 1.12712E-05
1600 1.13519E-05
1650 1.14311E-05
1700 1.15087E-05
1750 1.15844E-05
1800 0.000011658
1850 1.17297E-05
1900 1.17991E-05
1950 1.18664E-05
2000 1.19314E-05
2050 1.19942E-05
2100 1.20547E-05
2150 0.000012113
2200 1.21691E-05
2250 1.22229E-05
2300 1.22746E-05
2350 1.23242E-05
2400 1.23717E-05'
[]
[Clad_CTE_function] #Cladding CTE as a function of temp from MATPRO data
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 0.00000495
300 0.00000495
350 0.00000495
400 0.00000495
450 0.00000495
500 0.00000495
550 0.00000495
600 0.00000495
650 0.00000495
700 0.00000495
750 0.00000495
800 0.00000495
850 0.00000495
900 0.00000495
950 0.00000495
1000 0.00000495
1050 0.00000495
1083 0.00000495
1100 4.76997E-06
1150 3.60423E-06
1200 2.2888E-06
1244 1.77904E-06
1250 1.81579E-06
1300 0.00000221
1350 2.56667E-06
1400 2.89091E-06
1450 3.18696E-06
1500 3.45833E-06
1550 0.000003708
1600 3.93846E-06
1650 4.15185E-06
1700 0.00000435
1750 4.53448E-06
1800 4.70667E-06
1850 4.86774E-06
1900 5.01875E-06
1950 5.16061E-06
2000 5.29412E-06
2050 0.00000542
2098 5.53426E-06'
[]
[YS_function] #Yield Strength as a function of temp from PNNL report
#Cold work = 0.5, Average oxygen concentration = 0, fast neutron fluence = 0
#Assumed constant strain rate of 0.01
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 593425301.8
300 593425301.8
320 580674456.3
340 567078477.7
360 552695674.7
380 537584819.6
400 521805085.5
420 505428587.7
440 489716889.1
460 475582155.5
480 462727514.7
500 450878059.4
520 439778204.9
540 429188702.8
560 418888211.8
580 408677370.3
600 398362281.7
620 387769321.2
640 376741767.7
660 365140974.9
680 352847834.1
700 339764457.8
720 325816004.1
740 310952563.6
760 271786784.1
780 222194537.8
800 185377726.5
820 154173430.2
840 130199325.7
860 111396817.2
880 96362607.14
900 84120129.15
920 73977044.17
940 65434357.46
960 58127235.93
980 51785717.25
1000 46208150.84
1020 41242936.22
1040 36775756.82
1060 32720505.36
1080 29012718.16
1090 27273687.16
1100 26355024.23
1120 22442026.84
1140 18753365.2
1160 15296510.38
1180 12079785.07
1200 9113113.474
1220 6409493.205
1240 3988344.555
1250 2893569.671
1255 2377978.33
1260 2323366.884
1280 2116912.621
1300 1928475.009
1320 1756577.201
1340 1599841.384
1360 1456985.125
1380 1326817.541
1400 1208235.326'
[]
#############################
[cp_factor]
type = ConstantFunction
value = 1.0
[]
[total_energy] #total Joules of energy injected into fuel during the RIA pulse
type = ConstantFunction
value = 30000
[]
[FWMH] #Full Width at Mid Height of RIA pulse
type = ConstantFunction
value = 0.03
[]
[fuel_OR] #Fuel outer radius
type = ConstantFunction
value = 0.00413
[]
##########################
[heat_generation] #A factor to multiply the pulse history to get desired energy/gram into the fuel
type = ParsedFunction
expression = 'energy / (pi * fuelradius * fuelradius * height) / pulsewidth'
symbol_names = 'height energy pulsewidth fuelradius'
symbol_values = '0.1 zz_total_energy zz_FWMH zz_fuel_OR'
[]
[power_ramp] #Transient power pulse applied to the fuel as a uniform heat generation term (W/m^3)
type = CompositeFunction
functions = 'power_history heat_generation'
scale_factor = 1.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_eigenstrain'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_yy stress_zz vonmises_stress hoop_stress'
[]
[clad]
block = clad
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_yy stress_zz plastic_strain_yy plastic_strain_zz elastic_strain_yy elastic_strain_zz strain_yy strain_zz vonmises_stress hoop_stress axial_stress'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = HeatSource
variable = temp
block = 'pellet'
function = power_ramp
value = 1.0
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[plastic_strain_mag]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_mag
block = clad
execute_on = timestep_end
[]
[clad_water_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = clad_water_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[clad_water_flux]
type = MaterialRealAux
property = output_heat_flux
variable = clad_water_flux
boundary = 2
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
model = coulomb
friction_coefficient = 100
formulation = tangential_penalty
normalize_penalty = true
penalty = 1e12
normal_smoothing_distance = 0.1
tangential_tolerance = 1e-3
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
emissivity_primary = 0.797698
emissivity_secondary = 0.325
roughness_secondary = 0.1e-6 #roughness specified in benchmark
roughness_primary = 0.1e-6
roughness_coef = 3.2
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
contact_pressure = contact_pressure
normal_smoothing_distance = 0.1
quadrature = true
order = SECOND
[]
[]
[BCs]
[fixed_external_clad_temp]
type = FunctionDirichletBC
variable = temp
boundary = 1
function = temp_ramp
[]
[fixed_external_clad_temp_2]
type = FunctionDirichletBC
variable = temp
boundary = 3
function = temp_ramp
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_temperature = 293.15
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = representative_plenum_temperature_node
volume = plenum_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
chf_correlation_type = 1 # EPRI
htc_correlation_type = 1 # Thom or McDonough... or Groenveld
boundary = '2'
variable = temp
coolant_material = 'water'
inlet_massflux = 3057.2 #kg/(m^2 s)
inlet_temperature = temp_ramp
inlet_pressure = pressure_ramp
compute_enthalpy = true
flow_area = 1.0731681e-4 #m^2
heated_diameter = 1.4536170e-2 #m
hydraulic_diameter = 5.6e-3 #m
heated_perimeter = 2.9530971e-2 #m
heat_transfer_mode = 0
number_axial_zone = 50
htc_scalef = 1
[]
[]
[Materials]
[density_fuel]
type = StrainAdjustedDensity
block = 'pellet'
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet'
temperature = temp
burnup = burnup
initial_porosity = 0.04
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
temperature = temp
block = pellet
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeInstantaneousThermalExpansionFunctionEigenstrain
block = pellet
temperature = temp
thermal_expansion_function = Fuel_CTE_function
stress_free_temperature = 293.15
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[density_clad]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temp
[]
[clad_youngs_modulus]
type = PiecewiseLinearInterpolationMaterial
block = clad
xy_data = ' 0 79375000000
300 79375000000
320 78280000000
340 77185000000
360 76090000000
380 74995000000
400 73900000000
420 72805000000
440 71710000000
460 70615000000
480 69520000000
500 68425000000
520 67330000000
540 66235000000
560 65140000000
580 64045000000
600 62950000000
620 61855000000
640 60760000000
660 59665000000
680 58570000000
700 57475000000
720 56380000000
740 55285000000
760 54190000000
780 53095000000
800 52000000000
820 50905000000
840 49810000000
860 48715000000
880 47620000000
900 46525000000
920 45430000000
940 44335000000
960 43240000000
980 42145000000
1000 41050000000
1020 39955000000
1040 38860000000
1060 37765000000
1080 36670000000
1090 36122500000
1100 36434621212
1120 37058863636
1140 37683106061
1160 38307348485
1180 38931590909
1200 39555833333
1220 40180075758
1240 40804318182
1250 41116439394
1255 41272500000
1260 41070000000
1280 40260000000
1300 39450000000
1320 38640000000
1340 37830000000
1360 37020000000
1380 36210000000
1400 35400000000'
property = clad_youngs_modulus
variable = temp
[]
[clad_elasticity_tensor]
type = ComputeVariableIsotropicElasticityTensor
block = clad
args = temp
youngs_modulus = clad_youngs_modulus
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = 'plasticity'
tangent_operator = elastic
[]
[clad_thermal_expansion]
type = ComputeInstantaneousThermalExpansionFunctionEigenstrain
block = clad
temperature = temp
thermal_expansion_function = Clad_CTE_function
stress_free_temperature = 293.15
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = IsotropicPlasticityStressUpdate
block = clad
temperature = temp
hardening_constant = 2.5e9
yield_stress_function = YS_function
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[contact_slip]
type = ContactSlipDamper
primary = 5
secondary = 10
min_damping_factor = 0.05
[]
[]
[Executioner]
type = Transient
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 100
l_tol = 1e-4
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-8
start_time = 0
end_time = 200
dtmax = 10
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
dt = 10
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 0.03
optimal_iterations = 25
iteration_window = 5
linear_iteration_ratio = 1000
growth_factor = 1.2
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[representative_plenum_temperature_node] #Temperature used for plenum gas, using a node slightly above where the fuel contacts the cladding
type = NodalVariableValue
variable = temp
nodeid = 771
execute_on = 'initial linear'
[]
[2_input_rod_power]
type = FunctionValuePostprocessor
function = power_history
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[3_fuel_centerline_temp]
type = NodalVariableValue
variable = temp
nodeid = 1643
execute_on = 'initial timestep_end'
[]
[4_fuel_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[5_clad_inner_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 496
execute_on = 'initial timestep_end'
[]
[6_clad_outer_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 509
execute_on = 'initial timestep_end'
[]
[clad_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 900
execute_on = 'initial timestep_end'
[]
[fuel_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 2311
execute_on = 'initial timestep_end'
[]
[clad_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = 496
execute_on = 'initial timestep_end'
[]
[fuel_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[clad_hoop_stress]
type = ElementalVariableValue
variable = hoop_stress
elementid = 149
execute_on = 'initial timestep_end'
[]
[clad_axial_stress]
type = ElementalVariableValue
variable = axial_stress
elementid = 149
execute_on = 'initial timestep_end'
[]
[total_hoop_strain]
type = ElementalVariableValue
variable = strain_zz
elementid = 149
execute_on = 'initial timestep_end'
[]
[total_axial_strain]
type = ElementalVariableValue
variable = strain_yy
elementid = 149
execute_on = 'initial timestep_end'
[]
[plastic_hoop_strain]
type = ElementalVariableValue
variable = plastic_strain_zz
elementid = 149
execute_on = 'initial timestep_end'
[]
[plastic_axial_strain]
type = ElementalVariableValue
variable = plastic_strain_yy
elementid = 149
execute_on = 'initial timestep_end'
[]
[elastic_hoop_strain]
type = ElementalVariableValue
variable = elastic_strain_zz
elementid = 149
execute_on = 'initial timestep_end'
[]
[elastic_axial_strain]
type = ElementalVariableValue
variable = elastic_strain_yy
elementid = 149
execute_on = 'initial timestep_end'
[]
############################
[gap_cond]
type = ElementalVariableValue
variable = gap_cond
elementid = 499
execute_on = 'initial timestep_end'
[]
[coolant_temp]
type = ElementalVariableValue
variable = coolant_temp
elementid = 149
execute_on = 'initial timestep_end'
[]
[clad_water_flux]
type = ElementalVariableValue
variable = clad_water_flux
elementid = 149
execute_on = 'initial timestep_end'
[]
[clad_water_htc]
type = ElementalVariableValue
variable = clad_water_htc
elementid = 149
execute_on = 'initial timestep_end'
[]
[qpoint_penetration]
type = ElementalVariableValue
variable = qpoint_penetration
elementid = 499
execute_on = 'initial timestep_end'
[]
[penetration]
type = NodalVariableValue
variable = penetration
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[zz_fuel_OR]
type = FunctionValuePostprocessor
function = fuel_OR
execute_on = 'initial timestep_end'
[]
[zz_total_energy]
type = FunctionValuePostprocessor
function = total_energy
execute_on = 'initial timestep_end'
[]
[zz_FWMH]
type = FunctionValuePostprocessor
function = FWMH
execute_on = 'initial timestep_end'
[]
[zz_cp_factor]
type = FunctionValuePostprocessor
function = cp_factor
execute_on = 'initial timestep_end'
[]
[zzz_heat_generation]
type = FunctionValuePostprocessor
function = heat_generation
execute_on = 'initial timestep_end'
[]
[zzzz_power_ramp]
type = FunctionValuePostprocessor
function = power_ramp
execute_on = 'initial timestep_end'
[]
[zzzzz_RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0709016
temperature_name = temp
execute_on = 'initial timestep_end'
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = zzzzz_RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
outputs = dummy
execute_on = 'initial timestep_end'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
rod_component = CLAD ## Request only clad components because fission gas models are not used in this input file
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
csv = true
exodus = true
color = false
[console]
type = Console
output_linear = true
max_rows = 10
[]
[dummy]
type = CSV
enable = false
[]
[chkfile]
type = CSV
show = 'plenum_temperature average_interior_clad_temperature plenum_volume peak_RAE'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM043/BFM043.i)
################################################################################
#
# Description: Calvert Cliffs BFM043
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM043_power.csv
# axial peaking factor file BFM043_axial_peaking.csv
# flux boundary condition file BFM043_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31834
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM043_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM043_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179369250 179369610'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179369250 179369610'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM043_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179369610
dtmax = 2.5e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/IFA_597_3/analysis/rod_7/IFA_597_rod7_frictionless.i)
initial_fuel_density = 10500.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_iterations = 10
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ifa_597r7.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = '3 4'
initial_condition = 6.1074e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = 597-R7_linear_power.csv
format = columns
scale_factor = 1.0526316
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = 597-R7_axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 269029548 269030508 269055648 269056588 280124964 280125427'
y = '0 1 1 0.014475 0.014475 0.457 0.457 0.014475'
[]
[flux]
type = PiecewiseLinear
data_file = flux.csv
format = columns
[]
[clad_average_temp]
type = PiecewiseLinear
data_file = 597-R7_clad_outer_temperature.csv
format = columns
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = '3 4'
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3 4'
fission_rate = fission_rate
fraction = 0.95 # per Glyn Rossiter's suggestion
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = '3 4'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_lower = 0.00324
a_upper = 0.3571
fuel_inner_radius = 0.000
fuel_outer_radius = 0.0052195
fuel_volume_ratio = .994899
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.03347 0.96653 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3 4'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = 1
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_secondary = 1.3e-6
roughness_primary = 1.38e-6
roughness_coef = 3.2
contact_pressure = contact_pressure
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 269055648
refab_gas_types = He
refab_fractions = 1
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_average_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 #changes to 3.2e6 after 59 MWd/kgUO2
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.0e5 #changes to 5e5 after 59 MWd/kgUO2
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 269055648
refab_pressure = 5e5
refab_temperature = 500
refab_volume = 6e-6
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = '3 4'
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10500.0
[]
[fuel_thermal]
type = UO2Thermal
block = '3 4'
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
initial_porosity = 0.04372
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 4'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = '3 4'
temperature = temp
stress_free_temperature = 297
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = '3 4'
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = '3 4'
burnup_function = burnup
diameter = 0.010439
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =2.11e-4
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 297
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3 4'
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.04372
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
[]
[density_clad]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = '3 4'
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 280125427
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 20
linear_iteration_ratio = 100
dt = 100
force_step_every_function_point = true
timestep_limiting_function = power_profile
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block ='3 4'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3 4'
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = exodus
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = exodus
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3 4'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.3539 # rod height
[]
[average_fission_rate]
type = AverageFissionRate
rod_ave_lin_pow = power_profile
fuel_outer_radius = 0.0052195
fuel_inner_radius = 0.000
outputs = exodus
[]
[power_tc_location]
type = FunctionValuePostprocessor
function = q
point = '0 0.33319 0'
[]
[TC_temp]
type = NodalVariableValue
variable = temp
nodeid = 7476 # Global NodeID 7477
[]
[elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 1887 # Global NodeID 1888
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = '3 4'
[]
[Outputs]
perf_graph = true
csv = 1
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage TC_temp rod_total_power elongation'
execute_on = 'FINAL'
[]
[]
(examples/axial_relocation/layered2D/single_balloon/single_balloon.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
temperature = temperature
[]
[Mesh]
[layered2D_mesh]
type = Layered2DMeshGenerator
axial_direction = z
num_sectors = 10
slices_per_block = 36
clad_thickness = 0.56e-3
clad_gap_width = 0.0
fuel_height = 3.6
include_plenum = false
pellet_bottom_coor = 0.0
pellet_outer_radius = 0.0045
[]
partitioner = centroid
centroid_partitioner_direction = z
patch_update_strategy = auto
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300
[]
[]
[AuxVariables]
[disp_z]
[]
[burnup]
order = SECOND
family = LAGRANGE
[]
[strain_zz_0]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 0.07
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[clad_displacement_function_x]
type = ParsedFunction
expression = '2.0e-5 * t * cos(atan2(y,x)) * sin(pi * z / 3.6)'
[]
[clad_displacement_function_y]
type = ParsedFunction
expression = '2.0e-5 * t * sin(atan2(y,x)) * sin(pi * z / 3.6)'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[Physics]
[SolidMechanics]
[Layered2D]
[fuel]
add_scalar_variables = true
out_of_plane_direction = z
out_of_plane_strain_name = strain_zz
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = fuel
eigenstrain_names = 'axial_relocation_eigenstrain'
decomposition_method = EigenSolution
mesh_generator = layered2D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_direction = z
out_of_plane_strain_name = strain_zz
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = clad
decomposition_method = EigenSolution
mesh_generator = layered2D_mesh
[]
[]
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'nonlinear'
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
gap_conductivity = 1
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[BCs]
[temperature]
type = DirichletBC
boundary = '10 5 2'
variable = temperature
value = 1200
[]
[no_x]
type = DirichletBC
boundary = '10000 10006'
variable = 'disp_x'
value = 0.0
[]
[no_y]
type = DirichletBC
boundary = '10000 10003 10005'
variable = 'disp_y'
value = 0.0
[]
[inner_clad_displacement_x]
type = FunctionDirichletBC
variable = disp_x
boundary = '5'
function = clad_displacement_function_x
[]
[inner_clad_displacement_y]
type = FunctionDirichletBC
variable = disp_y
boundary = '5'
function = clad_displacement_function_y
[]
[]
[Materials]
[fuel_thermal]
type = HeatConductionMaterial
block = fuel
thermal_conductivity = 3.0
specific_heat = 260.0
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = fuel
axial_relocation_object = axial_relocation
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power
formulation = layered2D
axial_direction = z
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_zz_0
penetration_variable = penetration
pulver_packing_fraction = 0.75
fragment_packing_fraction = 0.75
clad_inner_volume_addition = 0
burnup_variable = burnup
axial_relocation_output_options = MASS_FRACTION
mesh_generator = 'layered2D_mesh'
[]
[]
[VectorPostprocessors]
[mass_fraction]
type = LineValueSampler
start_point = '0 0 0.05'
end_point = '0 0 3.55'
num_points = 36
sort_by = z
variable = layered_mass_fraction
outputs = mass_fraction
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
l_tol = 1e-3
start_time = 0.0
end_time = 100.0
dt = 1
dtmin = 1e-1
[]
[Outputs]
perf_graph = true
csv = true
[out]
type = Exodus
output_dimension = 3
[]
[mass_fraction]
type = CSV
execute_on = 'final'
create_final_symlink = true
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK9/FK09.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(examples/axial_relocation/layered2D/single_balloon/single_balloon_translated.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
temperature = temperature
[]
[Mesh]
[layered2D_mesh_1]
type = Layered2DMeshGenerator
axial_direction = z
num_sectors = 10
slices_per_block = 36
clad_thickness = 0.56e-3
clad_gap_width = 0.0
fuel_height = 3.6
include_plenum = false
pellet_bottom_coor = 0.0
pellet_outer_radius = 0.0045
name_prefix = 'righthand'
id_offset = '10'
show_info = true
[]
[translate_1]
type = TransformGenerator
transform = TRANSLATE
vector_value = '1 0 0'
input = layered2D_mesh_1
[]
partitioner = centroid
centroid_partitioner_direction = z
patch_update_strategy = auto
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300
[]
[]
[AuxVariables]
[disp_z]
[]
[burnup]
order = SECOND
family = LAGRANGE
[]
[strain_zz_0]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 0.07
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[clad_displacement_function_x_1]
type = ParsedFunction
expression = '2.0e-5 * t * cos(atan2(y,x-1)) * sin(pi * z / 3.6)'
[]
[clad_displacement_function_y_1]
type = ParsedFunction
expression = '2.0e-5 * t * sin(atan2(y,x-1)) * sin(pi * z / 3.6)'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[Physics]
[SolidMechanics]
[Layered2D]
[fuel_1]
add_scalar_variables = true
out_of_plane_direction = z
out_of_plane_strain_name = strain_zz
fuel_pin_geometry = 'righthand_fuel_pin_geometry'
strain = finite
block = 'righthand_fuel'
automatic_eigenstrain_names = true
decomposition_method = EigenSolution
mesh_generator = layered2D_mesh_1
[]
[clad_1]
add_scalar_variables = true
out_of_plane_direction = z
out_of_plane_strain_name = strain_zz
fuel_pin_geometry = 'righthand_fuel_pin_geometry'
strain = finite
block = 'righthand_clad'
automatic_eigenstrain_names = true
decomposition_method = EigenSolution
mesh_generator = layered2D_mesh_1
[]
[]
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'nonlinear'
[]
[]
[ThermalContact]
[thermal_contact_right]
type = GasGapHeatTransfer
variable = temperature
primary = 15
secondary = 20
gap_conductivity = 1
[]
[]
[Contact]
[pellet_clad_mechanical_right]
primary = 15
secondary = 20
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[BCs]
[righthand_temperature]
type = DirichletBC
boundary = '20 15 12'
variable = temperature
value = 1200
[]
[righthand_no_x]
type = DirichletBC
boundary = '10010 10016'
variable = 'disp_x'
value = 0.0
[]
[righthand_no_y]
type = DirichletBC
boundary = '10010 10013 10015'
variable = 'disp_y'
value = 0.0
[]
[right_inner_clad_displacement_x]
type = FunctionDirichletBC
variable = disp_x
boundary = '15'
function = clad_displacement_function_x_1
[]
[right_inner_clad_displacement_y]
type = FunctionDirichletBC
variable = disp_y
boundary = '15'
function = clad_displacement_function_y_1
[]
[]
[Materials]
[fuel_thermal]
type = HeatConductionMaterial
block = 'righthand_fuel'
thermal_conductivity = 3.0
specific_heat = 260.0
[]
[righthand_fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'righthand_fuel'
axial_relocation_object = righthand_axial_relocation
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'righthand_fuel'
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'righthand_clad'
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = 'righthand_clad'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'righthand_clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'righthand_fuel'
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = 'righthand_clad'
strain_free_density = 6551.0
[]
[]
[AxialRelocation]
[righthand]
rod_ave_lin_pow = power
formulation = layered2D
axial_direction = z
fuel_blocks = 'righthand_fuel'
clad_blocks = 'righthand_clad'
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_zz_0
penetration_variable = penetration
pulver_packing_fraction = 0.75
fragment_packing_fraction = 0.75
clad_inner_volume_addition = 0
burnup_variable = burnup
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered2D_mesh_1
translation_vector = '1 0 0'
name_prefix = 'righthand'
id_offset = '10'
[]
[]
[VectorPostprocessors]
[righthand_mass_fraction]
type = LineValueSampler
start_point = '1 0 0.05'
end_point = '1 0 3.55'
num_points = 36
sort_by = z
variable = righthand_layered_mass_fraction
outputs = mass_fraction
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
l_tol = 1e-3
start_time = 0.0
end_time = 100.0
dt = 1
dtmin = 1e-1
[]
[Outputs]
perf_graph = true
csv = true
[out]
type = Exodus
output_dimension = 3
[]
[mass_fraction]
type = CSV
execute_on = 'final'
create_final_symlink = true
[]
[]
(assessment/LWR/validation/Super_Ramp/analysis/Super_Ramp_Base.i)
#This is a partial input file base with information/features common to several experiments within this assessment
#NOTE: This file will NOT run on its own, it requires a PK#X.params file and a PK##.params file to run
# physical constants
R = 8.3143 # (J/K*mol) -- THIS SHOULD BE EDITED TO USE PHYSICALCONSTANTS' VALUE
# fuel isotope fractions and fission energy
energy_per_fission = 3.28451e-11 # (J/fission)
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# rod geometry
clad_bot_gap_height = 1.0e-3 # (m)
# variable and kernel initial values
initial_temperature = 293.15 # (K)
gravity_constant = -9.81 # (m/s^2)
# fuel/cladding contact
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
roughness_secondary = 1.0e-6 # (m)
roughness_primary = 2.0e-6 # (m)
roughness_coef = 3.2
jump_distance_model = LANNING
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
# plenum parameters
initial_pressure = 2.25e6 # (Pa)
startup_time = 0 # (s)
# fuel/clad material properties
fuel_cracking_stress = 1.68e8
stress_free_temperature = 293.15 # (K)
clad_density = 6550.0 # (kg/m^3)
# numerical options
l_max_its = 100
l_tol = 1e-4
nl_max_its = 30
start_time = 0.0 # s
dtmin = 1.0 # s
[GlobalParams]
density = ${fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
initial_porosity = ${initial_fuel_porosity}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temperature'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = ${number_pellets}
pellet_height = ${pellet_height}
pellet_outer_radius = ${pellet_outer_radius}
pellet_mesh_density = customize
nx_p = 11
ny_p = 84
clad_mesh_density = customize
nx_c = 4
ny_c = 84
clad_gap_width = ${clad_gap_width}
clad_thickness = ${clad_thickness}
clad_bot_gap_height = ${clad_bot_gap_height}
bottom_clad_height = ${bottom_clad_height}
top_clad_height = ${top_clad_height}
clad_top_gap_height = ${clad_top_gap_height}
ny_cu = 3
ny_cl = 3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
format = columns
[]
[axial_power_factors]
type = PiecewiseBilinear
data_file = ${axial_power_factors_data_file}
axis = 1
[]
[clad_out_temp]
type = PiecewiseLinear
data_file = ${clad_out_temp_data_file}
format = columns
[]
[axial_temp_factors]
type = PiecewiseBilinear
data_file = ${axial_temp_factors_data_file}
axis = 1
[]
[clad_temp_bc]
type = CompositeFunction
functions = 'clad_out_temp axial_temp_factors'
[]
[coolant_pressure]
type = PiecewiseLinear
data_file = ${coolant_pressure_data_file}
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = ${fast_neutron_flux_data_file}
format = columns
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = ${initial_grain_radius}
[]
[porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
initial_condition = ${initial_fuel_porosity}
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gaseous_porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
temperature = temperature
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
temperature = temperature
add_variables = true
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = ${gravity_constant}
block = '1 3'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temperature
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[porosity]
type = PorosityAuxUO2
block = pellet
variable = porosity
execute_on = linear
[]
[pelletid]
type = PelletIdAux
block = pellet
variable = pellet_id
fuel_pin_geometry = pin_geometry
number_pellets = ${number_pellets}
execute_on = initial
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[gaspor]
type = MaterialRealAux
variable = gaseous_porosity
property = gaseous_porosity
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = pellet
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = pellet
execute_on = nonlinear
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = ${friction_coefficient}
c_normal = ${c_normal}
c_tangential = ${c_tangential}
tangential_lm_scaling = ${tangential_lm_scaling}
normal_lm_scaling = ${normal_lm_scaling}
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_secondary = ${roughness_secondary}
roughness_primary = ${roughness_primary}
roughness_coef = ${roughness_coef}
plenum_pressure = plenum_pressure
jump_distance_model = ${jump_distance_model}
contact_pressure = ${contact_pressure}
thermal_lm_scaling = ${thermal_lm_scaling}
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = 5
outer_surfaces = 10
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temperature
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_pressure
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_pressure}
startup_time = ${startup_time}
R = ${R}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = ${fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
density = ${fuel_density}
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
burnup_function = burnup
initial_grain_radius = ${initial_grain_radius}
[]
[fuel_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = ${fuel_cracking_stress}
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
model_relocation_recovery = true
max_relocation_recovery_fraction = 0.5
relocation_scaling_factor = 1
volumetric_swelling_increment = vol_swell_increment
layered_average_contact_pressure = layered_average_contact_pressure
outputs = all
output_properties = 'relocation_strain recovered_relocation_strain'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
hydrostatic_stress = hydrostatic_stress
diff_coeff_option = TURNBULL_D1_4D2_D3
transient_option = MICROCRACKING_BURNUP
res_param_option = HETEROGENEOUS_WHITE
ig_bubble_model = NUCLEATION_RESOLUTION
ig_diff_algorithm = polypole2
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
pellet_id = pellet_id
pellet_brittle_zone = pbz
ath_model = true
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${clad_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
fuel_pin_geometry = pin_geometry
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = ${petsc_options_value}
line_search = 'none'
verbose = true
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = 1
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = ${optimal_iterations}
iteration_window = ${iteration_window}
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[central_fuel_temp]
type = NodalVariableValue
variable = temperature
nodeid = 3110 #Mesh dependent!
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[midplane_hoop_strain_inner_clad]
type = ElementalVariableValue
elementid = 209 # Mesh dependent
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[midplane_hoop_stress_inner_clad]
type = ElementalVariableValue
elementid = 209 # Mesh dependent
variable = hoop_stress
execute_on = 'initial timestep_end'
[]
[midplane_contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 3141 # Mesh dependent
execute_on = 'initial timestep_end'
[]
[total_rod_integral_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[total_rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = ${scale_factor}
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 10
variable = volumetric_swelling_strain
execute_on = nonlinear
[]
[midplane_clad_outer_temp]
type = NodalVariableValue
nodeid = 757 # Mesh dependent
variable = temperature
[]
[midplane_clad_inner_temp]
type = NodalVariableValue
nodeid = 747 # Mesh dependent
variable = temperature
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
color = false
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'average_burnup fission_gas_released_percentage central_fuel_temp midplane_contact_pressure'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[pbz]
type = PelletBrittleZone
block = pellet
pellet_id = pellet_id
temperature = temperature
fuel_pin_geometry = pin_geometry
number_pellets = ${number_pellets}
execute_on = 'initial linear'
[]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = contact_pressure
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 10
[]
[]
(assessment/LWR/validation/IFA_636/analysis/IFA_636_solid_swell/IFA_636_solid_swell.i)
initial_fuel_density = 10551.78
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_mesh_density = customize
clad_mesh_density = customize
pellet_quantity = 1
pellet_height = 0.392
pellet_outer_radius = 4.097e-3
ny_p = 40
nx_p = 11
clad_gap_width = 78e-6
clad_bot_gap_height = 1e-3
plenum_fuel_ratio = 0.21628
clad_thickness = 0.5715e-3
nx_c = 4
ny_c = 80
ny_cl = 3
ny_cu = 3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 5e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_swe]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = IFA_636_power_history.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = IFA_636_axial_peaking.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 213162351 213260400'
y = '0.0307 1 1 0.0307'
[]
[clad_temp_bc]
type = PiecewiseLinear
data_file = IFA_636_clad_bc.csv
format = columns
scale_factor = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_swelling_eigenstrain
fuel_relocation_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
creep_strain_xx creep_strain_xy creep_strain_yy creep_strain_zz'
[]
[]
[Kernels]
[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
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.6e12
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[dvv0swe]
type = MaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
execute_on = timestep_end
block = pellet
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00324000
a_upper = 0.39524
fuel_volume_ratio = 1
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0040975
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0425 0.9575 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.33e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.0e6
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet
initial_fuel_density = 10551.78
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_swelling_eigenstrain
[]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.039
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 293.0
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
diameter = 0.008194
diametral_gap =156.0e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.029
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
initial_porosity = 0.039
gbs_model = true
transient_option = MICROCRACKING
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = 'clad_creep'
tangent_operator = 'elastic'
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradition_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 213260400
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 15
iteration_window = 2
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
burnup_function = burnup
variable = temp
[]
[fuel_disp_y_average]
type = AverageNodalVariableValue
boundary = top_of_top_pellet
variable = disp_y
[]
[volumetric_strain]
type = ElementAverageValue
block = pellet
variable = deltav_v0_swe
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet
cladding_blocks = clad
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released fuel_disp_y_average rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/Super_Ramp/analysis/PK62/PK62_weighted_gap_VCP.i)
# This assessment case requires increasing the default automatic differentiation
# vector (AD size). At the time of writing, the default size is 50. This test
# requires, at least, 56. The minimum size required for a test to run can be
# specified in the 'assesment' file via "min_ad_size". To configure MOOSE
# to increase the AD vector size, one can use the command below in the MOOSE
# folder to expand this size, e.g., to 200:
#
# ./configure --with-derivative-type=sparse --with-ad-indexing-type=global --with-derivative-size=200
# physical constants
R = 8.3143 # J/mol*K -- THIS SHOULD BE EDITED TO USE PHYSICALCONSTANTS' VALUE
# fuel isotope fractions and fission energy
energy_per_fission = 3.28451e-11 # J/fission
isotope_fraction_U235 = 0.02985
isotope_fraction_U238 = 0.97015
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# rod geometry
pellet_quantity = 29 # (-)
pellet_height = 0.010862 # m
pellet_outer_radius = 4.57e-3 # m
clad_gap_width = 75.0e-6 # m
clad_thickness = 0.725e-3 # m
clad_bot_gap_height = 1.0e-3 # m
bottom_clad_height = 15.5e-3 # m
top_clad_height = 15.5e-3 # m
clad_top_gap_height = 32.5e-3 # m
fuel_volume_ratio = 1.0 # (-)
rod_input_power_scale_factor = 0.376004 # m (rod height)
# variable and kernel initial values
initial_temperature = 293.15 # K
gravity_constant = -9.81 # m/s^2
# fuel/cladding contact
c_normal = 1e+05 # (-)
jump_distance_model = 'LANNING'
roughness_primary = 2e-6 # (-)
roughness_secondary = 1e-6 # (-)
roughness_coef = 3.2 # (-)
relocation_activation1 = 5000 # W/m
max_relocation_recovery_fraction = 0.5 # (-)
relocation_scaling_factor = 1 # (-)
# plenum parameters
initial_plenum_pressure = 2.25e6 # Pa
startup_time = 0 # s
# fuel/clad material properties
initial_fuel_density = 10420.0 # kg/m^3
initial_fuel_porosity = 0.049 # (-)
initial_grain_radius = 17.16e-6 # m
fuel_cracking_stress = 1.68e8 # Pa
fuel_shear_retention_factor = 0.1 # (-)
fuel_max_stress_correction = 0 # (-)
stress_free_temperature = 293.15 # K
cladding_density = 6550.0 # kg/m^3
# numerical options
damper_max_temperature_increment = 150.0 # K (was 30 K)
l_max_its = 35
l_tol = 1e-5
nl_max_its = 30
nl_rel_tol = 2e-6
nl_abs_tol = 1e-5
start_time = 0.0 # s
n_startup_steps = 1
dtmax = 1.0e6 # s
dtmin = 1.0 # s
Timestepper_dt = 100 # s
Timestepper_optimal_iterations = 15
Timestepper_iteration_window = 3
# irradiation history
end_time = 76630068.0 # s
# data files
power_history_data_file = 'alhr_history.csv'
axial_power_factors_data_file = 'axial_lhr_factors.csv'
clad_out_temp_data_file = 'temp_outer_clad_history.csv'
axial_temp_factors_data_file = 'axial_temp_factors.csv'
coolant_pressure_data_file = 'pressure_coolant.csv'
fast_neutron_flux_data_file = 'fast_neutron_flux.csv'
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = true
initial_porosity = ${initial_fuel_porosity}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 80
patch_update_strategy = iteration
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = ${pellet_quantity}
pellet_height = ${pellet_height}
pellet_outer_radius = ${pellet_outer_radius}
pellet_mesh_density = customize
nx_p = 11
ny_p = 168
clad_mesh_density = customize
nx_c = 4
ny_c = 84
clad_gap_width = ${clad_gap_width}
clad_thickness = ${clad_thickness}
clad_bot_gap_height = ${clad_bot_gap_height}
bottom_clad_height = ${bottom_clad_height}
top_clad_height = ${top_clad_height}
clad_top_gap_height = ${clad_top_gap_height}
ny_cu = 3
ny_cl = 3
elem_type = QUAD4
[]
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
block = '1 3'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 3'
scaling = 1.0e3
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 3'
scaling = 1.0e3
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
format = columns
[]
[axial_power_factors]
type = PiecewiseBilinear
data_file = ${axial_power_factors_data_file}
axis = 1
[]
[clad_out_temp]
type = PiecewiseLinear
data_file = ${clad_out_temp_data_file}
format = columns
[]
[axial_temp_factors]
type = PiecewiseBilinear
data_file = ${axial_temp_factors_data_file}
axis = 1
[]
[clad_temp_bc]
type = CompositeFunction
functions = 'clad_out_temp axial_temp_factors'
[]
[coolant_pressure]
type = PiecewiseLinear
data_file = ${coolant_pressure_data_file}
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = ${fast_neutron_flux_data_file}
format = columns
[]
[axial_power_constant]
type = ConstantFunction
value = 1
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = ${initial_grain_radius}
[]
[porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
initial_condition = ${initial_fuel_porosity}
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gaseous_porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
temperature = temperature
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
temperature = temperature
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = ${gravity_constant}
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
block = clad
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[porosity]
type = PorosityAuxUO2
block = pellet
variable = porosity
execute_on = linear
[]
[pelletid]
type = PelletIdAux
block = pellet
variable = pellet_id
fuel_pin_geometry = pin_geometry
number_pellets = ${pellet_quantity}
execute_on = initial
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[gaspor]
type = MaterialRealAux
variable = gaseous_porosity
property = gaseous_porosity
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = pellet
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = pellet
execute_on = nonlinear
[]
[]
[Burnup]
[burnup]
block = pellet
fuel_volume_ratio = ${fuel_volume_ratio}
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
fuel_pin_geometry = pin_geometry
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5
secondary = 10
c_normal = ${c_normal}
[]
[]
[ThermalContactMortar]
[thermal]
secondary_variable = temperature
primary_boundary = 5
secondary_boundary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = ${jump_distance_model}
plenum_pressure = plenum_pressure
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
roughness_coef = ${roughness_coef}
contact_pressure = mechanical_normal_lm
layer_thickness = layer_thickness_action
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = 5
outer_surfaces = 10
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temperature
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_pressure
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${R}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
density = ${initial_fuel_density}
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
burnup_function = burnup
initial_grain_radius = ${initial_grain_radius}
[]
[fuel_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = ${fuel_cracking_stress}
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = ${fuel_shear_retention_factor}
max_stress_correction = ${fuel_max_stress_correction}
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
relocation_activation1 = ${relocation_activation1}
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
model_relocation_recovery = true
max_relocation_recovery_fraction = ${max_relocation_recovery_fraction}
relocation_scaling_factor = ${relocation_scaling_factor}
volumetric_swelling_increment = vol_swell_increment
layered_average_contact_pressure = layered_average_contact_pressure
outputs = all
output_properties = 'relocation_strain recovered_relocation_strain'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
hydrostatic_stress = hydrostatic_stress
diff_coeff_option = TURNBULL_D1_4D2_D3
transient_option = MICROCRACKING_BURNUP
res_param_option = HETEROGENEOUS_WHITE
ig_bubble_model = NUCLEATION_RESOLUTION
ig_diff_algorithm = polypole2
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
pellet_id = pellet_id
pellet_brittle_zone = pbz
ath_model = true
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${cladding_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
fuel_pin_geometry = pin_geometry
[]
[]
#### This is the part where VCP is set up
[Preconditioning]
[vcp]
type = VCP
full = true
# condense out the normal LM from mechanical contact and the LM from thermal contact
lm_variable = 'mechanical_normal_lm thermal_thermal_lm'
primary_variable = 'disp_x temperature'
# we use LU to solve the system after condensation
# AMG and other solver types have shown convergence for simpler mechanical/thermo-mechanical contact problems but has not luck with this one
preconditioner = 'LU'
is_lm_coupling_diagonal = true
adaptive_condensation = true
[]
[]
[Dampers]
[maxincrement]
type = MaxIncrement
max_increment = ${damper_max_temperature_increment}
variable = temperature
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
# IMPORTANT: we should not specify the pc_type below, otherwise the VCP setting will be overriden
petsc_options_iname = ' -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = ' 1e-5 NONZERO 1e-15'
snesmf_reuse_base = false
line_search = 'none'
verbose = true
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = ${n_startup_steps}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${Timestepper_dt}
optimal_iterations = ${Timestepper_optimal_iterations}
iteration_window = ${Timestepper_iteration_window}
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = SideAverageValue
boundary = 10
variable = gap_cond
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[total_rod_integral_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[total_rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = ${rod_input_power_scale_factor}
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 10
variable = volumetric_swelling_strain
execute_on = nonlinear
[]
[contact_dof]
type = ContactDOFSetSize
variable = 'mechanical_normal_lm'
subdomain = 'secondary_lower'
execute_on = 'nonlinear timestep_end'
[]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage'
execute_on = 'FINAL'
[]
[]
[VectorPostprocessors]
[temperature_post]
type = NodalValueSampler
variable = temperature
boundary = '10'
sort_by = y
[]
[contact_post]
type = NodalValueSampler
variable = mechanical_normal_lm
boundary = '10'
sort_by = y
[]
[disp_x]
type = NodalValueSampler
variable = disp_x
boundary = '10'
sort_by = y
[]
[disp_y]
type = NodalValueSampler
variable = disp_y
boundary = '10'
sort_by = y
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[pbz]
type = PelletBrittleZone
block = pellet
pellet_id = pellet_id
temperature = temperature
fuel_pin_geometry = pin_geometry
number_pellets = ${pellet_quantity}
execute_on = 'initial linear'
[]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = mechanical_normal_lm
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 10
[]
[]
(examples/axial_relocation/layered2D/twin_balloon/twin_balloon.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
temperature = temperature
[]
[Mesh]
[layered2D_mesh]
type = Layered2DMeshGenerator
axial_direction = z
num_sectors = 10
slices_per_block = 36
clad_thickness = 0.56e-3
clad_gap_width = 0.0
fuel_height = 3.6
include_plenum = false
pellet_bottom_coor = 0.0
pellet_outer_radius = 0.0045
[]
partitioner = centroid
centroid_partitioner_direction = z
patch_update_strategy = auto
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300
[]
[]
[AuxVariables]
[disp_z]
[]
[burnup]
order = SECOND
family = LAGRANGE
[]
[strain_zz_0]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 0.07
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[clad_displacement_function_x]
type = ParsedFunction
expression = '2.0e-5 * t * cos(atan2(y,x)) * abs(sin(2 * pi * z / 3.6))'
[]
[clad_displacement_function_y]
type = ParsedFunction
expression = '2.0e-5 * t * sin(atan2(y,x)) * abs(sin(2 * pi * z / 3.6))'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[Physics]
[SolidMechanics]
[Layered2D]
[fuel]
add_scalar_variables = true
out_of_plane_direction = z
out_of_plane_strain_name = strain_zz
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = fuel
eigenstrain_names = 'axial_relocation_eigenstrain'
decomposition_method = EigenSolution
mesh_generator = layered2D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_direction = z
out_of_plane_strain_name = strain_zz
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = clad
decomposition_method = EigenSolution
mesh_generator = layered2D_mesh
[]
[]
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'nonlinear'
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
gap_conductivity = 1
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[BCs]
[temperature]
type = DirichletBC
boundary = '10 5 2'
variable = temperature
value = 1200
[]
[no_x]
type = DirichletBC
boundary = '10000 10006'
variable = 'disp_x'
value = 0.0
[]
[no_y]
type = DirichletBC
boundary = '10000 10003 10005'
variable = 'disp_y'
value = 0.0
[]
[inner_clad_displacement_x]
type = FunctionDirichletBC
variable = disp_x
boundary = '5'
function = clad_displacement_function_x
[]
[inner_clad_displacement_y]
type = FunctionDirichletBC
variable = disp_y
boundary = '5'
function = clad_displacement_function_y
[]
[]
[Materials]
[fuel_thermal]
type = HeatConductionMaterial
block = fuel
thermal_conductivity = 3.0
specific_heat = 260.0
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = fuel
axial_relocation_object = axial_relocation
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[AxialRelocation]
[relo]
rod_ave_lin_pow = power
formulation = layered2D
axial_direction = z
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_zz_0
penetration_variable = penetration
pulver_packing_fraction = 0.75
fragment_packing_fraction = 0.75
clad_inner_volume_addition = 0
burnup_variable = burnup
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered2D_mesh
[]
[]
[VectorPostprocessors]
[mass_fraction]
type = LineValueSampler
start_point = '0 0 0.05'
end_point = '0 0 3.55'
num_points = 36
sort_by = z
variable = layered_mass_fraction
outputs = mass_fraction
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
l_tol = 1e-3
start_time = 0.0
end_time = 100.0
dt = 1
dtmin = 1e-1
[]
[Outputs]
perf_graph = true
[out]
type = Exodus
output_dimension = 3
[]
[mass_fraction]
type = CSV
execute_on = 'final'
create_final_symlink = true
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM034/BFM034.i)
################################################################################
#
# Description: Calvert Cliffs BFM034
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM034_power.csv
# axial peaking factor file BFM034_axial_peaking.csv
# flux boundary condition file BFM034_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31392
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM034_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM034_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179410295 179410655'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179410295 179410655'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM034_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179410655
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/IFA_431/analysis/IFA_431_General.i)
# This is a partial input file base with information/features common to all the fuel rods in this assessment with
# no action option.
# NOTE: This file will not run on its own, it is used to create a complete input file in the rod-specific input files.
# Fuel material properties
fuel_thermal_expansion_coeff = 10e-6 # K^-1
# Cladding material properties
cladding_thermal_conductivity = 16.0 # W/m-K
cladding_specific_heat = 330.0 # J/kg-K
cladding_density = 6551.0 # kg/m^3
# Relocation
relocation_activation1 = 5000 # W/m
[GlobalParams]
volumetric_locking_correction = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = '3 4 5'
initial_condition = ${initial_grain_radius}
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = '3 4 5'
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = '3 4 5'
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factor
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3 4 5'
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[]
[Burnup]
[burnup]
block = '3 4 5'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factor
num_radial = 81
num_axial = 21
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.1 .9 0 0 0 0'
RPF = RPF
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = '3 4 5'
thermal_conductivity_model = NFIR
initial_porosity = ${initial_fuel_porosity}
temperature = temperature
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 4 5'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = '3 4 5'
temperature = temperature
[]
[fuel_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = '3 4 5'
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = '3 4 5'
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factor
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
burnup_relocation_stop = ${burnup_relocation_stop}
relocation_activation1 = ${relocation_activation1}
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[clad_inelastic_stressUpdate] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
temperature = temperature
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = ${cladding_density}
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3 4 5'
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = '3 4 5'
burnup = burnup
temperature = temperature
initial_fuel_density = ${initial_fuel_density}
total_densification = ${total_densification}
#incremental_form = true
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3 4 5'
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
[]
(test/tests/ifba_he_production/ifba_only_template.i)
#
# 2-D RZ One Pellet IFBA Test - IFBA He generation only
#
# This test is of a single pellet with cladding and a specified initial
# pressure of He fill gas and IFBA layer .
# The initial loading of B-10 is converted to He gas and adds to the
# plenum pressure. No fission gas production is included in this model. This
# allows the effect of the IFBA layer to be seen clearly.
#
# The power is ramped up and held constant to heat the fill gas and establish
# an initial "hot" pressure. Since there is no fission gas production or
# release in this model, the pressure at temperature should be able to be
# calculated and compared to the BISON result.
#
# This case builds on the baseline case. The amount of He added due to IFBA
# can be calculated and the BISON result checked.
#
# This input template is used for a set of tests exercising the main input
# options for the IFBA postprocessor.
#
initial_fuel_density = 10431.0 #95% TD (TD = 10980)
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[grain_radius]
block = '3'
initial_condition = 5e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_strain'
[]
[clad]
block = 1
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'clad_thermal_strain'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
value = 5.3548e+14
fission_rate_function = power_history
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
gas_released = null
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Clad_Temp]
type = DirichletBC
variable = temp
boundary = '2'
value = 580.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = he_prod
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298
eigenstrain_name = 'fuel_thermal_strain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fclad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 298
eigenstrain_name = 'clad_thermal_strain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 5.3e7 # 1.7 years (~3% burnup)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e6 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial linear'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.05175 #BWR change: length of fuel stack in meters (5*pellet height)
[]
[he_prod]
type = IFBAHeProduction
[]
[null]
type = FunctionValuePostprocessor
function = 0
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup burnup he_prod interior_temp plenum_pressure'
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2c/27_2c.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (200 MeV)
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = FUMEXII27_2c_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[grain_radius]
block = pellet_type_1
initial_condition = 37.5e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = 27_2c_linear_power.csv # power input as thermal power (BNFL-Case-27-2c-history.txt)
scale_factor = 1.025641
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = 27_2c_axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[ave_clad_surface_temp]
type = PiecewiseLinear
data_file = 27_2c_clad_outer_temperature.csv
scale_factor = 1
format = columns
[]
[axial_clad_surface_temp_profile]
type = PiecewiseBilinear
data_file = 27_2c_axial_temperature_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 224856734 224865601'
y = '6.53288e-3 1 1 6.53288e-3'
[]
[clad_surface_temperature]
type = CompositeFunction
functions = 'ave_clad_surface_temp axial_clad_surface_temp_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellet]
block = pellet_type_1
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = pellet_type_1
burnup_function = burnup
fraction = 0.975 # Ratio of thermal heat to total heat for the rod
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 3.66123981
a_lower = 0.00324
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.08 0.92 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
block = clad
factor = 4.5e13 # (n/m2-s per W/m)
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[clad_surface_temp]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_surface_temperature
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.5e6 # FUMEXII_27(2c) => 25 bar (2.5 MPa) (He fill)
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diameter = 0.0082
diametral_gap =0.00016
burnup_relocation_stop = 0.026
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
initial_porosity = 0.05
gbs_model = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 204197750
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 15
linear_iteration_ratio = 100
iteration_window = 2
timestep_limiting_function = power_profile
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block ='3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
outputs = exodus
[]
[int_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[int_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fissionrate]
type = ElementAverageValue
block = pellet_type_1
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = '3'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet_type_1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = 1
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_total_power'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM156/BFM156.i)
################################################################################
#
# Description: Calvert Cliffs BFM156
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM156_power.csv
# axial peaking factor file BFM156_axial_peaking.csv
# flux boundary condition file BFM156_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.34015
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM156_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM156_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177406235 177406595'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177406235 177406595'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM156_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
# [Dampers]
# [limitT]
# type = MaxIncrement
# variable = temp
# max_increment = 50
# []
# []
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177406595
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/fuelrodlinevaluesampler/example_problem_smeared_test2.i)
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = SmearedTwoPelletOneType2D.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain
fuel_relocation_eigenstrain fuel_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'initial timestep_end'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
initial_porosity = 0.0
temperature = temp
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = pellet_type_1
stress_free_temperature = 295
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[hotpressing]
type = UO2HotPressingCreepUpdate
block = pellet_type_1
burnup_function = burnup
initial_grain_radius = 10.0e-6
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'hotpressing'
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000 #TM default value
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 1.e20
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 300
[]
[]
[Preconditioning]
[SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-pc_type_asm'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-5 #8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
start_time = -200
num_steps = 2
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 6
iteration_window = 2
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
component = 1
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[nonlinear_its] # number of nonlinear iterations at each timestep
type = NumNonlinearIterations
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372 # rod height
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[fuel_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'fuel'
fraction = 0.51
num_points = 20
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[clad_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'clad'
fraction = 0.51
num_points = 20
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[]
[Outputs]
exodus = true
color = false
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK8/FK08.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy '
'elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy '
'strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz '
'stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz '
'creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage '
'peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/ifba_he_production/ifba_examp_template.i)
#
# 2-D RZ One Pellet Test - Coarse mesh example of IFBA layer
#
# This is an input template for a fast running example using the IFBA
# postprocessor. All of the possible ways to specify the IFBA layer are run
# using this template in a regression test format.
#
# The expected ouputs for each test depends on the model equation being used
# to calculate the He produced. For the burnup based equation, the He moles
# released at the end of the calculation is 1.4897e-6. A hand calculation is
# reproduced in the Excel spreadsheet IFBA_He_Calc included in the test
# directory. The burnup equation result computed for the same inputs is
# 1.4902e-6.
#
# Using the FRAPCON equation calculates a rate of He production, so comparing
# the first couple of time steps of the simulation to the hand calculation is
# more straightforward. Comparing the BISON results to the hand calculation is
#
# Time(s) He Prod (BISON) He Prod (Excel)
# 1000 1.01465e-10 1.01465e-10
# 3000 7.10250e-10 7.18769e-10
#
initial_fuel_density = 10431.0 #95% TD (TD = 10980)
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[grain_radius]
block = '3'
initial_condition = 5e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_strain'
[]
[clad]
block = 1
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'clad_thermal_strain'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
value = 5.3548e+14
fission_rate_function = power_history
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = 'fis_gas_released he_prod'
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Clad_Temp]
type = DirichletBC
variable = temp
boundary = '2'
value = 580.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
refab_pressure = 0.50e6
startup_time = 0.0
material_input = 'fis_gas_released he_prod'
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fclad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 298
eigenstrain_name = 'clad_thermal_strain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 2.5e6
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 #BWR change: length of fuel stack in meters (5*pellet height)
[]
[he_prod]
type = IFBAHeProduction
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup burnup he_prod interior_temp plenum_pressure'
[]
[outfile]
type = CSV
delimiter = ' '
[]
[]
(assessment/LWR/validation/IFA_535/analysis/rod_809/IFA_535_rod_809.i)
initial_fuel_density = 10398.06
[GlobalParams]
density = ${initial_fuel_density} #Assuming 10980 as the theoretical density
displacements = 'disp_x disp_y'
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
patch_size = 20 # 50
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = ifa535_rod809.e
[]
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1'
initial_condition = 9.36e-6 # 2D grain radius 6um
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_profile]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ifa535_809_power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ifa535_809_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 226494828 226496628 226498428 226516428 233159868 233159888'
y = ' 0.0303 1 1 0.0303 0.0303 1 1 0.0303'
[]
[flux] # reads and interpolates input data defining fast neutron flux
type = PiecewiseLinear
data_file = ifa535_809_fast_flux.csv
format = columns
[]
[clad_temp_bc]
type = PiecewiseLinear
data_file = ifa535_809_clad_bc.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system (in all cases here, the axisymmetric (RZ) version is specified)
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1' # fission rate applied to the fuel (block 2) only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.48724
a_lower = 0.01924
fuel_inner_radius = 0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1
RPF = RPF
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
axial_power_profile = axial_peaking_factors
function = flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 'clad'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
penalty = 1e9
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
roughness_secondary = 0.81e-6
roughness_primary = 1.0e-6
roughness_coef = 3.2
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 226498428
refab_gas_types = He
refab_fractions = 1
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 3.2e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.1e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get inital fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
refab_time = 226498428
refab_pressure = 0.7e6
refab_temperature = 449.05
refab_volume = 9.6e-6
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
initial_fuel_density = 10398.06
eigenstrain_name = fuel_volumetric_strain
[]
[density_clad]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6551.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = 'pellet_type_1'
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1'
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
diameter = 0.01054 #Fuel pellet diameter in m
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =2.44e-4
burnup_relocation_stop = 0.029
relocation_activation1 = 5000 #initial relocation activation power in W/m
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_growth
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 60
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 40
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
# time control
start_time = -100
end_time = 233159888
dtmax = 5e5
dtmin = 1
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
force_step_every_function_point = true
timestep_limiting_function = power_profile
optimal_iterations = 25
iteration_window = 6
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = 'pellet_type_1'
[]
[clad_elong]
type = NodalVariableValue
variable = disp_y
nodeid = 2359 #Global node ID 9739
[]
[input_rod_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
sync_times = 5556726
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE019/UFE019.i)
################################################################################
#
# Description: Calvert Cliffs UFE019
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file UFE019_power.csv
# axial peaking factor file UFE019_axial_peaking.csv
# flux boundary condition file UFE019_fast_flux.csv
#
################################################################################
initial_fuel_density = 10396.59
[GlobalParams]
density = ${initial_fuel_density} #94.75 %TD Assume TD = 10972.65 kg/m3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.29773
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
block = '1 3'
[]
[disp_y]
block = '1 3'
[]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
block = '1 3'
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = UFE019_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = UFE019_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 140582036 140582396'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 140582036 140582396'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = UFE019_fast_flux.csv
format = columns
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0398 .9602 0 0 0 0'
RPF = RPF
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = 5
secondary_boundary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
contact_pressure = mechanical_normal_lm
layer_thickness = layer_thickness_action
thermal_lm_scaling = 1.0e-2
correct_edge_dropping = true
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+14
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
correct_edge_dropping = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -pc_factor_shift_type -pc_factor_shift_amount -mat_mffd_err'
petsc_options_value = 'lu superlu_dist NONZERO 1e-15 1e-5'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 140582396
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/IFA_535/analysis/rod_812/IFA_535_rod_812.i)
# IFA 535.6 rod 812 (Table & Figure references are to IFA-535.pdf)
initial_fuel_density = 10398.06
[GlobalParams]
density = ${initial_fuel_density} #Table 1 (PDF page 14), 94.7% TD #Assuming a TD of 10980.
displacements = 'disp_x disp_y'
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 20 # 50
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = ifa535_rod812.e
[]
[]
[UserObjects]
[fuelPinGeometry]
type = FuelPinGeometry
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 297.0
# If the initial diameter from the mesh
# is compared to the pre & post-ramp diameters, then they should probably
# be compared at the same cladding temperatures.
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1'
initial_condition = 9.36e-6 # 2D grain radius 6um #From rod 810
#2.75e-6 #Table 3.2, 5.5/2 microns (Assuming 3D grain size)
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = avgPower_IFA535rod812.csv
format = columns
#direction = left
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axialPowerPeakingFactor_IFA535rod812.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 212261117 212261147 212264717 212264747 222089867 222090767'
y = '1.4475e-2 1 1 1.4475e-2 1.4475e-2 1 1 1.4475e-2'
[]
[cladTemp]
type = PiecewiseLinear
data_file = avgCladTemp_IFA535rod812.csv
format = columns
#direction = left
scale_factor = 1
[]
[cladPeakingFactors]
type = PiecewiseBilinear
data_file = axialCladTempPeakingFactor_IFA535rod811.csv
scale_factor = 1
axis = 1
[]
[cT]
type = CompositeFunction
functions = 'cladTemp cladPeakingFactors'
[]
[fluxFactor]
type = PiecewiseLinear
data_file = flux_IFA535rod811.csv
format = columns
#direction = left
scale_factor = 1
[]
[fluxValue]
type = CompositeFunction
functions = 'fluxFactor power_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1' # fission rate applied to the fuel (block 2) only
#fission_rate = fission_rate # coupling to the fission_rate aux variable
burnup_function = burnup
#fuel_pin_geometry = fuelPinGeometry
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuelPinGeometry
#a_upper = 337.53e-3 #317.4e-3+20.13e-3 (a_lower+pellet_height),top of fuel stack
#a_lower = 20.13e-3 #From top_bot_clad_height #18.5e-3 #bottom of fuel stack, Figure 3.1
#fuel_inner_radius = 0
#fuel_outer_radius = 4.569e-3 #Table 3.2, from diameter
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0988 0.9012 0 0 0 0'
fuel_volume_ratio = 1.0
#fuel_volume_ratio = 0.9756625712887741 #(dimple fraction) from calculations in fuel_volume_ratio.ipynb
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
axial_power_profile = axial_peaking_factors
#rod_ave_lin_pow = power_profile
#factor = 3.71098e13 #from fluxCalc.xlsx #8.025e17 #Table 3.7, avg. of cycles 8-11, converted to n/(m^2-s)
function = fluxValue
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
# Define mechanical contact between the
# fuel (sideset=10) and the clad (sideset=5)
primary = 5
secondary = 10
#penalty = 1e7 #for kinematic (default method is kinematic)
formulation = penalty #used by rod 810
penalty = 1e9
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
# Define thermal contact between the
# fuel (sideset=10) and the clad (sideset=5)
type = GasGapHeatTransfer
variable = temp
primary = 5 #'4 5 6' #5
secondary = 10 #8 #10
initial_moles = initial_moles # coupling to a postprocessor
# which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor
# which supplies the fission gas addition
roughness_secondary = 1e-6 #default
roughness_primary = 2e-6 #use 2e-6 instead of default
roughness_coef = 3.2 #use 3.2 unless know better
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 212261147
refab_gas_types = He
refab_fractions = 1
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
# pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
# pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
# pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7e6 #pp. 8 of "535.pdf"
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.1e6 #from pp.6 of "535.pdf" for IFA-409
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get
# inital fill gas mass
temperature = plenum_temperature # coupling to post processor to get
# gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get
# fission gas added
output = plenum_pressure # coupling to post processor to
# output plenum/gap pressure
refab_time = 212261147 #212264717 #217722744
refab_pressure = 3.21e6
refab_temperature = 298.15 #449.05
refab_volume = 9.6e-6
displacements = 'disp_x disp_y'
[]
[]
[claddingSurfTemp]
type = FunctionDirichletBC
function = cT
boundary = '1 2 3' #2 # cladding boundary
variable = temp
[]
[]
[Materials]
[density_clad]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6551.0 #Check this value; cladding is Zr-2
[]
[density_fuel]
type = StrainAdjustedDensity
block = 'pellet_type_1'
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
# temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
initial_porosity = .053 #(1-density/theoreticalDensity)
thermal_conductivity_model = NFIR # thermal conductivity model (independent of reactor type)
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1'
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1'
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 297.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation] # relocation strain measure for UO2
type = UO2RelocationEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
fuel_pin_geometry = fuelPinGeometry
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.2 #0.02
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor] # isotropic elasticity tensor for Zry cladding
type = ZryElasticityTensor
block = 'clad'
[]
[clad_stress] # stress update class to govern the return mapping algorithm for creep
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_creep'
block = 'clad'
[]
[clad_creep] # creep for zircaloy cladding
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
temperature = temp
stress_free_temperature = 297.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_growth
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
initial_fuel_density = 10398.06
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1'
temperature = temp
#fission_rate = fission_rate # coupling to fission_rate aux variable
#initial_grain_radius = 9.36e-6 # 2D grain radius 6um #From rod 810
#2.75e-6 #Table 3.2, 5.5/2 microns (Assuming 3D grain size)
grain_radius = grain_radius
gbs_model = true
burnup_function = burnup
#total_densification = 0.009 #Leave at default
initial_porosity = .053 #(1-density/theoreticalDensity)
transient_option = MICROCRACKING
#compute_swelling = true
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200.0
min_value = 200
[]
# [limitDisp]
# type = MaxIncrement
# max_increment = 1e-5
# variable = disp_x
# []
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Executioner]
type = Transient
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-3 #1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 222090767 #last time step from avgPower_IFA535rod812.csv
dtmax = 2e6 #1e6
dtmin = 1
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
force_step_every_function_point = true
timestep_limiting_function = power_profile
max_function_change = 3e20
optimal_iterations = 20 #15
iteration_window = 6
linear_iteration_ratio = 100
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
# volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
[]
[avg_clad_temp]
# average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = 'pellet_type_1'
[]
[input_rod_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[maxCenterlineTemp]
type = NodalExtremeValue
boundary = 12 # pellet_centerline
variable = temp
[]
[maxFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
variable = penetration
[]
[minFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
value_type = min
variable = penetration
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM073/BFM073.i)
################################################################################
#
# Description: Calvert Cliffs BFM073
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM073_power.csv
# axial peaking factor file BFM073_axial_peaking.csv
# flux boundary condition file BFM073_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31914
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM073_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM073_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179191453 179191813'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179191453 179191813'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM073_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179191813
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFL031/BFL031.i)
################################################################################
#
# Description: Calvert Cliffs BFL031
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFL031_power.csv
# axial peaking factor file BFL031_axial_peaking.csv
# flux boundary condition file BFL031_fast_flux.csv
#
################################################################################
initial_fuel_density = 10460.45
[GlobalParams]
density = ${initial_fuel_density} #95.332 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
patch_size = 20
patch_update_strategy = auto
partitioner = centroid # this will help with run time
centroid_partitioner_direction = y # this will help with run time
[mesh]
type = FileMeshGenerator
file = BFL031_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFL031_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFL031_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 174660997 174661357'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 174660997 174661357'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFL031_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0013589
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '9 13' # clad interior + fuel exterior
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[oxidationcladding]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 174661357
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_2984]
type = NodalVariableValue
nodeid = 2983
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/RIA/REP_Na_4_RIA.i)
# REP Na 4 RIA
initial_fuel_density = 10476.35
[GlobalParams]
density = ${initial_fuel_density} # assumed TD = 10970
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
coord_type = RZ
type = AugmentedLagrangianContactProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
maximum_lagrangian_update_iterations = 200
acceptable_iterations = 30
acceptable_multiplier = 10
[]
[Mesh]
patch_size = 40
#patch_update_strategy = auto
#partitioner = centroid
#centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = REP_Na4.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[fuel_cond]
order = CONSTANT
family = MONOMIAL
[]
[swelling_strain]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_axial_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_flux]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_hmode]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htype]
order = CONSTANT
family = MONOMIAL
[]
[critical_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_mag]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[SED]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = REPNa4_power_history_Full.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = REPNa4_axial_peaking_Full.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # inlet coolant pressure evolution
type = PiecewiseLinear
format = columns
scale_factor = 1.0
xy_data = '0 101325
8640 15499970
124675200 15499970
124718400 101325
125193600 101325
125193610 101325
125193650 500008
125193700 500008
125193900 500008
125194000 101325
125194100 101325'
[]
[temp_ramp] # inlet coolant temp evolution
type = PiecewiseLinear
format = columns
scale_factor = 1.0
xy_data = '0 293.15
8640 591
20476800 591
21859200 600
47692800 600
51840000 593
72144000 593
73440000 586
96940800 586
99360000 583
124675200.0 583
124761600.0 293.150
125193600.0 293.150
125193650.0 553.150
125193900.0 553.150
125194000.0 293.150
125194100.0 293.150'
[]
[burnup_GWd]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz axial_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 'clad'
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz plastic_strain_xx plastic_strain_yy plastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx
elastic_strain_yy elastic_strain_zz hoop_stress axial_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.5678974
a_lower = 0.0045
fuel_inner_radius = 0
fuel_outer_radius = 0.0040959
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0449 0.9551 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_profile
factor = 3e13 #n/m2-s
block = 'clad'
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
block = 'clad'
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[fuel_conductance]
type = MaterialRealAux
property = thermal_conductivity
variable = fuel_cond
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[swelling_strain]
type = MaterialRealAux
property = volumetric_swelling_strain
variable = swelling_strain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = axial_creep_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = hoop_plastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = axial_plastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[total_axial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_axial_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = axial_elastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[plastic_strain_mag]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_mag
block = clad
execute_on = timestep_end
[]
[clad_coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = clad_coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[clad_coolant_flux]
type = MaterialRealAux
property = output_heat_flux
variable = clad_coolant_flux
boundary = 2
[]
[coolant_channel_hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = coolant_channel_hmode
boundary = 2
[]
[coolant_channel_htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = coolant_channel_htype
boundary = 2
[]
[critical_heat_flux]
type = MaterialRealAux
property = critical_heat_flux
variable = critical_heat_flux
boundary = 2
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[]
[ofract_total]
type = MaterialRealAux
property = current_oxygen_weight_frac_total
variable = oxywtfract_total
execute_on = timestep_end
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
property = oxygen_weight_frac_gained_total
variable = oxywtfgain_total
execute_on = timestep_end
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
property = fract_beta_phase
variable = fract_beta_phase
block = 'clad'
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 210 #10
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.3
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[pellet_clad_mechanical_2]
primary = 5
secondary = 410
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 0.1e-6 #2.0e-6
roughness_secondary = 0.1e-6 #0.5e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
emissivity_primary = 0.800 #Emissivity for fuel
emissivity_secondary = 0.325 #Emissivity for clad
refab_time = 125107200
refab_gas_types = He
refab_fractions = 1
contact_coef = 20 #10 default
[]
[]
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_temperature = 293.15
initial_pressure = 2.60e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior #plenumTemp
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
# extra_vector_tags = 'ref'
refab_time = 125107200
refab_pressure = 0.301e6
refab_temperature = 293.15
refab_volume = 2.0e-6
[]
[]
[]
[CoolantChannel]
# [convective_clad_surface_water] # apply convective boundary to clad outer surface
# boundary = '1 2 3'
# variable = temp
# inlet_temperature = temp_ramp # K
# inlet_pressure = pressure_ramp # Pa
# inlet_massflux = 3244.044104 # kg/m^2-sec
# rod_diameter = 0.00951 # m
# rod_pitch = 1.26e-2 # m
# coolant_material = 'water'
# compute_enthalpy = true
# oxide_thickness = oxide_thickness # coupled oxide_thickness
# number_axial_zone = 50
# []
#
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp # K
inlet_pressure = pressure_ramp # Pa
inlet_massflux = 3533 # kg/m^2-sec Based on flow rate provided and flow area and estimated density of 885.1 kg/m^3
flow_area = 8.74855e-5 #m^2
heated_diameter = 1.172526e-2 #m
hydraulic_diameter = 4.7e-3 #m
heated_perimeter = 2.984513e-2 #m
coolant_material = 'sodium'
compute_enthalpy = true
heat_transfer_mode = 0
oxide_thickness = oxide_thickness # coupled oxide_thickness
number_axial_zone = 50
rod_diameter = 0.0095 # m
htc_correlation_type = 2
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
#density = 10476.35
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.045
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
matpro_poissons_ratio = 1
matpro_youngs_modulus = 1
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.0 #0.0208
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = 'pin_geometry'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
initial_fuel_density = 10476.35
total_densification = 0.00675
initial_porosity = 0.045
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
fission_rate = fission_rate
burnup_function = burnup
initial_porosity = 0.045
grain_radius_const = 5.0e-6
gbs_model = false
transient_option = MICROCRACKING_BURNUP
[]
[clad_density]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6550
[]
[clad_thermal]
type = ZryThermal
block = 'clad'
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
temperature = temp
matpro_poissons_ratio = true
matpro_youngs_modulus = true
cold_work_factor = 0.5
fast_neutron_fluence = fast_neutron_fluence
block = 'clad'
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
#inelastic_models = 'clad_zrycreep clad_zryplasticity'
inelastic_models = 'clad_zryplasticity'
block = 'clad'
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
#creeprate_scale_factor = 1
model_irradiation_creep = 1
model_primary_creep = 1
model_thermal_creep = 1
max_inelastic_increment = 0.0001
creeprate_scale_factor = 0
enable = 0
[]
[clad_zryplasticity]
type = ZryPlasticityUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.5
plasticity_model_type = MATPRO
zircaloy_alloy_type = 4
max_inelastic_increment = 0.0001
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
compute = 0
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00417789
clad_outer_radius = 0.00475615
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
oxygen_weight_fraction_initial = 0.0012
[]
[phase]
type = ZrPhase
block = 'clad'
numerical_method = 2
temperature = temp
[]
[StrainEnergyDensity]
type = StrainEnergyDensity
block = 'clad'
incremental = 1
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200 # The maximum permissible iterative value for the variable.
min_value = 200 # The minimum permissible iterative value for the variable.
variable = temp # The name of the variable that this damper operates on
[]
[contact_slip]
type = ContactSlipDamper
primary = 5
secondary = 10
min_damping_factor = 0.05
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'contact'
contact_line_search_allowed_lambda_cuts = 0
contact_line_search_ltol = 0.5
verbose = true
l_max_its = 100
l_tol = 1e-3
nl_max_its = 40
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0
end_time = 125194100 #125193600 #125194100 is the end time for the RIA
dtmax = 10
dtmin = 1e-7
[TimeStepper]
type = IterationAdaptiveDT
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = power_profile
max_function_change = 5e5
force_step_every_function_point = true
timestep_limiting_postprocessor = material_timestep
time_t = '125193610 125193620 125193630 125193640 125193650 125193660 125193670 125193680'
time_dt = '10 10 10 10 10 10 10 10'
[]
[Quadrature]
order = FIFTH #SEVENTH
side_order = SEVENTH #Comment out if order = SEVENTH
[]
[]
[Postprocessors]
# [ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
# type = SideAverageValue
# boundary = 9 #For RIA the node number is ##***8479***##
# variable = temp
# execute_on = 'initial linear'
# []
[ave_temp_interior]
type = NodalVariableValue
variable = temp
nodeid = 8479
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[1_rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[3_burnup_GWd]
type = FunctionValuePostprocessor
function = burnup_GWd
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = 'clad'
variable = vonmises_stress
[]
[z_average_RPF]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = RPF
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = 'clad'
[]
## Nodal values
[FCT] #fuel centerline temperature
type = NodalVariableValue
variable = temp
nodeid = 3866 #(0, 0.303375, 0)
[]
[FST] #fuel surface temperature
type = NodalVariableValue
variable = temp
nodeid = 3823 #(0.0040959, 0.303375, 0)
[]
[CIST] #clad inner surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9557 #(0.0041779, 0.305106, 0)
[]
[COST] #clad outer surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9547 #(0.00475615, 0.305106, 0)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 3823 #(0.0040959, 0.303375, 0)
use_displaced_mesh = true
[]
#######################################
[qpoint_penetration] #FOCE
type = ElementalVariableValue
variable = qpoint_penetration
elementid = 1200
use_displaced_mesh = 1
[]
[penetration] #FOCN
type = NodalVariableValue
variable = penetration
nodeid = 3823
use_displaced_mesh = 1
[]
[contact_pressure] #FOCN
type = NodalVariableValue
variable = contact_pressure
nodeid = 3823
use_displaced_mesh = 1
[]
[gap_cond] #FOCE
type = ElementalVariableValue
variable = gap_cond
elementid = 1200
use_displaced_mesh = 1
[]
[creep_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_creep_strain
elementid = 2981
use_displaced_mesh = 1
[]
[elastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_elastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[plastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_plastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[total_hoop_strain] #COCE
type = ElementalVariableValue
variable = total_hoop_strain
elementid = 2981
use_displaced_mesh = 1
[]
[clad_hoop_stress] #COCE
type = ElementalVariableValue
variable = hoop_stress
elementid = 2981
use_displaced_mesh = 1
[]
[clad_axial_elongation] #COTN
type = NodalVariableValue
variable = disp_y
nodeid = 10755
use_displaced_mesh = 1
[]
[clad_oxide_thickness] #COCE
type = ElementalVariableValue
variable = oxide_thickness
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_htc] #COCE
type = ElementalVariableValue
variable = clad_coolant_htc
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_temp] #COCE
type = ElementalVariableValue
variable = coolant_temp
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_flux] #COCE
type = ElementalVariableValue
variable = clad_coolant_flux
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_hmode] #COCE
type = ElementalVariableValue
variable = coolant_channel_hmode
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_htype] #COCE
type = ElementalVariableValue
variable = coolant_channel_htype
elementid = 2981
use_displaced_mesh = 1
[]
[critical_heat_flux] #COCE
type = ElementalVariableValue
variable = critical_heat_flux
elementid = 2981
use_displaced_mesh = 1
[]
[fuel_centerline_temp] #FICN
type = NodalVariableValue
variable = temp
nodeid = 3866
[]
[fuel_surface_temp] #FOCN
type = NodalVariableValue
variable = temp
nodeid = 3823
[]
[clad_inner_surface_temp] #CICN
type = NodalVariableValue
variable = temp
nodeid = 9557
[]
[clad_outer_surface_temp] #COCN
type = NodalVariableValue
variable = temp
nodeid = 9547
[]
[fuel_axial_elongation] #FOTN
type = NodalVariableValue
variable = disp_y
nodeid = 7739
[]
[clad_radial_elongation] #COCN
type = NodalVariableValue
variable = disp_x
nodeid = 9547
[]
[fuel_radial_elongation] #FOCN
type = NodalVariableValue
variable = disp_x
nodeid = 3823
[]
[SED_PPN_O] #COCE
type = ElementalVariableValue
variable = SED
elementid = 2981
use_displaced_mesh = 1
[]
[SED_PPN_I] #CICE
type = ElementalVariableValue
variable = SED
elementid = 2984
use_displaced_mesh = 1
[]
[zz_OFract_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfract_total
elementid = 2981
use_displaced_mesh = 1
[]
[zz_OGain_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfgain_total
elementid = 2981
use_displaced_mesh = 1
[]
#######################################
[max_clad_SED]
type = ElementExtremeValue
block = 'clad'
variable = SED
value_type = max
[]
#Post processor to calculate radial average enthalpy. This postprocessor isnt available yet in BISON
[z_RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.3
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = z_RAE
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_diameter'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_pellet_diameter'
[]
#Location of peak power node at appoximately 0.3 m in mesh
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = 'outfile_radial_temp'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
csv = true
#exodus = true
color = false
[outfile_clad_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_pellet_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_radial_temp]
type = CSV
end_time = -100000
[]
[console]
type = Console
output_linear = true
max_rows = 10
[]
[checkpoint]
type = Checkpoint
num_files = 2
file_base = recover_files
[]
[chkfile]
type = CSV
show = 'ave_temp_interior fis_gas_released FCT average_burnup peak_RAE'
execute_on = 'FINAL'
[]
[exodus]
type = Exodus
time_step_interval = 4
end_time = 125193700
[]
[exodus_RIA]
type = Exodus
time_step_interval = 3
start_time = 125193695
[]
[checkpoint_RIA]
type = Checkpoint
file_base = recover_files_RIA
sync_times = '124761600 125107200 125193600 125193650 125193700 125193700.06 125193700.07 125193700.08 125193700.09 125193700.10 125193700.20 125193700.30 125193700.40 125193700.50 125193700.60 125193700.70 125193700.80 125193700.90 125193701.00 125193701.25 125193701.50 125193701.75 125193702.00 125193702.25 125193702.50 125193702.75 125193703.00 125193704.00 125193705.00'
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
show_material_props = true
[]
(assessment/LWR/validation/HbepR1/analysis/A184/HbepR1_A184.i)
initial_fuel_density = 10490
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
temperature = temp
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.95e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .0049695
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.68
ny_cl = 3
clad_top_gap_height = 0.24682
clad_gap_width = 1.005e-4
elem_type = QUAD8
[]
patch_size = 100 # 1000 lowering this and setting the strategy to auto will reduce the amount of memory required to run the job.
patch_update_strategy = iteration #auto
partitioner = centroid # this will help with run time
centroid_partitioner_direction = y # this will help with run time
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 273 #K
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.148e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseConstant
data_file = A184-power.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = A184-axial-profile.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '-100 0 166323600 166327200' #
y = '0.014429 1 1 0.014429'
[]
[temp_ramp]
type = PiecewiseBilinear
data_file = A184-axial-tempprofile.csv
scale_factor = 1
axis = 1
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress hydrostatic_stress'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz creep_strain_xx
creep_strain_xy creep_strain_yy vonmises_stress creep_strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 3 # fission rate applied to the fuel (block 2) only
fission_rate = fission_rate # coupling to the fission_rate aux variable
extra_vector_tags = 'ref'
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.68664e13 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.68478
fuel_inner_radius = 0.0
fuel_outer_radius = .0049695 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0233 .9767 0 0 0 0'
RPF = RPF
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 1.1e-6
roughness_secondary = 3.5e-7
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 # Pa
function = pressure_ramp
[]
[]
[coolant_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = temp_ramp
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 0.375e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
initial_porosity = 0.04
temperature = temp
burnup = burnup
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00507
clad_outer_radius = 0.005865
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 273
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
diameter = 0.00939 # fuel pellet diameter in meters
diametral_gap = 100.5e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = .047 # turn off relocation
relocation_activation1 = 5000
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 273
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10490
total_densification = .0043
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[UserObjects]
[integral_burnup] # Added the computation of the average fuel rod burnup
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 166327200
dtmax = 1e6
dtmin = 0.1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
# Clad postprocessor (The rest are created with StandardLWRFuelRodOutputs)
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
output_limiting_function = power_history
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/IFA_432/analysis/IFA_432_Base.i)
# This is a partial input file base with information/features common to all the fuel rods within this assessment.
# NOTE: This file will not run on its own, it is used to create a complete input file in the rod-specific input files.
# Fuel material properties
initial_fuel_density = 10431 # kg/m^3
initial_grain_radius = 3.5e-6 # m
initial_fuel_porosity = 0.05 # (-)
fuel_thermal_expansion_coeff = 10e-6 # K^-1
total_densification = .0043 # (-)
# Cladding material properties
cladding_thermal_conductivity = 16.0 # W/m-K
cladding_specific_heat = 330.0 # J/kg-K
cladding_density = 6551.0 # kg/m^3
# Rod geometry
fuel_inner_radius = 0.00 # m
a_lower = 0.01494 # m
# Temperature conditions
initial_temperature = 513.3 # K
cladding_temperature_BC = 513.3 # K
stress_free_temperature = 297 # K
# Neutronics and power
energy_per_fission = 3.2e-11 # J/fission
fast_neutron_flux_factor = 1.6e12 # n/m^2-s per W/m
# Coolant pressure ramp parameters
pressure_ramp_x = '-100 0'
pressure_ramp_y = '0.029395 1'
pressure_ramp_factor = 3.447e6 # (-)
# Plenum parameters
initial_plenum_pressure = 1.0135e5 # Pa
startup_time = 0 # s
# Physical constants
ideal_gas_constant = 8.3143 # J/K-mol
# Contact
contact_penalty = 1e14 # (-)
roughness_primary = 2.16e-6
roughness_secondary = 6.35e-7
kennard_coefficient = 0.2173
# Relocation
relocation_activation1 = 5000 # W/m
burnup_relocation_stop = 0.00821 # FIMA
# Postprocessor parameters
power_lower_TC_point = '0 0.50389 0'
# Numerical options
damper_max_temperature_increment = 50.0 # K
l_max_its = 80
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
n_startup_steps = 1
dtmin = 1 # s
Timestepper_dt = 900 # s
# Irradiation history
end_time = 29700 # s
[GlobalParams]
density = ${initial_fuel_density} # initial fuel density 95% of theoretical (10980 kg/m3)
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = '3 4 5'
initial_condition = ${initial_grain_radius}
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${bol_power_data_file}
scale_factor = 1
format = columns
[]
[axial_peaking_factor]
type = PiecewiseBilinear
data_file = ${bol_axial_data_file}
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factor'
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = '3 4 5'
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = '3 4 5'
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factor
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3 4 5'
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = clad
variable = creep_strain_mag
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Burnup]
[burnup]
block = '3 4 5'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factor
num_radial = 81
num_axial = 21
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.1 .9 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = ${contact_penalty}
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
kennard_coefficient = ${kennard_coefficient}
gap_conductance_model = TOPTAN
thermal_accommodation_model = TOPTAN
gas_thermal_conductivity_model = ADVANCED
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = TOPTAN
meyer_hardness_model = MATPRO
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = DirichletBC
boundary = '1 2 3'
variable = temperature
value = ${cladding_temperature_BC}
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = ${pressure_ramp_factor}
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = '3 4 5'
thermal_conductivity_model = NFIR
initial_porosity = ${initial_fuel_porosity}
temperature = temperature
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 4 5'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = '3 4 5'
temperature = temperature
[]
[fuel_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = '3 4 5'
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = '3 4 5'
burnup_function = burnup
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factor
relocation_activation1 = ${relocation_activation1}
burnup_relocation_stop = ${burnup_relocation_stop}
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[clad_inelastic_stressUpdate] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
temperature = temperature
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = ${cladding_density}
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3 4 5'
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = '3 4 5'
burnup = burnup
temperature = temperature
initial_fuel_density = ${initial_fuel_density}
total_densification = ${total_densification}
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3 4 5'
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temperature
max_increment = ${damper_max_temperature_increment}
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
# Time steps set up to match halden data
# start_time = -100
n_startup_steps = ${n_startup_steps}
end_time = ${end_time}
dtmin = ${dtmin}
[TimeStepper]
type = ConstantDT
dt = ${Timestepper_dt}
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3 4 5'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3 4 5'
outputs = exodus
[]
[average_grain_radius]
type = ElementAverageValue
block = '3 4 5'
variable = grain_radius
[]
[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
block = '3 4 5'
burnup_function = burnup
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3 4 5'
outputs = exodus
[]
[power_lower_TC]
type = FunctionValuePostprocessor
function = q
point = ${power_lower_TC_point}
[]
[power_upper_TC]
type = FunctionValuePostprocessor
function = q
point = ${power_upper_TC_point}
[]
[upper_TC_temperature] # output temperature at upper TC (mesh dependent!!)
type = NodalVariableValue
variable = temperature
nodeid = ${upper_TC_temperature_nodeid}
[]
[lower_TC_temperature] # output temperature at upper TC (mesh dependent!!)
type = NodalVariableValue
variable = temperature
nodeid = ${lower_TC_temperature_nodeid}
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temperature
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
cladding_blocks = 1
rod_component = BOTH
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'fission_gas_released rod_total_power upper_TC_temperature lower_TC_temperature'
output_limiting_function = power_history
sync_only = true
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
[Debug]
show_var_residual = 'temperature disp_x disp_y'
show_var_residual_norms = true
[]
(assessment/LWR/validation/IFA_597_3/analysis/rod_8/IFA_597_rod8_frictionless.i)
initial_fuel_density = 10500.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_iterations = 10
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ifa_597r8.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = '3 4'
initial_condition = 6.1074e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = 597-R8_linear_power.csv
format = columns
scale_factor = 1.0526316
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = 597-R8_axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 269029548 269030508 269055648 269056588 280124964 280125417'
y = '0 1 1 0.014475 0.014475 0.457 0.457 0.014475'
[]
[flux]
type = PiecewiseLinear
data_file = flux.csv
format = columns
[]
[clad_average_temp]
type = PiecewiseLinear
data_file = 597-R8_clad_outer_temperature.csv
format = columns
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = '3 4'
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3 4'
fission_rate = fission_rate
fraction = 0.95 # per Glyn Rossiter's suggestion
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = '3 4'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_lower = 0.00324
a_upper = 0.3571
fuel_inner_radius = 0.000
fuel_outer_radius = 0.0052195
fuel_volume_ratio = .994899
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.03347 0.96653 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3 4'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = 1
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_secondary = 1.3e-6
roughness_primary = 1.38e-6
roughness_coef = 3.2
contact_pressure = contact_pressure
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 269055648
refab_gas_types = He
refab_fractions = 1
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_average_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 #changes to 3.2e6 after 59 MWd/kgUO2
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.0e5 #changes to 5e5 after 59 MWd/kgUO2
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 269055648
refab_pressure = 5e5
refab_temperature = 500
refab_volume = 6e-6
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = '3 4'
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10500.0
[]
[fuel_thermal]
type = UO2Thermal
block = '3 4'
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
initial_porosity = 0.04372
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 4'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = '3 4'
temperature = temp
stress_free_temperature = 297
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = '3 4'
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = '3 4'
burnup_function = burnup
diameter = 0.010439
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =2.11e-4
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 297
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3 4'
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.04372
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
[]
[density_clad]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = '3 4'
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 280125417
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 20
linear_iteration_ratio = 100
dt = 100
force_step_every_function_point = true
timestep_limiting_function = power_profile
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block ='3 4'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3 4'
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = exodus
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = exodus
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3 4'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.3539 # rod height
[]
[average_fission_rate]
type = AverageFissionRate
rod_ave_lin_pow = power_profile
fuel_outer_radius = 0.0052195
fuel_inner_radius = 0.000
outputs = exodus
[]
[power_tc_location]
type = FunctionValuePostprocessor
function = q
point = '0 0.33319 0'
[]
[TC_temp]
type = NodalVariableValue
variable = temp
nodeid = 7476 # Global NodeID 7477
[]
[elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 1887 # Global NodeID 1888
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = '3 4'
[]
[Outputs]
perf_graph = true
csv = 1
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage TC_temp rod_total_power elongation'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2b/27_2b.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} # 95% TD assuming TD=10980
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 9.5e-4
pellet_mesh_density = customize
ny_p = 8
nx_c = 4
nx_p = 12
pellet_outer_radius = 0.005305
ny_cu = 3
ny_c = 8
clad_bot_gap_height = 1e-3
pellet_quantity = 1
pellet_height = 0.0127
ny_cl = 3
plenum_fuel_ratio = 0.45
clad_gap_width = 9.5e-5
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[disp_x]
initial_condition = 0.0
[]
[disp_y]
initial_condition = 0.0
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[grain_radius]
block = pellet
initial_condition = 7.5e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 43200 5e8'
y = '0 15000 15000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellet]
block = pellet
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[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
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
# Note: The U235 should be 13% but the model does not currently work above 12%
[Burnup]
[burnup]
block = 3
order = CONSTANT
family = MONOMIAL
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.12 0.88 0 0 0 0'
RPF = RPF
fuel_volume_ratio = 1
fuel_pin_geometry = fuel_pin_geometry
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
execute_on = timestep_begin
factor = 1.6e12 # (n/m2-s per W/m) used HALDEN fast flux
block = clad
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = clad
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
roughness_coef = 3.2
roughness_primary = 2.0e-6
roughness_secondary = 1.0e-6
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[clad_bc]
type = DirichletBC
variable = temp
boundary = '1 2 3'
value = 516.2 # Clad wall temp = 240+.4162*(LHR)^.75, where temp is C and LHR is kW/m
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.447e6 # Halden coolant pressure
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 5.0e5 # FUMEXII => 500 kPa pressure (He fill)
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.065
relocation_activation1 = 5000
fuel_pin_geometry = fuel_pin_geometry
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
creeprate_scale_factor = 1
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 409638200
[TimeSteppers]
[ts1]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[intg_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[intg_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[fuel_center_temperature]
type = NodalVariableValue
nodeid = 467 # GlobalNodeID 468
variable = temp
[]
[average_fissionrate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.0127 # rod height
[]
[]
[VectorPostprocessors]
[True]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242 RPF'
height =0.00635
burnup_function = burnup
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_total_power'
execute_on = 'FINAL'
[]
[checkpoint]
type = Checkpoint
num_files = 2
file_base = recover_files
sync_times = '409638200'
sync_only = true
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE067/UFE067.i)
################################################################################
#
# Description: Calvert Cliffs UFE067
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file UFE067_power.csv
# axial peaking factor file UFE067_axial_peaking.csv
# flux boundary condition file UFE067_fast_flux.csv
#
################################################################################
initial_fuel_density = 10396.59
[GlobalParams]
density = ${initial_fuel_density} #94.75 %TD Assume TD = 10972.65 kg/m3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.30013
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = UFE067_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = UFE067_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 141158832 141159192'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 141158832 141159192'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = UFE067_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx '
'strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy '
'creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0398 .9602 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 273
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 60
l_tol = 8e-3
nl_max_its = 80
nl_rel_tol = 1e-4
nl_abs_tol = 1e-7
start_time = -100
end_time = 141159192
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage '
'maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03_ccm.i)
# This file was created using BIF with the following inputs:
# FK03/FK03.var - md5sum: 63fb064f9380e246b80d3fb7762c0b71
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_hmode]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htype]
order = CONSTANT
family = MONOMIAL
[]
[critical_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[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
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[coolant_channel_htc]
type = MaterialRealAux
variable = coolant_channel_htc
property = coolant_channel_htc
boundary = 2
[]
[coolant_channel_hmode]
type = MaterialRealAux
variable = coolant_channel_hmode
property = coolant_channel_hmode
boundary = 2
[]
[coolant_channel_htype]
type = MaterialRealAux
variable = coolant_channel_htype
property = coolant_channel_htype
boundary = 2
[]
[critical_heat_flux]
type = MaterialRealAux
variable = critical_heat_flux
property = critical_heat_flux
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[CoolantChannel]
[clad_outer_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 295
inlet_pressure = 0.1E6 # Pa
inlet_massflux = 100.0 # kg/m^2-sec
rod_diameter = 1.10e-2 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
chf_scalef = 5.0
htc_correlation_type = 9
chf_correlation_type = 5
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 550000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK6/FK06.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy '
'elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy '
'strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz '
'stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz '
'creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage '
'peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/multi_sample_action/test2.i)
# Config params
temperature = 1672.38
density = 10522.95
initial_grain_radius = 0.000006
fission_rate = 0.00E+00
oxygen_to_metal_ratio = 2
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
temperature = ${temperature}
multi_sample_size = 2
[]
[Mesh]
coord_type = RZ
[bottom]
type = SideSetsFromNormalsGenerator
new_boundary = bottom
input = subs_combiner
normals = '0 -1 0'
[]
[left]
type = SideSetsFromNormalsGenerator
new_boundary = left
input = bottom
normals = '-1 0 0'
[]
[]
[MultiSample]
[GeneratedMeshGenerator]
[mymesh]
dim = 2
ymax = .01
xmax = 0.005
[]
[]
[SubdomainIDGenerator]
[subs]
input = mymesh
[]
[]
[MultiSampleMeshCombiner]
[subs]
[]
[]
[UO2CreepUpdate]
[fuel_creep]
initial_grain_radius = ${initial_grain_radius}
oxygen_to_metal_ratio = ${oxygen_to_metal_ratio}
fission_rate = fission_rate
density = ${density}
multi_sample_number_params = 'a7'
multi_sample_number_values = '7e-37 8e-37'
[]
[]
[ElementExtremeValue]
[creep_rate]
value_type = max
variable = creep_rate
execute_on = timestep_end
[]
[]
[ComputeMultipleInelasticStress]
[elastic_stress]
tangent_operator = nonlinear
inelastic_models = 'fuel_creep'
absolute_tolerance = 1e-20
[]
[]
[MultiSamplePressure]
[applied_pressure]
boundary = 'top'
function = applied_pressure
multi_sample_number_params = 'factor'
multi_sample_number_values = '6.80E+07 6.90E+07'
[]
[]
[ComputeLog10]
[log_creep_rate]
pp_names = creep_rate
expression = 0
execute_on = 'initial timestep_end'
[]
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[axial_stress]
order = CONSTANT
family = MONOMIAL
[]
[axial_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[applied_pressure]
type = PiecewiseLinear
x = '0 1'
y = '0 -1'
[]
[applied_temperature]
type = PiecewiseLinear
x = '0 1'
y = '0 ${temperature}'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
add_variables = true
incremental = true
generate_output = 'stress_xx stress_yy strain_yy strain_xx creep_strain_xx creep_strain_yy'
use_automatic_differentiation = false
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
property = creep_rate
execute_on = timestep_end
variable = creep_rate
[]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = ${fission_rate}
execute_on = 'Initial'
[]
[]
[BCs]
[bottom_no_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
preset = true
[]
[central_axis_no_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
preset = true
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
density = ${density}
[]
[]
[Dampers]
[limitY]
type = MaxIncrement
max_increment = 100e-6
variable = disp_y
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
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 = 500
nl_max_its = 100
l_tol = 1e-4
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
start_time = 0
end_time = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
[]
[]
[Outputs]
csv = true
execute_on = 'TIMESTEP_END'
exodus = true
[]
(assessment/LWR/validation/IFA_534/analysis/IFA_534_Base.i)
# This is a partial input file base with information/features common to all the fuel rods within this assessment.
# NOTE: This file will not run on its own, it is used to create a complete input file in the rod-specific input files.
# Fuel material properties
initial_fuel_density = 10431 # kg/m^3 #95% of TD (TD assumed to be 10980)
fuel_thermal_expansion_coeff = 10e-6 # K^-1
# Cladding material properties
cladding_thermal_conductivity = 16.0 # W/m-K
cladding_specific_heat = 330.0 # J/kg-K
cladding_density = 6551.0 # kg/m^3
# Fuel geometry
a_lower = 0.00324 # m
a_upper = 0.407 # m
fuel_outer_radius = 0.00456 # m
fuel_inner_radius = 0 # m
fuel_volume_ratio = 1.0 # (-)
fuel_diameter = 0.00912 # m
diametral_gap = 170e-6 # m
rod_power_scale_factor = 0.407 # m (rod height)
# Temperature conditions
initial_temperature = 293 # K
stress_free_temperature = 293 # K
# Neutronics, power, and isotope fractions
energy_per_fission = 3.2e-11 # J/fission
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# Coolant pressure ramp parameters
pressure_ramp_x = '-100 0 127353600 127357200 127425420 127432620 136365300 136368900'
pressure_ramp_y = '0.006539 1 1 0.006539 0.006539 0.20645 0.20645 0.006539'
pressure_ramp_factor = 15.5e6 # (-)
# Contact
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
# Relocation
relocation_activation1 = 5000 # W/m
burnup_relocation_stop = 0.029 # FIMA
# Plenum parameters
initial_plenum_pressure = 2.15e6 # Pa
startup_time = 0 # s
refab_time = 127360800 # s
refab_pressure = 2.15e6 # Pa
refab_temperature = 293 # K
refab_volume = 5.1e-6 # m^3
# Physical constants
ideal_gas_constant = 8.3143 # J/mol-K
# Numerical options
l_tol = 8e-3
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100 # s
dtmax = 1e6 # s
dtmin = 1 # s
TimeStepper_dt = 100 # s
TimeStepper_iteration_window = 2
TimeStepper_linear_iteration_ratio = 100
TimeStepper_max_function_change = 2e6
# Postprocessor paramters
FCT_nodeid = 1700
# Irradiation history
end_time = 136369000 # s
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
temperature = temperature
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = ${mesh_patch_size} # 20 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature} # set initial temperature to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = ${initial_grain_radius} # must be the same as the initial value in Sifgr
[]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ${power_history_data_file}
format = columns
[]
[axial_peaking_factors]
# reads and interpolates an input file containing the axial power profile vs time
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
# reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
#Ambient for initial build @ 0.101353 MPa, Base irradiation in a PWR @ 15.5 MPa, Ambient for refab @ 0.101353 MPa, Ramp testing done in the Halden Rx @ 3.2 MPa, Ambient for PIE @ 0.101353 MPa
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[flux]
type = PiecewiseLinear
data_file = ${fast_flux_data_file}
format = columns
[]
[clad_bc]
type = PiecewiseLinear
data_file = ${clad_temperature_data_file}
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_xy creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
block = pellet_type_1 # fission rate applied to the fuel only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_outer_radius = ${fuel_outer_radius}
fuel_inner_radius = ${fuel_inner_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temperature
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = '1'
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = '1'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
block = 1
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
penalty = ${contact_penalty}
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temperature
tangential_tolerance = ${tangential_tolerance}
roughness_coef = ${roughness_coef}
roughness_secondary = ${roughness_secondary}
roughness_primary = ${roughness_primary}
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
refab_time = ${refab_time}
refab_gas_types = He
refab_fractions = 1
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temperature
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = ${pressure_ramp_factor}
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
refab_time = ${refab_time}
refab_pressure = ${refab_pressure}
refab_temperature = ${refab_temperature}
refab_volume = ${refab_volume}
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = ${fuel_diameter}
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = ${diametral_gap}
relocation_activation1 = ${relocation_activation1}
burnup_relocation_stop = ${burnup_relocation_stop}
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'clad_inelastic_stressUpdate'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = ${cladding_density}
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
# l_max_its = 100
l_max_its = ${l_max_its}
l_tol = ${l_tol}
# controls for nonlinear iterations
# nl_max_its = 25
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
# time control
start_time = ${start_time}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
iteration_window = ${TimeStepper_iteration_window}
optimal_iterations = ${TimeStepper_optimal_iterations}
linear_iteration_ratio = ${TimeStepper_linear_iteration_ratio}
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = ${TimeStepper_max_function_change}
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[average_grain_radius]
type = ElementAverageValue
block = '3'
variable = grain_radius
[]
[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
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = ${rod_power_scale_factor}
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[FCT]
type = NodalVariableValue
variable = temperature
nodeid = ${FCT_nodeid}
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temperature
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(test/tests/solid_mechanics/uo2_mechanics/uo2_creep_matpro_none.i)
# Tests material model UO2CreepUpdate, which computes the combined thermal
# and irradiation creep for UO2 fuel.
#
# The test is a single element unit cube which is pulled in the y direction
# with a pressure of 5.0e7 Pa. The temperature is ramped up and the fission
# rate within the cube is constant.
# MATPRO is used to calculate neither Young's modulus nor Poisson's ratio;
# therefore, the displacements should be equal throughout the test.
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 300.0
scaling = 1e7
[]
[]
[Functions]
[top_pull]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[power]
type = ParsedFunction
expression = 2.5e4
[]
[temp]
type = ParsedFunction
expression = 300+1.2e3*t
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = FINITE
incremental = true
add_variables = true
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = '1 2 3 4 5 6 7'
order = FIRST
family = LAGRANGE
rod_ave_lin_pow = power
num_radial = 11
num_axial = 2
a_lower = 0
a_upper = .00041
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1
rpf_active = false
[]
[]
[BCs]
[u_top_pull]
type = Pressure
variable = disp_y
boundary = 11
factor = -0.5e8
function = top_pull
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[u_yz_fix]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[u_xy_fix]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[temp]
type = FunctionDirichletBC
variable = temp
boundary = '9 11'
function = temp
[]
[]
[Materials]
[elasticity_tensor]
type = UO2ElasticityTensor
block = '1 2 3 4 5 6 7'
temperature = temp
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[creep]
type = UO2CreepUpdate
block = '1 2 3 4 5 6 7'
temperature = temp
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
burnup_function = burnup
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'creep'
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = HeatConductionMaterial
block = '1 2 3 4 5 6 7'
specific_heat = 1.0
thermal_conductivity = 100.
[]
[density]
type = StrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10431.0
[]
[]
[Dampers]
[maxY]
type = MaxIncrement
variable = disp_y
max_increment = 1e-4
[]
[maxTemp]
type = MaxIncrement
variable = temp
max_increment = 120.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 10
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
l_tol = 1e-6
start_time = 0.0
num_steps = 2
dt = 1e-1
[]
[Outputs]
exodus = true
[]
[Postprocessors]
[disp_x]
type = AverageNodalVariableValue
variable = disp_x
[]
[disp_y]
type = AverageNodalVariableValue
variable = disp_y
[]
[disp_z]
type = AverageNodalVariableValue
variable = disp_z
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFG092/BFG092.i)
################################################################################
#
# Description: Calvert Cliffs BFG092
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFG092_power.csv
# axial peaking factor file BFG092_axial_peaking.csv
# flux boundary condition file BFG092_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.28354
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFG092_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFG092_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177711767 177712127'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177711767 177712127'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFG092_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 273
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177712127
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFJ027/BFJ027.i)
################################################################################
#
# Description: Calvert Cliffs BFJ027
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFJ027_power.csv
# axial peaking factor file BFJ027_axial_peaking.csv
# flux boundary condition file BFJ027_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.28943
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFJ027_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFJ027_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177688931 177689291'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177688931 177689291'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFJ027_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0366 .9634 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177689291
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/fuelrodlinevaluesampler/example_problem_smeared_test.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
displacements = 'disp_x disp_y'
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = SmearedTwoPelletOneType2D.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain
fuel_relocation_eigenstrain fuel_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'initial timestep_end'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
initial_porosity = 0.0
temperature = temp
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = pellet_type_1
stress_free_temperature = 295
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[hotpressing]
type = UO2HotPressingCreepUpdate
block = pellet_type_1
burnup_function = burnup
initial_grain_radius = 10.0e-6
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'hotpressing'
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000 #TM default value
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 1.e20
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 300
[]
[]
[Preconditioning]
[SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-pc_type_asm'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-5 #8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
start_time = -200
num_steps = 2
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 6
iteration_window = 2
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
component = 1
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[nonlinear_its] # number of nonlinear iterations at each timestep
type = NumNonlinearIterations
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372 # rod height
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[fuel_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'fuel'
fraction = 0.51
num_points = 20
orientation = 'horizontal'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[clad_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'clad'
fraction = 0.51
num_points = 9
orientation = 'horizontal'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[]
[Outputs]
exodus = true
color = false
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/HBEP/analysis/BK365/HBEP_BK365.i)
initial_fuel_density = 10233
[GlobalParams]
density = ${initial_fuel_density} #93.2% of TD (TD assumed to be 10980)
initial_porosity = 0.068
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = HBEP.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 10.53e-6 # = 13.5e-6 experimental dia * 1.56 /2
[]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[disp_r]
[]
[]
[Functions]
[power_history]
# reads and interpolates an input file containing rod average linear power vs time
type = PiecewiseLinear
data_file = BK365_linear_power.csv
format = columns
[]
[axial_peaking_factors]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK365_power_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
#Ambient for initial build @ 0.101353 MPa, PWR @ 13.73 MPa and PIE @ 0.101353 MPa
x = '-100 0 137115360 137118960'
y = '0.007382 1 1 0.007382'
[]
[flux]
type = PiecewiseLinear
data_file = BK365_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = BK365_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK365_clad_temp_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_yy creep_strain_xy'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1 # fission rate applied to the fuel only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = 0.00324
a_upper = 1.02024
fuel_outer_radius = 4.095e-3
fuel_inner_radius = 1.24e-3
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0707 0.9293 0 0 0 0'
num_radial = 80
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = '1'
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = '1'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_hoop]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
index_i = 2
index_j = 2
execute_on = timestep_end
block = 1
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
block = 1
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
penalty = 1e7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = .955e-6
roughness_primary = 1.5e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 13.73e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.88e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10233
[]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
temperature = temp
stress_free_temperature = 300
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = .00819
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =1.7e-4 #diameteral gap
relocation_activation1 = 5000 # initial relocation activation power set to 5kW/m
burnup_relocation_stop = .04
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 50
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 137118960
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 2e6
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
[]
[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
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.017 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet_type_1
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 4784
[]
[maxFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
variable = penetration
[]
[minFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
value_type = min
variable = penetration
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[]
[VectorPostprocessors]
[Concentrations]
type = RadialProfileSampler
variable = 'disp_x'
sort_by = 'id'
burnup_function = burnup
quantity = 'N235 N236 N238 N239 N240 N241 N242 ntot_hm'
height = 0.46324
execute_on = timestep_end
outputs = 'Concentrations'
[]
[True]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242'
height = 0.46324
burnup_function = burnup
outputs = 'True'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[Concentrations]
type = CSV
file_base = 'Concentrations/'
[]
[True]
type = CSV
file_base = 'True/'
[]
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/IFA_515_RodA1/analysis/IFA515.i)
# Reference document HWR-671
# Block 1 = cladding, Block 3 and 5 = insulators Block 4 = fuel
id = IFA515
# Fuel material properties
initial_fuel_density = 10628.64 # kg/m^3 # initial fuel density 96.8% of theoretical (10980 kg/m3)
initial_grain_radius = 7.75e-6 # m [(18.1+13.1+15.3)/(3*2)]
initial_fuel_porosity = 0.032 # (-)
fuel_thermal_expansion_coeff = 10e-6 # K^-1
# Insulator material properties
insulator_burnup_function = 0 # (-)
insulator_thermal_expansion_coeff = 10e-6 # K^-1
# Cladding material properties
cladding_thermal_conductivity = 16.0 # W/m-K
cladding_specific_heat = 330.0 # J/kg-K
cladding_youngs_modulus = 8.8e10 # Pa
cladding_poissons_ratio = 0.34 # (-)
cladding_density = 6551.0 # kg/m^3
# Rod geometry
a_lower = 0.00851 # m (Checked with Paraview)
a_upper = 0.22051 # m (Checked with Paraview)
fuel_inner_radius = 0.0009 # m (Checked with Paraview)
fuel_outer_radius = 0.00278 # m (Checked with Paraview)
fuel_volume_ratio = 1.0 # (-)
fuel_diameter = 0.00556 # m
diametral_gap = 5.0e-5 # m
rod_power_scale_factor = 0.212 # m (rod height)
# Temperature conditions
initial_temperature = 300 # K
stress_free_temperature = 300 # K
# Coolant pressure ramp parameters
pressure_ramp_x = '-100 0 199274402 199274403'
pressure_ramp_y = '0.0298 1 1 0.0298'
pressure_ramp_factor = 3.40e6 # (-) CHECK could not locate a number in hwr-671
# Plenum parameters
initial_plenum_pressure = 1.0e6 # Pa
startup_time = 0 # s
# Physical constants
ideal_gas_constant = 8.3143 # J/mol-K
# Neutronics and power
energy_per_fission = 3.2e-11 # J/fission (200 MeV per fission)
fast_neutron_flux_factor = 1.6e12 # n/m2-s per W/m
# Contact
contact_penalty = 1e14 # (-)
roughness_primary = 2.8e-7 # (2.6e-7+3e-7)/2 = 2.8e-7
roughness_secondary = 1e-6
kennard_coefficient = 0.2173
# Relocation
relocation_activation1 = 5000 # W/m
burnup_relocation_stop = 0.02524 # FIMA
# Numerical options
damper_max_temperature_increment = 50.0 # K
l_max_its = 50
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 199278002 # s (199275500+3600)
dtmax = 1e6 # s
dtmin = 1 # s
TimeStepper_dt = 10000 # s
TimeStepper_optimal_iterations = 1000
TimeStepper_growth_factor = 10
TimeStepper_linear_iteration_ratio = 100
# Postprocessor parameters
FCT_top_nodeid = 4066 # Global node ID 4067
FCT_mid_nodeid = 2073 # Global node ID 2074
FCT_bottom_nodeid = 125 # Global node ID 126
# Data file pathways
rod_mesh_file = 'ifa515_insulator.e'
power_profile_data_file = 'IFA515_power.csv'
clad_wall_temp_data_file = 'IFA515_clad_temp.csv'
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature} # set initial temperature to ambient
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[grain_radius]
block = 4
initial_condition = ${initial_grain_radius}
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = ${power_profile_data_file}
format = columns
[]
[axial_peaking_factors]
type = ParsedFunction # no axial power profile
expression = '1'
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = ${clad_wall_temp_data_file}
format = columns
[]
[axial_clad_peaking]
type = ParsedFunction # no axial clad temperature
expression = '1'
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[pressure_ramp]
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = '4'
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[insulation]
block = '3 5'
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'insulator_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = 4 # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Burnup]
[burnup]
block = 4
rod_ave_lin_pow = power_profile # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 20
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.115 0.885 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 4
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
block = 1
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel and insulators
formulation = kinematic
penalty = ${contact_penalty}
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact_clad]
# thermal conatact between the fuel outer radius and the clad inner wall
type = GasGapHeatTransfer
variable = temperature
primary = 5 # clad Zr barrier not modeled
secondary = 10 # fuel and insulators
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
kennard_coefficient = ${kennard_coefficient}
gap_conductance_model = TOPTAN
thermal_accommodation_model = TOPTAN
gas_thermal_conductivity_model = ADVANCED
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = TOPTAN
meyer_hardness_model = MATPRO
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temperature
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
factor = ${pressure_ramp_factor}
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 4
burnup = burnup
temperature = temperature
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
block = '4'
temperature = temperature
thermal_conductivity_model = NFIR
burnup = burnup
initial_porosity = ${initial_fuel_porosity}
[]
[insulator_thermal]
type = UO2Thermal
block = '3 5'
temperature = temperature
thermal_conductivity_model = NFIR
burnup_function = ${insulator_burnup_function}
initial_porosity = ${initial_fuel_porosity}
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '4'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 4
temperature = temperature
[]
[fuel_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = 4
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 4
burnup = burnup
diameter = ${fuel_diameter}
diametral_gap =${diametral_gap}
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = ${relocation_activation1}
burnup_relocation_stop = ${burnup_relocation_stop}
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[insulator_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 5'
[]
[insulator_elasticity_tensor]
type = UO2ElasticityTensor
block = '3 5'
temperature = temperature
[]
[insulator_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = '3 5'
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${insulator_thermal_expansion_coeff}
eigenstrain_name = 'insulator_thermal_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 4
temperature = temperature
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius = grain_radius
gbs_model = true
burnup = burnup
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = ${cladding_youngs_modulus}
poissons_ratio = ${cladding_poissons_ratio}
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = '1'
strain_free_density = ${cladding_density}
[]
[fuel_density]
type = StrainAdjustedDensity
block = '4 3 5'
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = ${damper_max_temperature_increment}
variable = temperature
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = ${l_max_its}
l_tol = ${l_tol}
# controls for nonlinear iterations
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
# time control
start_time = ${start_time}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
# control for adaptive time steping
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
optimal_iterations = ${TimeStepper_optimal_iterations}
growth_factor = ${TimeStepper_growth_factor}
linear_iteration_ratio = ${TimeStepper_linear_iteration_ratio}
force_step_every_function_point = true
timestep_limiting_function = power_profile
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 4
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 4
outputs = exodus
[]
[average_grain_radius]
type = ElementAverageValue
block = '4'
variable = grain_radius
[]
[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
fission_rate = fission_rate
block = 4
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = ${rod_power_scale_factor}
[]
[average_fission_rate]
type = ElementAverageValue
block = 4
variable = fission_rate
[]
[FCT_top]
type = NodalVariableValue
nodeid = ${FCT_top_nodeid}
variable = temperature
[]
[FCT_mid]
type = NodalVariableValue
nodeid = ${FCT_mid_nodeid}
variable = temperature
[]
[FCT_bottom]
type = NodalVariableValue
nodeid = ${FCT_bottom_nodeid}
variable = temperature
[]
[FCT_ave]
type = SideAverageValue
boundary = 13
variable = temperature
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 4
cladding_blocks = 1
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'average_burnup fission_gas_released FCT_top FCT_mid rod_total_power'
execute_on = 'FINAL'
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(test/tests/standard_lwr_outputs_action/pellet_only_ad.i)
initial_fuel_density = 10431.0
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
density = ${initial_fuel_density}
energy_per_fission = 3.20435313e-11
temperature = temp
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = pellet_only.e
[]
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 100 1e8'
y = '0 20000 20000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = fuel_pellet
add_variables = true
strain = FINITE
eigenstrain_names = fuel_thermal_strain
decomposition_method = EigenSolution
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = ADNeutronHeatSource
variable = temp
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = fuel_pellet
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.0
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1
RPF = RPF
[]
[]
[BCs]
[fuel_wall_temp]
type = ADDirichletBC
preset = false
variable = temp
boundary = '10'
value = 673
[]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = ADDirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.05
[]
[fuel_elasticity_tensor]
type = ADUO2ElasticityTensor
block = fuel_pellet
[]
[fuel_elastic_stress]
type = ADComputeFiniteStrainElasticStress
block = fuel_pellet
[]
[fuel_thermal_expansion]
type = ADComputeThermalExpansionEigenstrain
block = fuel_pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293
eigenstrain_name = fuel_thermal_strain
[]
[fuel_density]
type = ADStrainAdjustedDensity
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = ADUO2Sifgrs
temperature = temp
burnup_function = burnup
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_abs_tol = 1e-10
dtmax = 200
dtmin = 200
end_time = 200
[]
[StandardLWRFuelRodOutputs]
temperature = temp
rod_component = fuel
fuel_pellet_blocks = fuel_pellet
use_automatic_differentiation = true
[]
[Outputs]
perf_graph = true
exodus = false
color = false
csv = true
[]
(assessment/LWR/validation/OSIRIS_J12/analysis/OSIRIS_J12.i)
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} # initial fuel density 95% of theoretical (10980 kg/m3)
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = osiris_j12_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[elastic_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = j12_5_power.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = j12_5_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[CoolantPressureFunction]
type = PiecewiseLinear
x = '-100 0 50389344 50389444 50390704 50480887 50480988'
y = '0.06537 1 1 0.06537 0.948 0.948 0.06537'
[]
[clad_temp_bc]
type = PiecewiseLinear
data_file = j12_5_clad_bc.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_zz'
[]
[]
[Kernels]
[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
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 4.8e13 #n/m2-s per W/m
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
[]
[elastic_strain_hoop]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_hoop
block = 1
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 21
a_lower = 0.00324
a_upper = 0.4442
fuel_inner_radius = 0.00
fuel_outer_radius = 0.004096
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 .955 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e12
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = CoolantPressureFunction
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.26e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
initial_fuel_density = 10431
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 293
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.008192
diametral_gap =168.0e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.015
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'clad_creep'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200.0
min_value = 273.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 50480988
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 10
linear_iteration_ratio = 100
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[average_grain_radius]
type = ElementAverageValue
block = '3'
variable = grain_radius
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/HbepR1/analysis/A364/HbepR1_A364.i)
initial_fuel_density = 10490
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
temperature = temp
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 8.0e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .0052195
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.68
ny_cl = 3
clad_top_gap_height = 0.2461
clad_gap_width = 1.055e-4
elem_type = QUAD8
[]
patch_size = 100 # 1000 lowering this and setting the strategy to auto will reduce the amount of memory required to run the job.
patch_update_strategy = auto
partitioner = centroid # this will help with run time
centroid_partitioner_direction = y # this will help with run time
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 273 #K
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.148e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseConstant
data_file = A364-power.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = A364-axial-profile.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '-100 0 166323600 166327200' #
y = '0.014429 1 1 0.014429'
[]
[temp_ramp]
type = PiecewiseBilinear
data_file = A364-axial-tempprofile.csv
scale_factor = 1
axis = 1
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz creep_strain_xx
creep_strain_xy creep_strain_yy vonmises_stress creep_strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 3 # fission rate applied to the fuel (block 2) only
fission_rate = fission_rate # coupling to the fission_rate aux variable
extra_vector_tags = 'ref'
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.68056e13 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.68478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0052195 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0308 .9692 0 0 0 0'
RPF = RPF
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 1.1e-6
roughness_secondary = 0.35e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 # Pa
function = pressure_ramp
[]
[]
[coolant_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = temp_ramp
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 0.375e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get inital fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
initial_porosity = 0.04
temperature = temp
burnup = burnup
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.005325
clad_outer_radius = 0.006125
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 273
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
diameter = 0.010439 # fuel pellet diameter in meters
diametral_gap = 105.5e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = .049 # turn off relocation
relocation_activation1 = 5000
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 273
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10490
total_densification = .0043
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[UserObjects]
[integral_burnup] # Added the computation of the average fuel rod burnup
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 166327200
dtmax = 1e6
dtmin = 0.1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
# Clad postprocessor (The rest are created with StandardLWRFuelRodOutputs)
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
output_limiting_function = power_history
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/standard_lwr_outputs_action/pellet_only.i)
initial_fuel_density = 10431.0
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
density = ${initial_fuel_density}
energy_per_fission = 3.20435313e-11
temperature = temp
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = pellet_only.e
[]
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 100 1e8'
y = '0 20000 20000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = fuel_pellet
add_variables = true
strain = FINITE
eigenstrain_names = fuel_thermal_strain
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = fuel_pellet
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.0
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1
RPF = RPF
[]
[]
[BCs]
[fuel_wall_temp]
type = DirichletBC
preset = false
variable = temp
boundary = '10'
value = 673
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.05
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = fuel_pellet
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel_pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel_pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293
eigenstrain_name = fuel_thermal_strain
[]
[fuel_density]
type = StrainAdjustedDensity
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
temperature = temp
burnup_function = burnup
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_abs_tol = 1e-10
dtmax = 200
dtmin = 200
end_time = 200
[]
[StandardLWRFuelRodOutputs]
temperature = temp
rod_component = fuel
fuel_pellet_blocks = fuel_pellet
[]
[Outputs]
perf_graph = true
exodus = false
color = false
csv = true
[]
(assessment/LWR/validation/Riso_Base_sub.i)
# This is a partial input file base with information/features common to several assessments cases for Riso
# This file is a sub-base file and contains blocks that are common to all the Riso cases except Riso_II5_action.i.
# NOTE: This file will NOT run on its own, it requires the Riso_Base.i and a Riso_XX.i file to run, with XX specifying the case to be run.
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = ${blocks_fuel}
initial_condition = ${initial_grain_radius}
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = ${blocks_fuel}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = ${blocks_fuel}
strain = FINITE
extra_vector_tags = 'ref'
temperature = temperature
[]
[clad]
block = clad
strain = FINITE
temperature = temperature
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = ${blocks_all}
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
block = ${blocks_all}
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = ${blocks_fuel}
[]
[]
[Burnup]
[burnup]
block = ${blocks_fuel}
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = ${num_radial_burnup}
bias = ${bias_radial_burnup}
num_axial = ${num_axial_burnup}
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = ${blocks_fuel}
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[pelletid]
type = PelletIdAux
block = ${blocks_fuel}
variable = pellet_id
a_lower = ${a_lower}
a_upper = ${a_upper}
number_pellets = ${number_pellets}
execute_on = timestep_begin
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = ${blocks_fuel}
temperature = temperature
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = ${blocks_fuel}
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = ${blocks_fuel}
temperature = temperature
[]
[fuel_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = ${blocks_fuel}
temperature = temperature
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = ${blocks_fuel}
burnup_function = burnup
temperature = temperature
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = ${blocks_fuel}
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
burnup_relocation_stop = ${burnup_relocation_stop}
relocation_activation1 = ${relocation_activation1}
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = ${blocks_fuel}
grain_radius = grain_radius
burnup_function = burnup
temperature = temperature
hydrostatic_stress = hydrostatic_stress
ath_model = true
rod_ave_lin_pow = power_history
gbs_model = true
ig_bubble_model = NUCLEATION_RESOLUTION
ig_diff_algorithm = polypole2
diff_coeff_option = TURNBULL_D1_4D2_D3
transient_option = MICROCRACKING_BURNUP
pellet_id = pellet_id
pellet_brittle_zone = pbz
[]
[fuel_density]
type = StrainAdjustedDensity
block = ${blocks_fuel}
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = clad_creep
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
temperature = temperature
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = ${stress_free_temperature}
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_growth_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${cladding_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
block = ${blocks_fuel}
pellet_id = pellet_id
temperature = temperature
pellet_radius = ${fuel_outer_radius}
a_lower = ${a_lower}
a_upper = ${a_upper}
number_pellets = ${number_pellets}
execute_on = linear
[]
[]
(assessment/LWR/validation/FUMEXII_Regate/analysis/discrete/Regate_discrete.i)
initial_fuel_density = 10360
[GlobalParams]
density = ${initial_fuel_density}
temperature = temp
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = regate_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.675e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = regate_linear_power.csv
scale_factor = 1
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = regate_axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 98406792 98407164 98407291 98407445 99578736 99580326'
y = '0.00654 1 1 0.00654 0.00654 0.839 0.839 0.00654'
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = regate_cladding_temperature.csv
scale_factor = 1
format = columns
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
data_file = regate_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_zz
creep_strain_xx elastic_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[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 = 3
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
factor = 1
function = fast_neutron_flux_function
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_lower = 0.00324
a_upper = 0.4444
fuel_inner_radius = 0
fuel_outer_radius = 0.004096
fuel_volume_ratio = 1
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.04487 0.95513 0 0 0 0'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_wall_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.5e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10360
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
initial_porosity = 0.05246
block = 3
temperature = temp
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 293.0
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.008192
diametral_gap =1.68e-5
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.015
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='clad_creep_stress plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[plasticity]
type = IsotropicPlasticityStressUpdate
block = 1
yield_stress = 500e6
hardening_constant = 2.5e9
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-4
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 99580326
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
sync_times = '98407291'
[console]
type = Console
max_rows = 30
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/solid_mechanics/uo2_mechanics/uo2_creep_matpro_ym.i)
# Tests material model UO2CreepUpdate, which computes the combined thermal
# and irradiation creep for UO2 fuel.
#
# The test is a single element unit cube which is pulled in the y direction
# with a pressure of 5.0e7 Pa. The temperature is ramped up and the fission
# rate within the cube is constant.
# MATPRO is used to calculate Young's modulus. Young's modulus decreases with
# temperature, and the displacements increase accordingly.
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 300.0
scaling = 1e7
[]
[]
[Functions]
[top_pull]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[power]
type = ParsedFunction
expression = 2.5e4
[]
[temp]
type = ParsedFunction
expression = 300+1.2e3*t
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = FINITE
incremental = true
add_variables = true
generate_output = 'stress_yy'
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = '1 2 3 4 5 6 7'
order = FIRST
family = LAGRANGE
rod_ave_lin_pow = power
num_radial = 11
num_axial = 2
a_lower = 0
a_upper = .00041
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1
rpf_active = false
[]
[]
[BCs]
[u_top_pull]
type = Pressure
variable = disp_y
boundary = 11
factor = -0.5e8
function = top_pull
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[u_yz_fix]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[u_xy_fix]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[temp]
type = FunctionDirichletBC
variable = temp
boundary = '9 11'
function = temp
[]
[]
[Materials]
[elasticity_tensor]
type = UO2ElasticityTensor
block = '1 2 3 4 5 6 7'
temperature = temp
matpro_youngs_modulus = true
matpro_poissons_ratio = false
[]
[creep]
type = UO2CreepUpdate
block = '1 2 3 4 5 6 7'
temperature = temp
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
a7 = 3.72264e-35
q3 = 2617
burnup_function = burnup
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'creep'
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = HeatConductionMaterial
block = '1 2 3 4 5 6 7'
specific_heat = 1.0
thermal_conductivity = 100.
[]
[density]
type = StrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10431.0
[]
[]
[Dampers]
[maxY]
type = MaxIncrement
variable = disp_y
max_increment = 1e-4
[]
[maxTemp]
type = MaxIncrement
variable = temp
max_increment = 120.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 10
nl_rel_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 1
dt = 1e-1
[Predictor]
type = SimplePredictor
scale = 1.0
[]
[]
[Outputs]
exodus = true
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2d/27_2d.i)
initial_fuel_density = 10485.9
[GlobalParams]
density = ${initial_fuel_density} #95.5% TD (TD = 10980)
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (200 MeV)
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 3.5
pellet_outer_radius = 0.00456
pellet_mesh_density = customize
ny_p = 318
nx_p = 11
clad_thickness = 7.3e-4
clad_gap_width = 8.5e-5
clad_bot_gap_height = 1e-3
bottom_clad_height = 0.00224
top_clad_height = 0.00224
clad_top_gap_height = 0.315
clad_mesh_density = customize
ny_c = 324
nx_c = 4
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 10e-6 / 2 * 1.56 = 7.8e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseBilinear
data_file = 27_2d_power.csv
axis = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0'
y = '0.006537 1'
[]
[time_function]
type = PiecewiseLinear
data_file = 27_2d_time_function.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellet]
block = pellet
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.04 0.96 0 0 0 0'
RPF = RPF
fuel_volume_ratio = 1
fuel_pin_geometry = pin_geometry
[]
[]
[AuxKernels]
[GrainRadiusAux]
type = GrainRadiusAux
block = pellet
execute_on = linear
temperature = temp
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
block = clad
factor = 4.0e13 # (n/m2-s per W/m)
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.2e6 # FUMEXII_27(2d) => 22 bar (2.2 MPa) (He fill)
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 563
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 9.12e-3
rod_pitch = 1.43e-2
linear_heat_rate = power_profile
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.045
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.006
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10485.9
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
initial_porosity = 0.045
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 100.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-3
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 146085120
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = time_function
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[int_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[int_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fissionrate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 3.5 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = 1
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
(assessment/LWR/validation/IFA_519/analysis/IFA_519_Base.i)
# This is a partial input file base with information/features common to the experiments within this assessment
# NOTE: This file will NOT run on its own, it requires a IFA_519_rod_XX.params file to run
# Fuel material properties
initial_fuel_density = 10400.0 # kg/m^3 (Table 1 HWR 668)
initial_fuel_porosity = 0.053 # (-)
fuel_thermal_expansion_coeff = 10e-6 # K^-1
# Cladding material properties
cladding_density = 6551.0 # kg/m^3
cladding_thermal_conductivity = 16.0 # W/m-K
cladding_specific_heat = 330.0 # J/kg-K
# Rod geometry
a_lower = 0.00324 # m
fuel_inner_radius = 0 # m
fuel_volume_ratio = 1.0 # (-)
# Neutronics and power
energy_per_fission = 3.2e-11 # J/fission
fast_neutron_flux_factor = 1.6e12 # n/m^2-s per W/m (taken from IFA-431)
# Temperature conditions
initial_temperature = 293 # K
stress_free_temperature = 293 # K
# Contact
contact_penalty = 1e14
roughness_primary = 2.0e-6
roughness_secondary = 1.0e-6
roughness_coef = 3.2
# Relocation
burnup_relocation_stop = 0.031254 # FIMA
relocation_activation1 = 5000 # W/m
# Coolant pressure ramp paramters
pressure_ramp_factor = 3.447e6 # (-) taken from IFA-431
# Plenum parameters
initial_plenum_pressure = 2.59e6 # Pa
startup_time = 0 # s
refab_temperature = 293 # K
# Physical constants
ideal_gas_constant = 8.3143 # J/mol-k
# Numerical options
damper_max_temperature_increment = 50.0 # K
l_max_its = 100
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100 # s
dtmax = 1e6 # s
dtmin = 1 # s
TimeStepper_dt = 1.0e2 # s
TimeStepper_optimal_iterations = 1000
TimeStepper_linear_iteration_ratio = 100
TimeStepper_growth_factor = 5
TimeStepper_max_function_change = 3e20
[GlobalParams]
density = ${initial_fuel_density}
temperature = temperature
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[grain_radius]
block = 3
initial_condition = ${initial_grain_radius}
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ${power_history_data_file}
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[clad_temperature_bc]
type = PiecewiseLinear
data_file = ${clad_temperature_bc_data_file}
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = '3'
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[]
# Define kernels for the various terms in the PDE system (in all cases here, the axisymmetric (RZ) version is specified)
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source_] # source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
block = 3
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
# Note: The U235 should be 13% but the model does not currently work above 12%
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = ${a_upper}
a_lower = ${a_lower}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.12 .88 0 0 0 0'
RPF = RPF
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = ${contact_penalty}
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
roughness_coef = ${roughness_coef}
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = ${refab_time}
refab_gas_types = He
refab_fractions = 1
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020 # 20
value = 0.0
[]
[temperature]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temperature
function = clad_temperature_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = ${pressure_ramp_factor}
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles # coupling to post processor to get inital fill gas mass
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
refab_time = ${refab_time}
refab_pressure = ${refab_pressure}
refab_temperature = ${refab_temperature}
refab_volume = ${refab_volume}
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[density_clad]
type = StrainAdjustedDensity
block = '1'
strain_free_density = ${cladding_density}
[]
[density_fuel]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 3
temperature = temperature
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = ${initial_fuel_porosity}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = ${burnup_relocation_stop}
relocation_activation1 = ${relocation_activation1} # initial relocation activation power
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = '1'
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = ${damper_max_temperature_increment}
variable = temperature
[]
[]
[Executioner]
type = Transient
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
verbose = true
# controls for linear iterations
l_max_its = ${l_max_its}
l_tol = ${l_tol}
# controls for nonlinear iterations
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
# time control
start_time = ${start_time}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
optimal_iterations = ${TimeStepper_optimal_iterations}
linear_iteration_ratio = ${TimeStepper_linear_iteration_ratio}
growth_factor = ${TimeStepper_growth_factor}
timestep_limiting_function = power_history
max_function_change = ${TimeStepper_max_function_change}
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = 3
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = 3
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(assessment/LWR/validation/IFA_535/analysis/rod_810/IFA_535_rod_810.i)
initial_fuel_density = 10398.06
[GlobalParams]
density = ${initial_fuel_density} #Assuming 10980 as the theoretical density
displacements = 'disp_x disp_y'
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
patch_size = 20 # 50
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = ifa535_rod810.e
[]
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1'
initial_condition = 9.36e-6 # 2D grain radius 6um
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_profile]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ifa535_810_power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ifa535_810_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 217720944 217722744 217724544 217742544 224388540 224388576'
y = ' 0.0303 1 1 0.0303 0.0303 1 1 0.0303'
[]
[flux] # reads and interpolates input data defining fast neutron flux
type = PiecewiseLinear
data_file = ifa535_810_fast_flux.csv
format = columns
[]
[clad_temp_bc]
type = PiecewiseLinear
data_file = ifa535_810_clad_bc.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system (in all cases here, the axisymmetric (RZ) version is specified)
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1' # fission rate applied to the fuel (block 2) only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.48724
a_lower = 0.01924
fuel_inner_radius = 0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1
RPF = RPF
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
axial_power_profile = axial_peaking_factors
function = flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 'clad'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
penalty = 1e9
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
roughness_secondary = 0.81e-6
roughness_primary = 1.0e-6
roughness_coef = 3.2
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 226498428
refab_gas_types = He
refab_fractions = 1
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 3.2e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.1e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get inital fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
refab_time = 217722744
refab_pressure = 3.2e6
refab_temperature = 449.05
refab_volume = 9.6e-6
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
initial_fuel_density = 10398.06
eigenstrain_name = fuel_volumetric_strain
[]
[density_clad]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6551.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = 'pellet_type_1'
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1'
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
diameter = 0.01054 #Fuel pellet diameter in m
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =2.44e-4
burnup_relocation_stop = 0.029
relocation_activation1 = 5000 #initial relocation activation power in W/m
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_growth
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[]
[Executioner]
type = Transient
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
# controls for linear iterations
l_max_its = 60
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 40
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
# time control
start_time = -100
end_time = 224388576
dtmax = 5e5
dtmin = 1
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
force_step_every_function_point = true
timestep_limiting_function = power_profile
optimal_iterations = 25
iteration_window = 6
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = 'pellet_type_1'
[]
[clad_elong]
type = NodalVariableValue
variable = disp_y
nodeid = 2359 #Global node ID 9739
[]
[input_rod_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
sync_times = 5556726
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/IFA_636/analysis/IFA_636/IFA_636.i)
initial_fuel_density = 10551.78
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_mesh_density = customize
clad_mesh_density = customize
pellet_quantity = 1
pellet_height = 0.392
pellet_outer_radius = 4.097e-3
ny_p = 40
nx_p = 11
clad_gap_width = 78e-6
clad_bot_gap_height = 1e-3
plenum_fuel_ratio = 0.21628
clad_thickness = 0.5715e-3
nx_c = 4
ny_c = 80
ny_cl = 3
ny_cu = 3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 5e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_swe]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = IFA_636_power_history.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = IFA_636_axial_peaking.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 213162351 213260400'
y = '0.0307 1 1 0.0307'
[]
[clad_temp_bc]
type = PiecewiseLinear
data_file = IFA_636_clad_bc.csv
format = columns
scale_factor = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_swelling_eigenstrain
fuel_relocation_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
creep_strain_xx creep_strain_xy creep_strain_yy creep_strain_zz'
[]
[]
[Kernels]
[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
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.6e12
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[dvv0swe]
type = MaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
execute_on = timestep_end
block = pellet
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00324000
a_upper = 0.39524
fuel_volume_ratio = 1
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0040975
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0425 0.9575 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.33e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.0e6
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet
initial_fuel_density = 10551.78
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_swelling_eigenstrain
[]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.039
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 293.0
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
diameter = 0.008194
diametral_gap =156.0e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.029
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
initial_porosity = 0.039
gbs_model = true
transient_option = MICROCRACKING
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = 'clad_creep'
tangent_operator = 'elastic'
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradition_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 213260400
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 15
iteration_window = 2
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
burnup_function = burnup
variable = temp
[]
[fuel_disp_y_average]
type = AverageNodalVariableValue
boundary = top_of_top_pellet
variable = disp_y
[]
[volumetric_strain]
type = ElementAverageValue
block = pellet
variable = deltav_v0_swe
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet
cladding_blocks = clad
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released fuel_disp_y_average rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/HBEP/analysis/BK363/HBEP_BK363.i)
initial_fuel_density = 10233 #93.2% of TD (TD assumed to be 10980)
[GlobalParams]
density = ${initial_fuel_density} #93.2% of TD (TD assumed to be 10980)
initial_porosity = 0.068
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = HBEP.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 10.53e-6 # = 13.5e-6 experimental dia * 1.56 /2
[]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
# reads and interpolates an input file containing rod average linear power vs time
type = PiecewiseLinear
data_file = BK363_linear_power.csv
format = columns
[]
[axial_peaking_factors]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK363_power_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
#Ambient for initial build @ 0.101353 MPa, PWR @ 13.73 MPa and PIE @ 0.101353 MPa
x = '-100 0 137115360 137118960'
y = '0.007382 1 1 0.007382'
[]
[flux]
type = PiecewiseLinear
data_file = BK363_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = BK363_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK363_clad_temp_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_yy creep_strain_xy'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1 # fission rate applied to the fuel only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = 0.00324
a_upper = 1.02024
fuel_outer_radius = 4.095e-3
fuel_inner_radius = 1.24e-3
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0707 0.9293 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = '1'
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = '1'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_hoop]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
index_i = 2
index_j = 2
execute_on = timestep_end
block = 1
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
block = 1
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
penalty = 1e7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = .955e-6
roughness_primary = 1.5e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 13.73e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 1.40e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10233
[]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
temperature = temp
stress_free_temperature = 300
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = .00819
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =1.7e-4 #diameteral gap
relocation_activation1 = 5000 # initial relocation activation power set to 5kW/m
burnup_relocation_stop = .035
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 50
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 137118960
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 2e6
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block =pellet_type_1
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
[]
[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
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.017 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet_type_1
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 4784
[]
[maxFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
variable = penetration
[]
[minFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
value_type = min
variable = penetration
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/IFA_597_3/analysis/rod_7/IFA_597_rod7_glued.i)
initial_fuel_density = 10500.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_iterations = 10
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ifa_597r7.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = '3 4'
initial_condition = 6.1074e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = 597-R7_linear_power.csv
format = columns
scale_factor = 1.0526316
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = 597-R7_axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 269029548 269030508 269055648 269056588 280124964 280125427'
y = '0 1 1 0.014475 0.014475 0.457 0.457 0.014475'
[]
[flux]
type = PiecewiseLinear
data_file = flux.csv
format = columns
[]
[clad_average_temp]
type = PiecewiseLinear
data_file = 597-R7_clad_outer_temperature.csv
format = columns
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = '3 4'
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3 4'
fission_rate = fission_rate
fraction = 0.95 # per Glyn Rossiter's suggestion
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = '3 4'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_lower = 0.00324
a_upper = 0.3571
fuel_inner_radius = 0.000
fuel_outer_radius = 0.0052195
fuel_volume_ratio = .994899
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.03347 0.96653 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3 4'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = 1
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e9
formulation = penalty
model = glued
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_secondary = 1.3e-6
roughness_primary = 1.38e-6
roughness_coef = 3.2
contact_pressure = contact_pressure
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 269055648
refab_gas_types = He
refab_fractions = 1
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_average_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 #changes to 3.2e6 after 59 MWd/kgUO2
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.0e5 #changes to 5e5 after 59 MWd/kgUO2
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 269055648
refab_pressure = 5e5
refab_temperature = 500
refab_volume = 6e-6
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = '3 4'
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10500.0
[]
[fuel_thermal]
type = UO2Thermal
block = '3 4'
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
initial_porosity = 0.04372
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 4'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = '3 4'
temperature = temp
stress_free_temperature = 297
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = '3 4'
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = '3 4'
burnup_function = burnup
diameter = 0.010439
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =2.11e-4
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 297
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3 4'
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.04372
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
[]
[density_clad]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = '3 4'
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 280125427
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 20
linear_iteration_ratio = 100
dt = 100
force_step_every_function_point = true
timestep_limiting_function = power_profile
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block ='3 4'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3 4'
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = exodus
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = exodus
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3 4'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.3539 # rod height
[]
[average_fission_rate]
type = AverageFissionRate
rod_ave_lin_pow = power_profile
fuel_outer_radius = 0.0052195
fuel_inner_radius = 0.000
outputs = exodus
[]
[power_tc_location]
type = FunctionValuePostprocessor
function = q
point = '0 0.33319 0'
[]
[TC_temp]
type = NodalVariableValue
variable = temp
nodeid = 7476 # Global NodeID 7477
[]
[elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 1887 # Global NodeID 1888
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = '3 4'
[]
[Outputs]
perf_graph = true
csv = 1
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage TC_temp rod_total_power elongation'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_2/IFA_650_2.i)
initial_fuel_density = 10412
[GlobalParams]
density = ${initial_fuel_density} # 0.95TD UO2, TD=10960
temperature = temp
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = mesh_ife6502_medium2.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
initial_condition = 5.e-06 # !! assumption
[]
[max_fission_rate]
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[average_linear_heat_rate]
type = PiecewiseLinear
data_file = linear_heat_rate_av.csv
format = columns
scale_factor = 1
[]
[axial_power_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors_lhr.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[average_clad_outer_temperature]
type = PiecewiseLinear
data_file = temperature_clad_outer_av.csv
format = columns
scale_factor = 1
[]
[axial_temperature_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors_ctemp.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_outer_temperature]
type = CompositeFunction
functions = 'average_clad_outer_temperature axial_temperature_peaking_factors'
[]
[coolant_pressure]
type = PiecewiseLinear
data_file = pressure_rig.csv
format = columns
scale_factor = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[uo2nat]
block = 'pellet_type_1 pellet_type_3'
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'uo2nat_thermal_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
decomposition_method = EigenSolution
[]
[fuel]
block = pellet_type_2
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
[]
[clad]
block = clad
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[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
#extra_vector_tags = 'ref'
block = pellet_type_2
fission_rate = fission_rate
decay_heat_function = decay_heat_function # Couple to postprocessor which defines the decay heat function
max_fission_rate = max_fission_rate # Couple to auxvariable which defines maximum fission rate over irradiation
[]
[]
[Burnup]
[burnup]
block = pellet_type_2
rod_ave_lin_pow = average_linear_heat_rate
axial_power_profile = axial_power_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 28.5e-03 # mesh dependent
a_upper = 528.5e-03 # mesh dependent
fuel_inner_radius = 0.
fuel_outer_radius = 4.145e-03
fuel_volume_ratio = 1. # for use with dished pellets (ratio of actual volume to cylinder volume)
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = average_linear_heat_rate
axial_power_profile = axial_power_peaking_factors
factor = 3.e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_2
variable = grain_radius
temperature = temp
execute_on = linear
[]
[max_fission_rate]
type = MaxFissionRateAux
variable = max_fission_rate
block = pellet_type_2
fission_rate = fission_rate
execute_on = timestep_begin
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = clad
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_cond
[]
[nbbl2]
type = MaterialRealAux
block = pellet_type_2
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[radbbl]
type = MaterialRealAux
block = pellet_type_2
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[stcvrg]
type = MaterialRealAux
block = pellet_type_2
variable = sat_coverage
property = sat_coverage
[]
[frcvrg]
type = MaterialRealAux
block = pellet_type_2
variable = GBCoverage
property = GBCoverage
[]
[dvv0bd]
type = MaterialRealAux
block = pellet_type_2
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.e+07
[]
[]
#TODO: Add option in StandardLWRFuelRodOutputs to compute plenum temperature this way.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.
[]
[clad_outer_temperature]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_outer_temperature
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
function = coolant_pressure # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 4.e+06
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_2
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_2
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup_function = burnup
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_2
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_2
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_2
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_2
temperature = temp
burnup_function = burnup
initial_porosity = 0.0468
initial_fuel_density = 10447.
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_2
burnup_function = burnup
diameter = 0.00829
rod_ave_lin_pow = average_linear_heat_rate
axial_power_profile = axial_power_peaking_factors
diametral_gap =70.e-06
burnup_relocation_stop = 1.e+20
eigenstrain_name = fuel_relocation_eigenstrain
relocation_activation1 = 19685.039
[]
[fission_gas]
type = UO2Sifgrs
block = pellet_type_2
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING_BURNUP
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temp
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0 #TODO: It is odd to have different values for fuel and clad, but keeping this way to match SM
eigenstrain_name = clad_thermal_strain
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 1.e+11
poissons_ratio = 0.3
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 3.e-03
#TODO: The parameters below really should be provided, but they weren't specified in the SM model.
# They may have not been included because irradiation creep wasn't modeled. However, they are used in the thermal
# creep model as well.
# fast_neutron_flux = fast_neutron_flux
# fast_neutron_fluence = fast_neutron_fluence
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
#eff_strain_rate_plast =
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temp
[]
[uo2nat_thermal]
type = HeatConductionMaterial
block = 'pellet_type_1 pellet_type_3'
thermal_conductivity = 3. # !! assumption
specific_heat = 300. # !! assumption
[]
[uo2nat_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_3'
strain_free_density = ${initial_fuel_density}
[]
[uo2nat_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1 pellet_type_3'
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = uo2nat_thermal_strain
[]
[uo2nat_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1 pellet_type_3'
[]
[uo2nat_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_3'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1.e-02
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
start_time = -200
n_startup_steps = 1
end_time = 229440
dtmax = 2700. #1000.
dtmin = 0.00000001
[TimeStepper]
type = IterationAdaptiveDT
dt = 200.
#optimal_iterations = 4
#iteration_window = 2
#linear_iteration_ratio = 100
timestep_limiting_function = average_clad_outer_temperature
max_function_change = 10
timestep_limiting_postprocessor = material_timestep
time_t = '-200. 0. 3.5e+04 216000. 218700. 219180. 219240. 219799. 219819. 219821. 219999.'
time_dt = ' 200. 900. 2700. 2700. 60. 60. 20. 20.
10. 10. 2.'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = true
[]
[]
[Postprocessors]
[decay_heat_function]
type = DecayHeatFunction
time_at_shutdown = 100000001.
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temp
block = clad
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
value_type = max
variable = temp
block = pellet_type_2
execute_on = 'initial timestep_end'
[]
[central_fuel_temp]
type = NodalVariableValue
variable = temp
nodeid = 54 # Global node ID = 55 !! Mesh dependent
execute_on = 'initial timestep_end'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial linear'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial linear'
[]
[alhr_input]
type = FunctionValuePostprocessor
function = average_linear_heat_rate
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_oxygen_fgain]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfgain_total
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
block = clad
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
block = clad
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_2
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
print_linear_residuals = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[out_vector_pp]
execute_vector_postprocessors_on = 'timestep_end'
type = CSV
[]
[]
(examples/axial_relocation/layered2D/single_balloon/single_balloon_two_rods.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
temperature = temperature
[]
[Mesh]
[layered2D_mesh_1]
type = Layered2DMeshGenerator
axial_direction = z
num_sectors = 10
slices_per_block = 36
clad_thickness = 0.56e-3
clad_gap_width = 0.0
fuel_height = 3.6
include_plenum = false
pellet_bottom_coor = 0.0
pellet_outer_radius = 0.0045
name_prefix = 'righthand'
id_offset = 10
# show_info = true
[]
[translate_1]
type = TransformGenerator
transform = TRANSLATE
vector_value = '1 0 0'
input = layered2D_mesh_1
[]
[layered2D_mesh_2]
type = Layered2DMeshGenerator
axial_direction = z
num_sectors = 10
slices_per_block = 36
clad_thickness = 0.56e-3
clad_gap_width = 0.0
fuel_height = 3.6
include_plenum = false
pellet_bottom_coor = 0.0
pellet_outer_radius = 0.0045
name_prefix = 'lefthand'
id_offset = 30
# show_info = true
[]
[translate_2]
type = TransformGenerator
transform = TRANSLATE
vector_value = '-1 0 0'
input = layered2D_mesh_2
[]
[combine]
type = CombinerGenerator
inputs = 'translate_1 translate_2'
[]
partitioner = centroid
centroid_partitioner_direction = z
patch_update_strategy = auto
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300
[]
[]
[AuxVariables]
[disp_z]
[]
[burnup]
order = SECOND
family = LAGRANGE
[]
[strain_zz_0]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 0.07
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[clad_displacement_function_x_1]
type = ParsedFunction
expression = '2.0e-5 * t * cos(atan2(y,x-1)) * sin(pi * z / 3.6)'
[]
[clad_displacement_function_y_1]
type = ParsedFunction
expression = '2.0e-5 * t * sin(atan2(y,x-1)) * sin(pi * z / 3.6)'
[]
[clad_displacement_function_x_2]
type = ParsedFunction
expression = '2.0e-5 * t * cos(atan2(y,x+1)) * sin(pi * z / 3.6)'
[]
[clad_displacement_function_y_2]
type = ParsedFunction
expression = '2.0e-5 * t * sin(atan2(y,x+1)) * sin(pi * z / 3.6)'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[Physics]
[SolidMechanics]
[Layered2D]
[fuel_1]
add_scalar_variables = true
out_of_plane_direction = z
out_of_plane_strain_name = strain_zz
fuel_pin_geometry = 'righthand_fuel_pin_geometry'
strain = finite
block = 'righthand_fuel'
automatic_eigenstrain_names = true
decomposition_method = EigenSolution
mesh_generator = layered2D_mesh_1
[]
[fuel_2]
add_scalar_variables = true
out_of_plane_direction = z
out_of_plane_strain_name = strain_zz
fuel_pin_geometry = 'lefthand_fuel_pin_geometry'
strain = finite
block = 'lefthand_fuel'
automatic_eigenstrain_names = true
decomposition_method = EigenSolution
mesh_generator = layered2D_mesh_2
[]
[clad_1]
add_scalar_variables = true
out_of_plane_direction = z
out_of_plane_strain_name = strain_zz
fuel_pin_geometry = 'righthand_fuel_pin_geometry'
strain = finite
block = 'righthand_clad'
automatic_eigenstrain_names = true
decomposition_method = EigenSolution
mesh_generator = layered2D_mesh_1
[]
[clad_2]
add_scalar_variables = true
out_of_plane_direction = z
out_of_plane_strain_name = strain_zz
fuel_pin_geometry = 'lefthand_fuel_pin_geometry'
strain = finite
block = 'lefthand_clad'
automatic_eigenstrain_names = true
decomposition_method = EigenSolution
mesh_generator = layered2D_mesh_2
[]
[]
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'nonlinear'
[]
[]
[ThermalContact]
[thermal_contact_right]
type = GasGapHeatTransfer
variable = temperature
primary = 15
secondary = 20
gap_conductivity = 1
[]
[thermal_contact_left]
type = GasGapHeatTransfer
variable = temperature
primary = 35
secondary = 40
gap_conductivity = 1
[]
[]
[Contact]
[pellet_clad_mechanical_right]
primary = 15
secondary = 20
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[pellet_clad_mechanical_left]
primary = 35
secondary = 40
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[BCs]
[righthand_temperature]
type = DirichletBC
boundary = '20 15 12'
variable = temperature
value = 1200
[]
[lefthand_temperature]
type = DirichletBC
boundary = '40 35 32'
variable = temperature
value = 1200
[]
[righthand_no_x]
type = DirichletBC
boundary = '10010 10016'
variable = 'disp_x'
value = 0.0
[]
[leftthand_no_x]
type = DirichletBC
boundary = '10030 10036'
variable = 'disp_x'
value = 0.0
[]
[righthand_no_y]
type = DirichletBC
boundary = '10010 10013 10015'
variable = 'disp_y'
value = 0.0
[]
[lefthand_no_y]
type = DirichletBC
boundary = '10030 10033 10035'
variable = 'disp_y'
value = 0.0
[]
[right_inner_clad_displacement_x]
type = FunctionDirichletBC
variable = disp_x
boundary = '15'
function = clad_displacement_function_x_1
[]
[right_inner_clad_displacement_y]
type = FunctionDirichletBC
variable = disp_y
boundary = '15'
function = clad_displacement_function_y_1
[]
[left_inner_clad_displacement_x]
type = FunctionDirichletBC
variable = disp_x
boundary = '35'
function = clad_displacement_function_x_2
[]
[left_inner_clad_displacement_y]
type = FunctionDirichletBC
variable = disp_y
boundary = '35'
function = clad_displacement_function_y_2
[]
[]
[Materials]
[fuel_thermal]
type = HeatConductionMaterial
block = 'righthand_fuel lefthand_fuel'
thermal_conductivity = 3.0
specific_heat = 260.0
[]
[righthand_fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'righthand_fuel'
axial_relocation_object = righthand_axial_relocation
[]
[lefthand_fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'lefthand_fuel'
axial_relocation_object = lefthand_axial_relocation
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'righthand_fuel lefthand_fuel'
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'righthand_clad lefthand_clad'
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = 'righthand_clad lefthand_clad'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'righthand_clad lefthand_clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'righthand_fuel lefthand_fuel'
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = 'righthand_clad lefthand_clad'
strain_free_density = 6551.0
[]
[]
[AxialRelocation]
[righthand]
rod_ave_lin_pow = power
formulation = layered2D
axial_direction = z
fuel_blocks = 'righthand_fuel'
clad_blocks = 'righthand_clad'
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_zz_0
penetration_variable = penetration
pulver_packing_fraction = 0.75
fragment_packing_fraction = 0.75
clad_inner_volume_addition = 0
burnup_variable = burnup
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered2D_mesh_1
translation_vector = '1 0 0'
name_prefix = 'righthand'
id_offset = 10
[]
[lefthand]
rod_ave_lin_pow = power
formulation = layered2D
axial_direction = z
fuel_blocks = 'lefthand_fuel'
clad_blocks = 'lefthand_fuel'
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_zz_0
penetration_variable = penetration
pulver_packing_fraction = 0.75
fragment_packing_fraction = 0.75
clad_inner_volume_addition = 0
burnup_variable = burnup
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered2D_mesh_2
translation_vector = '-1 0 0'
name_prefix = 'lefthand'
id_offset = 30
[]
[]
[VectorPostprocessors]
[righthand_mass_fraction]
type = LineValueSampler
start_point = '1 0 0.05'
end_point = '1 0 3.55'
num_points = 36
sort_by = z
variable = righthand_layered_mass_fraction
outputs = mass_fraction
[]
[lefthand_mass_fraction]
type = LineValueSampler
start_point = '-1 0 0.05'
end_point = '-1 0 3.55'
num_points = 36
sort_by = z
variable = lefthand_layered_mass_fraction
outputs = mass_fraction
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
l_tol = 1e-3
start_time = 0.0
end_time = 100.0
dt = 1
dtmin = 1e-1
[]
[Outputs]
perf_graph = true
csv = true
[out]
type = Exodus
output_dimension = 3
[]
[mass_fraction]
type = CSV
execute_on = 'final'
create_final_symlink = true
[]
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/REP_Na_4.i)
# REP Na 4 Rodlet Base Irradiation
initial_fuel_density = 10476.35
[GlobalParams]
density = ${initial_fuel_density} # assumed TD = 10970
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = AugmentedLagrangianContactProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
maximum_lagrangian_update_iterations = 200
acceptable_iterations = 30
acceptable_multiplier = 5
[]
[Mesh]
coord_type = RZ
patch_size = 40
#patch_update_strategy = auto
#partitioner = centroid
#centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = REP_Na4.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.15
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
initial_condition = 5.0e-6 # Assume Grain size 10 microns
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[fuel_cond]
order = CONSTANT
family = MONOMIAL
[]
[swelling_strain]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_axial_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_flux]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_hmode]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htype]
order = CONSTANT
family = MONOMIAL
[]
[critical_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_mag]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[SED]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = REPNa4_power_history_Full.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = REPNa4_axial_peaking_Full.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # inlet coolant pressure evolution
type = PiecewiseLinear
scale_factor = 1.0
xy_data = '0 101325
8640 15499970
124675200 15499970
124718400 101325
125193600 101325
125193610 101325
125193650 500008
125193700 500008
125193900 500008
125194000 101325
125194100 101325'
[]
[temp_ramp] # inlet coolant temp evolution
type = PiecewiseLinear
scale_factor = 0.985
xy_data = '0 293.15
8640 591
20476800 591
21859200 600
47692800 600
51840000 593
72144000 593
73440000 586
96940800 586
99360000 583
124675200 583
124761600 293.15
125193600 293.15
125193650 553.15
125193900.0 553.150
125194000.0 293.150
125194100.0 293.150'
[]
[burnup_GWd]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz axial_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 'clad'
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz plastic_strain_xx plastic_strain_yy plastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx
elastic_strain_yy elastic_strain_zz hoop_stress axial_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.5678974
a_lower = 0.0045
fuel_inner_radius = 0
fuel_outer_radius = 0.0040959
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0449 0.9551 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_profile
factor = 3e13 #n/m2-s
block = 'clad'
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
block = 'clad'
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[fuel_conductance]
type = MaterialRealAux
property = thermal_conductivity
variable = fuel_cond
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[swelling_strain]
type = MaterialRealAux
property = volumetric_swelling_strain
variable = swelling_strain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = axial_creep_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = hoop_plastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = axial_plastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[total_axial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_axial_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = axial_elastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[plastic_strain_mag]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_mag
block = clad
execute_on = timestep_end
[]
[clad_coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = clad_coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[clad_coolant_flux]
type = MaterialRealAux
property = output_heat_flux
variable = clad_coolant_flux
boundary = 2
[]
[coolant_channel_hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = coolant_channel_hmode
boundary = 2
[]
[coolant_channel_htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = coolant_channel_htype
boundary = 2
[]
[critical_heat_flux]
type = MaterialRealAux
property = critical_heat_flux
variable = critical_heat_flux
boundary = 2
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[]
[ofract_total]
type = MaterialRealAux
property = current_oxygen_weight_frac_total
variable = oxywtfract_total
execute_on = timestep_end
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
property = oxygen_weight_frac_gained_total
variable = oxywtfgain_total
execute_on = timestep_end
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
property = fract_beta_phase
variable = fract_beta_phase
block = 'clad'
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 210 #10
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 10.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[pellet_clad_mechanical_2]
primary = 5
secondary = 410
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2.0e-6
roughness_secondary = 0.5e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
emissivity_primary = 0.800 #Emissivity for fuel
emissivity_secondary = 0.325 #Emissivity for clad
refab_time = 125107200
refab_gas_types = He
refab_fractions = 1
contact_coef = 20 #10 default
[]
[]
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_temperature = 293.15
initial_pressure = 2.60e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior #plenumTemp
volume = gas_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
# extra_vector_tags = 'ref'
refab_time = 125107200
refab_pressure = 0.301e6
refab_temperature = 293.15
refab_volume = 2.0e-6
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp # K
inlet_pressure = pressure_ramp # Pa
inlet_massflux = 3244.044104 # kg/m^2-sec
rod_diameter = 0.00951 # m
rod_pitch = 1.26e-2 # m
coolant_material = 'water'
compute_enthalpy = true
oxide_thickness = oxide_thickness # coupled oxide_thickness
number_axial_zone = 50
[]
#
# [convective_clad_surface_sodium] # apply convective boundary to clad outer surface
# boundary = '1 2 3'
# variable = temp
# inlet_temperature = temp_ramp # K
# inlet_pressure = pressure_ramp # Pa
# inlet_massflux = 3533 # kg/m^2-sec Based on flow rate provided and flow area and estimated density of 885.1 kg/m^3
# flow_area = 8.74855e-5 #m^2
# heated_diameter = 1.172526e-2 #m
# hydraulic_diameter = 4.7e-3 #m
# heated_perimeter = 2.984513e-2 #m
# coolant_material = 'sodium'
# compute_enthalpy = true
# heat_transfer_mode = 0
# oxide_thickness = oxide_thickness # coupled oxide_thickness
# number_axial_zone = 50
# rod_diameter = 0.0095 # m
# htc_correlation_type = 2
# []
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
strain_free_density = ${initial_fuel_density}
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.045
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
matpro_poissons_ratio = 1
matpro_youngs_modulus = 1
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.0208
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = 'pin_geometry'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
initial_fuel_density = 10476.35
total_densification = 0.00675
initial_porosity = 0.045
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
fission_rate = fission_rate
initial_porosity = 0.045
grain_radius = grain_radius
gbs_model = true
transient_option = NO_TRANSIENT
[]
[clad_density]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6550
[]
[clad_thermal]
type = ZryThermal
block = 'clad'
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
temperature = temp
matpro_poissons_ratio = true
matpro_youngs_modulus = true
cold_work_factor = 0.5
fast_neutron_fluence = fast_neutron_fluence
block = 'clad'
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep clad_zryplasticity'
block = 'clad'
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
creeprate_scale_factor = 1
model_irradiation_creep = 1
model_primary_creep = 1
model_thermal_creep = 1
max_inelastic_increment = 0.0002
[]
[clad_zryplasticity]
type = ZryPlasticityUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.5
plasticity_model_type = MATPRO
zircaloy_alloy_type = 4
max_inelastic_increment = 0.0002
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00417789
clad_outer_radius = 0.00475615
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
oxygen_weight_fraction_initial = 0.0012
[]
[phase]
type = ZrPhase
block = 'clad'
numerical_method = 2
temperature = temp
[]
[StrainEnergyDensity]
type = StrainEnergyDensity
block = 'clad'
incremental = 1
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200 # The maximum permissible iterative value for the variable.
min_value = 200 # The minimum permissible iterative value for the variable.
variable = temp # The name of the variable that this damper operates on
[]
[contact_slip]
type = ContactSlipDamper
primary = 5
secondary = 10
min_damping_factor = 0.05
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'contact'
contact_line_search_allowed_lambda_cuts = 0
contact_line_search_ltol = 0.5
verbose = true
l_max_its = 100
l_tol = 1e-3
nl_max_its = 40
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0
end_time = 125193600 #125194100 is the end time for the RIA
dtmax = 1e6
dtmin = 1e-7
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e3
optimal_iterations = 100
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = power_profile
max_function_change = 1e6
force_step_every_function_point = true
timestep_limiting_postprocessor = material_timestep
time_t = '125193610 125193620 125193630 125193640 125193650 125193660 125193670 125193680'
time_dt = '10 10 10 10 10 10 10 10'
growth_factor = 5
[]
[Quadrature]
order = FIFTH #SEVENTH
side_order = SEVENTH #Comment out if order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9 #For RIA the node number is ##***8479***##
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[1_rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[3_burnup_GWd]
type = FunctionValuePostprocessor
function = burnup_GWd
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = 'clad'
variable = vonmises_stress
[]
[z_average_RPF]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = RPF
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = 'clad'
[]
## Nodal values
[FCT] #fuel centerline temperature
type = NodalVariableValue
variable = temp
nodeid = 3866 #(0, 0.303375, 0)
[]
[FST] #fuel surface temperature
type = NodalVariableValue
variable = temp
nodeid = 3823 #(0.0040959, 0.303375, 0)
[]
[CIST] #clad inner surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9557 #(0.0041779, 0.305106, 0)
[]
[COST] #clad outer surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9547 #(0.00475615, 0.305106, 0)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 3823 #(0.0040959, 0.303375, 0)
use_displaced_mesh = true
[]
#######################################
[qpoint_penetration] #FOCE
type = ElementalVariableValue
variable = qpoint_penetration
elementid = 1200
use_displaced_mesh = 1
[]
[penetration] #FOCN
type = NodalVariableValue
variable = penetration
nodeid = 3823
use_displaced_mesh = 1
[]
[contact_pressure] #FOCN
type = NodalVariableValue
variable = contact_pressure
nodeid = 3823
use_displaced_mesh = 1
[]
[gap_cond] #FOCE
type = ElementalVariableValue
variable = gap_cond
elementid = 1200
use_displaced_mesh = 1
[]
[creep_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_creep_strain
elementid = 2981
use_displaced_mesh = 1
[]
[elastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_elastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[plastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_plastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[total_hoop_strain] #COCE
type = ElementalVariableValue
variable = total_hoop_strain
elementid = 2981
use_displaced_mesh = 1
[]
[clad_hoop_stress] #COCE
type = ElementalVariableValue
variable = hoop_stress
elementid = 2981
use_displaced_mesh = 1
[]
[clad_axial_elongation] #COTN
type = NodalVariableValue
variable = disp_y
nodeid = 10755
use_displaced_mesh = 1
[]
[clad_oxide_thickness] #COCE
type = ElementalVariableValue
variable = oxide_thickness
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_htc] #COCE
type = ElementalVariableValue
variable = clad_coolant_htc
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_temp] #COCE
type = ElementalVariableValue
variable = coolant_temp
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_flux] #COCE
type = ElementalVariableValue
variable = clad_coolant_flux
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_hmode] #COCE
type = ElementalVariableValue
variable = coolant_channel_hmode
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_htype] #COCE
type = ElementalVariableValue
variable = coolant_channel_htype
elementid = 2981
use_displaced_mesh = 1
[]
[critical_heat_flux] #COCE
type = ElementalVariableValue
variable = critical_heat_flux
elementid = 2981
use_displaced_mesh = 1
[]
[fuel_centerline_temp] #FICN
type = NodalVariableValue
variable = temp
nodeid = 3866
[]
[fuel_surface_temp] #FOCN
type = NodalVariableValue
variable = temp
nodeid = 3823
[]
[clad_inner_surface_temp] #CICN
type = NodalVariableValue
variable = temp
nodeid = 9557
[]
[clad_outer_surface_temp] #COCN
type = NodalVariableValue
variable = temp
nodeid = 9547
[]
[fuel_axial_elongation] #FOTN
type = NodalVariableValue
variable = disp_y
nodeid = 7739
[]
[clad_radial_elongation] #COCN
type = NodalVariableValue
variable = disp_x
nodeid = 9547
[]
[fuel_radial_elongation] #FOCN
type = NodalVariableValue
variable = disp_x
nodeid = 3823
[]
[SED_PPN_O] #COCE
type = ElementalVariableValue
variable = SED
elementid = 2981
use_displaced_mesh = 1
[]
[SED_PPN_I] #CICE
type = ElementalVariableValue
variable = SED
elementid = 2984
use_displaced_mesh = 1
[]
[zz_OFract_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfract_total
elementid = 2981
use_displaced_mesh = 1
[]
[zz_OGain_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfgain_total
elementid = 2981
use_displaced_mesh = 1
[]
#######################################
[max_clad_SED]
type = ElementExtremeValue
block = 'clad'
variable = SED
value_type = max
[]
#Post processor to calculate radial average enthalpy. This postprocessor isnt available yet in BISON
[z_RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.3
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = z_RAE
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_diameter'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_pellet_diameter'
[]
#Location of peak power node at appoximately 0.3 m in mesh
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = 'outfile_radial_temp'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
csv = true
#exodus = true
color = false
[outfile_clad_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_pellet_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_radial_temp]
type = CSV
end_time = -100000
[]
[console]
type = Console
output_linear = true
max_rows = 10
[]
[chkfile]
type = CSV
show = 'ave_temp_interior fission_gas_released FCT average_burnup peak_RAE'
execute_on = 'FINAL'
[]
[exodus]
type = Exodus
time_step_interval = 4
end_time = 125193700
[]
[exodus_RIA]
type = Exodus
time_step_interval = 3
start_time = 125193695
[]
[checkpoint_RIA]
type = Checkpoint
file_base = recover_files_RIA
sync_times = '124761600 125107200 125193600 125193650 125193700 125193700.06 125193700.07 125193700.08 125193700.09 125193700.10 125193700.20 125193700.30 125193700.40 125193700.50 125193700.60 125193700.70 125193700.80 125193700.90 125193701.00 125193701.25 125193701.50 125193701.75 125193702.00 125193702.25 125193702.50 125193702.75 125193703.00 125193704.00 125193705.00'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
show_material_props = true
[]
(assessment/LWR/validation/IFA_535/analysis/rod_811/IFA_535_rod_811.i)
# IFA 535.6 rod 811 (Table & Figure references are to IFA-535.pdf)
initial_fuel_density = 10398.06
[GlobalParams]
density = ${initial_fuel_density} #Table 1 (PDF page 14), 94.7% TD #Assuming a TD of 10980.
displacements = 'disp_x disp_y'
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 20 # 50
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = ifa535_rod811.e
[]
[]
[UserObjects]
[fuelPinGeometry]
type = FuelPinGeometry
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 297.0
# If the initial diameter from the mesh
# is compared to the pre & post-ramp diameters, then they should probably
# be compared at the same cladding temperatures.
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1'
initial_condition = 9.36e-6 # 2D grain radius 6um #From rod 810
#2.75e-6 #Table 3.2, 5.5/2 microns (Assuming 3D grain size)
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = avgPower_IFA535rod811.csv
format = columns
#direction = left
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axialPowerPeakingFactor_IFA535rod811.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 226461642 226461742 226465242 226465342 236293846 236294746'
y = '1.4475e-2 1 1 1.4475e-2 1.4475e-2 1 1 1.4475e-2'
[]
[cladTemp]
type = PiecewiseLinear
data_file = avgCladTemp_IFA535rod811.csv
format = columns
#direction = left
scale_factor = 1
[]
[cladPeakingFactors]
type = PiecewiseBilinear
data_file = axialCladTempPeakingFactor_IFA535rod811.csv
scale_factor = 1
axis = 1
[]
[cT]
type = CompositeFunction
functions = 'cladTemp cladPeakingFactors'
[]
[fluxFactor]
type = PiecewiseLinear
data_file = flux_IFA535rod811.csv
format = columns
#direction = left
scale_factor = 1
[]
[fluxValue]
type = CompositeFunction
functions = 'fluxFactor power_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1' # fission rate applied to the fuel (block 2) only
#fission_rate = fission_rate # coupling to the fission_rate aux variable
burnup_function = burnup
#fuel_pin_geometry = fuelPinGeometry
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuelPinGeometry
#a_upper = 337.53e-3 #317.4e-3+20.13e-3 (a_lower+pellet_height),top of fuel stack
#a_lower = 20.13e-3 #From top_bot_clad_height #18.5e-3 #bottom of fuel stack, Figure 3.1
#fuel_inner_radius = 0
#fuel_outer_radius = 4.569e-3 #Table 3.2, from diameter
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0988 0.9012 0 0 0 0'
fuel_volume_ratio = 1.0
#fuel_volume_ratio = 0.9756625712887741 #(dimple fraction) from calculations in fuel_volume_ratio.ipynb
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
axial_power_profile = axial_peaking_factors
#rod_ave_lin_pow = power_profile
#factor = 3.71098e13 #from fluxCalc.xlsx #8.025e17 #Table 3.7, avg. of cycles 8-11, converted to n/(m^2-s)
function = fluxValue
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
# Define mechanical contact between the
# fuel (sideset=10) and the clad (sideset=5)
primary = 5
secondary = 10
#penalty = 1e7 #for kinematic (default method is kinematic)
formulation = penalty #penalty method - same as rod810
penalty = 1e9
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
# Define thermal contact between the
# fuel (sideset=10) and the clad (sideset=5)
type = GasGapHeatTransfer
variable = temp
primary = 5 #'4 5 6' #5
secondary = 10 #8 #10
initial_moles = initial_moles # coupling to a postprocessor
# which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor
# which supplies the fission gas addition
roughness_secondary = 1e-6 #default
roughness_primary = 2e-6 #use 2e-6 instead of default
roughness_coef = 3.2 #use 3.2 unless know better
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 226461742
refab_gas_types = He
refab_fractions = 1
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
# pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
# pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
# pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7e6 #pp. 8 of "535.pdf"
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.1e6 #from pp.6 of "535.pdf" for IFA-409
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get
# inital fill gas mass
temperature = plenum_temperature # coupling to post processor to get
# gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get
# fission gas added
output = plenum_pressure # coupling to post processor to
# output plenum/gap pressure
refab_time = 226461742 #226465242 #217722744
refab_pressure = .76e6 #3.2e6
refab_temperature = 298.15 #449.05
refab_volume = 9.6e-6
displacements = 'disp_x disp_y'
[]
[]
[claddingSurfTemp]
type = FunctionDirichletBC
function = cT
boundary = '1 2 3' #2 # cladding boundary
variable = temp
[]
[]
[Materials]
[density_clad]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6551.0 #Check this value; cladding is Zr-2
[]
[density_fuel]
type = StrainAdjustedDensity
block = 'pellet_type_1'
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
# temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
initial_porosity = .053 #(1-density/theoreticalDensity)
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1'
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1'
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 297.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation] # relocation strain measure for UO2
type = UO2RelocationEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
fuel_pin_geometry = fuelPinGeometry
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.2 #0.02
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor] # isotropic elasticity tensor for Zry cladding
type = ZryElasticityTensor
block = 'clad'
[]
[clad_stress] # stress update class to govern the return mapping algorithm for creep
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_creep'
block = 'clad'
[]
[clad_creep] # creep for zircaloy cladding
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
temperature = temp
stress_free_temperature = 297.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_growth
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
initial_fuel_density = 10398.06
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1'
temperature = temp
#fission_rate = fission_rate # coupling to fission_rate aux variable
#initial_grain_radius = 9.36e-6 # 2D grain radius 6um #From rod 810
#2.75e-6 #Table 3.2, 5.5/2 microns (Assuming 3D grain size)
grain_radius = grain_radius
gbs_model = true
#burnup = burnup
burnup_function = burnup
#total_densification = 0.009 #Leave at default
initial_porosity = .053 #(1-density/theoreticalDensity)
transient_option = MICROCRACKING
#compute_swelling = true
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
# [limitDisp]
# type = MaxIncrement
# max_increment = 1e-5
# variable = disp_x
# []
[]
[Executioner]
type = Transient
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-3 #1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 236294746 #last time step from avgPower_IFA535rod811.csv
dtmax = 2e6 #1e6
dtmin = 1
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
force_step_every_function_point = true
timestep_limiting_function = power_profile
max_function_change = 3e20
optimal_iterations = 20 #15
iteration_window = 6
linear_iteration_ratio = 100
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
# volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
[]
[avg_clad_temp]
# average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = 'pellet_type_1'
[]
[input_rod_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[maxCenterlineTemp]
type = NodalExtremeValue
boundary = 12 # pellet_centerline
variable = temp
[]
[maxFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
variable = penetration
[]
[minFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
value_type = min
variable = penetration
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
#checkpoint = true
#execute_on = 'nonlinear timestep_end'
csv = true
exodus = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BEN013/BEN013.i)
################################################################################
#
# Description: Calvert Cliffs BEN013
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BEN013_power.csv
# axial peaking factor file BEN013_axial_peaking.csv
# flux boundary condition file BEN013_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07 #94.882 %TD Assume TD = 10972.65 kg/cm3
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.28581
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BEN013_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BEN013_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177922434 177922794'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177922434 177922794'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BEN013_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177922794
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
# execute_on = 'FINAL'
sync_times = '3600 7200 10800 14400 177922434 177922794'
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM071/BFM071.i)
################################################################################
#
# Description: Calvert Cliffs BFM071
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM071_power.csv
# axial peaking factor file BFM071_axial_peaking.csv
# flux boundary condition file BFM071_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31727
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM071_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM071_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 178956096 178956456'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 178956096 178956456'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM071_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 178956456
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK4/FK04.i)
# This file was created using BIF with the following inputs:
# FK04/FK04.var - md5sum: 789d603cfbdaaeb2625ea98056214f6f
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.053182
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
block = '1 3'
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.5e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.20e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/OSIRIS_H09/analysis/OSIRIS_H09.i)
initial_fuel_density = 10465.04
[GlobalParams]
density = ${initial_fuel_density} # 95.31% of TD (Assumed TD to be 10980)
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = H09_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 7.0668e-6 # Using centre pellet average grain size of 9.060
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = h09_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = h09_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 102133764 102134124'
y = '0.006533 1 1 0.006533'
[]
[flux]
type = PiecewiseBilinear
data_file = h09_fast_flux.csv
scale_factor = 1
axis = 1
[]
[clad_temp_bc]
type = PiecewiseBilinear
data_file = h09_clad_bc.csv
scale_factor = 1
axis = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz'
[]
[]
[Kernels]
[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
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
function = flux
factor = 1
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00324
a_upper = 3.66362
fuel_inner_radius = 0.0
fuel_outer_radius = 0.004095
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.03249 .96751 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.1e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
initial_fuel_density = 10465.04
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 293
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00819
diametral_gap =160.e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = .029
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'clad_creep'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 102134124
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 10
linear_iteration_ratio = 100
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[average_grain_radius]
type = ElementAverageValue
block = '3'
variable = grain_radius
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
(examples/Burnup_profile_displaced_mesh/RadialProfileSampler.i)
initial_fuel_density = 10233
[GlobalParams]
density = ${initial_fuel_density} #93.2% of TD (TD assumed to be 10980)
initial_porosity = 0.068
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = mesh.e
[]
[]
[Variables]
[temp]
initial_condition = 300
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 10.53e-6 # = 13.5e-6 experimental dia * 1.56 /2
[]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[]
[Functions]
[power_history]
# reads and interpolates an input file containing rod average linear power vs time
type = PiecewiseLinear
data_file = linear_power.csv
format = columns
[]
[axial_peaking_factors]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = power_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
#Ambient for initial build @ 0.101353 MPa, PWR @ 13.73 MPa and PIE @ 0.101353 MPa
x = '-100 0 5064768'
y = '0.007382 1 0.007382'
[]
[flux]
type = PiecewiseLinear
data_file = fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = clad_temp_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
add_variables = true
block = pellet_type_1
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
[]
[clad]
add_variables = true
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_yy creep_strain_xy'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1 # fission rate applied to the fuel only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = 0.00324
a_upper = 1.02024
fuel_outer_radius = 4.095e-3
fuel_inner_radius = 1.24e-3
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0707 0.9293 0 0 0 0'
num_radial = 80
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = '1'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
penalty = 1e7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = .955e-6
roughness_primary = 1.5e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 13.73e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.88e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10233
[]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
temperature = temp
stress_free_temperature = 300
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = .00819
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 1.7e-4 #diameteral gap
relocation_activation1 = 5000 # intial relocation activation power set to 5kW/m
burnup_relocation_stop = .04
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
diff_coeff_option = 'TURNBULL_D1_D2'
transient_option = 'MICROCRACKING'
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0
dtmax = 1e6
dtmin = 100
end_time = 5064768
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 6
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 4784
[]
[]
[VectorPostprocessors]
[Concentrations_on_displaced_mesh]
type = RadialProfileSampler
variable = 'disp_x'
sort_by = 'id'
burnup_function = burnup
quantity = 'N235 N236 N238 N239 N240 N241 N242 ntot_hm'
height = 0.46324
execute_on = timestep_end
outputs = 'ConcentrationsDisplaced'
[]
[Concentrations_on_undisplaced_mesh]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242'
height = 0.46324
burnup_function = burnup
outputs = 'ConcentrationsUnDisplaced'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
csv = true
exodus = false
color = false
[ConcentrationsDisplaced]
type = CSV
file_base = ConcentrationsDisplaced/'
[]
[ConcentrationsUnDisplaced]
type = CSV
file_base = 'ConcentrationsUnDisplaced/'
[]
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03.i)
# This file was created using BIF with the following inputs:
# FK03/FK03.var - md5sum: 63fb064f9380e246b80d3fb7762c0b71
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
block = '1 3'
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
initial_moles = initial_moles
gas_released = fission_gas_released
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
block = '1 3'
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 550000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01.i)
# This file was created using BIF with the following inputs:
# FK01.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.04298
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[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
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = 1
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/ifba_he_production/fill_gas_xenon_w_ifba.i)
#
# 2-D RZ One Pellet Test - IFBA using Xenon as fill gas
#
# This test is of a single pellet with cladding and a specified initial
# pressure of Xe fill gas. In addition, an IFBA layer is added which will
# generate He gas to be added to the plenum. The postprocessor interior_temp
# should be the same as the pure Xe test case initially and as the He gas is
# added to the plenum from the IFBA, the interior_temp value should approach
# the He fill gas test case (both in the doc subdirectory).
#
# This model demonstrates that the gas conductance for the plenum is being
# updated for the He gas generated by the IFBA layer.
#
initial_fuel_density = 10431.0 #95% TD (TD = 10980)
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
displacements = 'disp_x disp_y'
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[grain_radius]
block = '3'
initial_condition = 5e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = fuel_thermal_strain
[]
[clad]
block = 1
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = clad_thermal_strain
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
value = 5.3548e+14
fission_rate_function = power_history
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = 'fis_gas_released he_prod'
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_gas_types = Xe
initial_fractions = 1
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Clad_Temp]
type = DirichletBC
variable = temp
boundary = '2'
value = 580.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = 'fis_gas_released he_prod'
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fclad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 298
eigenstrain_name = clad_thermal_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 5.3e7 # 1.7 years (~3% burnup)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 # change: length of fuel stack in meters (1 pellet height)
[]
[he_prod]
type = IFBAHeProduction
zrb2_load = 1.181e-4
ifba_len = 1.0e-2
b10_enrich = 0.50
zrb2_rel_dens = 0.7
model = burnup
u235_enrich = 0.045
burnup = average_burnup
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup burnup he_prod interior_temp plenum_pressure'
file_base = fill_gas_xenon_w_ifba_check
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK7/FK07.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
# Other changes were added after that process.
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/HBEP/analysis/BK370/HBEP_BK370.i)
initial_fuel_density = 10233
[GlobalParams]
density = ${initial_fuel_density} #93.2% of TD (TD assumed to be 10980)
initial_porosity = 0.068
displacements = 'disp_x disp_y'
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 5 # 20 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = HBEP.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 10.53e-6 # = 13.5e-6 experimental dia * 1.56 /2
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
# reads and interpolates an input file containing rod average linear power vs time
type = PiecewiseLinear
data_file = BK370_linear_power.csv
format = columns
[]
[axial_peaking_factors]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK370_power_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
#Ambient for initial build @ 0.101353 MPa, PWR @ 13.73 MPa and PIE @ 0.101353 MPa
x = '-100 0 108313920 108317520'
y = '0.007382 1 1 0.007382'
[]
[flux]
type = PiecewiseLinear
data_file = BK370_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear #PiecewiseConstant
data_file = BK370_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK370_clad_temp_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz
vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_yy creep_strain_xy'
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 3 # fission rate applied to the fuel only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = 0.00324
a_upper = 1.02024
fuel_outer_radius = 4.095e-3
fuel_inner_radius = 1.24e-3
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0707 0.9293 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = 3
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_hoop]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
block = clad
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
penalty = 1e7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = .955e-6
roughness_primary = 1.5e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 13.73e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.88e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10233
[]
[fuel_thermal]
type = UO2Thermal
block = 3
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 300
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = .00819
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =1.7e-4 #diameteral gap
relocation_activation1 = 5000 # initial relocation activation power set to 5kW/m
burnup_relocation_stop = .04
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models ='clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 300
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 50
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 108317520
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 2e6
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block =3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[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
burnup_function = burnup
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.017 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = 3
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 4784
[]
[maxFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
variable = penetration
[]
[minFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
value_type = min
variable = penetration
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM070/BFM070.i)
################################################################################
#
# Description: Calvert Cliffs BFM070
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM070_power.csv
# axial peaking factor file BFM070_axial_peaking.csv
# flux boundary condition file BFM070_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.32168
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM070_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM070_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179225682 179226042'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179225682 179226042'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM070_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179226042
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/FUMEXII_Regate/analysis/Regate_smeared.i)
initial_fuel_density = 10360
[GlobalParams]
density = ${initial_fuel_density}
temperature = temp
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = regate_mesh_smeared.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.675e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = regate_linear_power.csv
scale_factor = 1
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = regate_axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 98406792 98407164 98407291 98407445 99578736 99580326'
y = '0.00654 1 1 0.00654 0.00654 0.839 0.839 0.00654'
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = regate_cladding_temperature.csv
scale_factor = 1
format = columns
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
data_file = regate_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_zz
creep_strain_xx elastic_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[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 = 3
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
factor = 1
function = fast_neutron_flux_function
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_lower = 0.00324
a_upper = 0.4444
fuel_inner_radius = 0
fuel_outer_radius = 0.004096
fuel_volume_ratio = 1
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.04487 0.95513 0 0 0 0'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_wall_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.5e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10360
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
initial_porosity = 0.05246
block = 3
temperature = temp
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 293.0
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.008192
diametral_gap =1.68e-5
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.015
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='clad_creep_stress plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[plasticity]
type = IsotropicPlasticityStressUpdate
block = 1
yield_stress = 500e6
hardening_constant = 2.5e9
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-4
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 99580326
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
sync_times = '98407291'
[console]
type = Console
max_rows = 30
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]