- boundaryThe list of boundary IDs from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundary IDs from the mesh where this object applies
- fuel_pin_geometryName of Layered1DFuelPinGeometry or Layered2DFuelPinGeometry UserObject
C++ Type:UserObjectName
Controllable:No
Description:Name of Layered1DFuelPinGeometry or Layered2DFuelPinGeometry UserObject
- variableThe name of the variable which this postprocessor integrates
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The name of the variable which this postprocessor integrates
LayeredSideAverageValuePostprocessor
Computes the average value of a variable along a specified sideset boundary in Layered1D and Layered2D meshes.
Description
LayeredSideAverageValuePostprocessor calculates the average value of a variable on a sideset for the case of Layered1D and Layered2D. For the integration along the slice/layer stacking direction, it uses the constant slice_height for each slice/layer fetched from the Layered1DFuelPinGeometry or Layered2DFuelPinGeometry object.
where is the global average value computed by this postprocessor, is the layer index, is the height of layer , and is the value of the variable on the sideset in layer , which has a single value for a given layer because it is a value at a point.
Example Input Syntax
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[ave_temp]
type = LayeredSideAverageValuePostprocessor<<<{"description": "Computes the average value of a variable along a specified sideset boundary in Layered1D and Layered2D meshes.", "href": "LayeredSideAverageValuePostprocessor.html"}>>>
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 2
variable<<<{"description": "The name of the variable which this postprocessor integrates"}>>> = temp
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = timestep_end
fuel_pin_geometry<<<{"description": "Name of Layered1DFuelPinGeometry or Layered2DFuelPinGeometry UserObject"}>>> = pin_geometry
[]
[](test/tests/layered_1D/side_average_value.i)Input Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
- execute_onTIMESTEP_ENDThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
Default:TIMESTEP_END
C++ Type:ExecFlagEnum
Options:XFEM_MARK, NONE, INITIAL, LINEAR, NONLINEAR_CONVERGENCE, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, TRANSFER
Controllable:No
Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
- execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
Default:0
C++ Type:int
Controllable:No
Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
- force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
- force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
- force_preicFalseForces the UserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREIC during initial setup
Execution Scheduling 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.
- outputsVector of output names where you would like to restrict the output of variables(s) associated with this object
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
- 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
- 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
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2_gas_communication.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part1.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_1_5D_A.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_1_5D_G.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_1/vitanza_1pt5.i)
- (examples/1.5D_rodlet_10pellets/1_5D.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1_gas_communication.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/TSQ002_1pt5.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_twentyslice.i)
- (examples/accident_tolerant_fuel/u3si2_sic/u3si2_outer_monolith_1.5D.i)
- (test/tests/layered2D/side_average_value.i)
- (test/tests/layered_1D/multi_block_error.i)
- (test/tests/layered_1D/layered_axial_profile_nonuniform.i)
- (assessment/LWR/validation/Riso_GE7_ZX115/analysis/Riso_GE7_1pt5.i)
- (test/tests/layered2D/layered_axial_profile.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2.i)
- (examples/1.5D_restart/Smeared_1.5D.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_1_5D_D.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_1_5D_F.i)
- (examples/1.5D_rodlet_10pellets/1_5D_friction.i)
- (assessment/LWR/validation/RE_Ginna_Rodlets/analysis/RE_Ginna_rodlet-4/RE_Ginna_rodlet_4_1pt5.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_1_5D_E.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_tenslice.i)
- (test/tests/layered_1D/side_average_value.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_2/REP_Na_2_1pt5.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_1pt5_aniso.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_fortyslice.i)
- (test/tests/layered_1D/layered_axial_profile.i)
- (examples/temperature_tables/layered1D_cases/1pt5D.i)
- (test/tests/radial_power_factor/two_blocks.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_1_5D_B.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part2.i)
- (test/tests/layered_1D/multi_block.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_1_5D_C.i)
- (test/tests/layered2D/layered_axial_profile_nonuniform.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_1_5D_H.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ022/TSQ022_1pt5.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_1pt5.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/x441_base_1_5D.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part3_gas_communication.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1_action.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_hundredslice.i)
(test/tests/layered_1D/side_average_value.i)
#
# Mesh has two slices of heights 1 and 9.
# Temperature is set to 10 and 90 on the two slices.
# The average temperature is (10*1 + 90*9)/(1+9) = 82.
#
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
uniform_slice_heights = false
slice_heights = '1.0 9.0'
slices_per_block = 2
include_fuel = false
include_plenum = false
pellet_bottom_coor = 0
pellet_outer_radius = 1.0
clad_gap_width = 1.0
clad_thickness = 1.0
elem_type = EDGE2
[]
[]
[Functions]
[temp1]
type = PiecewiseLinear
x = '0 1'
y = '0 10'
[]
[temp2]
type = PiecewiseLinear
x = '0 1'
y = '0 90'
[]
[]
[Variables]
[temp]
initial_condition = 0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[BCs]
[temp1]
type = FunctionDirichletBC
boundary = 10003
variable = temp
function = temp1
[]
[temp2]
type = FunctionDirichletBC
boundary = 10023
variable = temp
function = temp2
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = clad
specific_heat = 1.0
thermal_conductivity = 100000000.0
[]
[density]
type = ParsedMaterial
block = clad
property_name = density
expression = 1.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_abs_tol = 9e-2
nl_rel_tol = 1e-12
l_tol = 1e-8
l_max_its = 100
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Postprocessors]
[ave_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = temp
execute_on = timestep_end
fuel_pin_geometry = pin_geometry
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_fuel = false
mesh_generator = layered1D_mesh
[]
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2_gas_communication.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_4_part1_gas_communication_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_fuel_radius]
order = FIRST
family = LAGRANGE
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_volume]
order = CONSTANT
family = MONOMIAL
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[]
[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
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
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 = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 3.17755E-06 # Addition of the volume to bring the starting total volume to 21.5cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
use_axial_gas_communication = true
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[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
initial_gas_types = 'He Ar'
initial_fractions = '0.05 0.95'
# initial_moles = initial_moles
# gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
incremental_calculation = true
execute_on = 'INITIAL LINEAR'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 172489043
end_time = 172489661
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
#axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.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_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
#hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10452.96
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.0
direction_max = 0.48
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 2.0e6
material_input = 'fis_gas_released'
execute_on = 'initial timestep_end'
debug_output = true
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[gap_layer_moles]
type = ElementExtremeValue
value_type = max
variable = gap_layer_moles
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 3.0 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
exodus = true
[exodus2]
type = Exodus
file_base = IFA_650_4_gas_part2_out
execute_on = 'initial timestep_end'
[]
[checkpoint2]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_2]
type = CSV
#execute_on = 'FINAL'
#create_final_symlink = true
file_base = 'clad2/new'
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part1.i)
initial_fuel_density = 10430.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.262416
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 295.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseBilinear
data_file = average_coolant_htc.csv
axis = 1
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 200412461 200413048'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 5.0e-6
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[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
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain
fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hoop_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
strain_zz creep_strain_zz hoop_stress'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
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 = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[rel]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
gap_thickness_threshold = 0.00039
axial_relocation_output_options = 'MASS_FRACTION'
mesh_generator = layered1D_mesh
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[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
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 199159200
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 199159200
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 1.9e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = -200.0
end_time = 199159200.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10430.0
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.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_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
start_time = -200.0
end_time = 199159200 # End base irradiation
# end_time = 200412431 # Begin Blowdown
# end_time = 200413048 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '199159200 200312431 200411431 200412431 200412461 200413048'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
[exodus]
type = Exodus
file_base = IFA_650_9_part1_out
execute_on = 'initial timestep_end'
[]
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_1_5D_A.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_1_5D_G.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_1/vitanza_1pt5.i)
# Model is of a 10 slice pellet stack in 1.5D
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.20435313e-11 # J/fission (200 MeV)
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.005305
pellet_bottom_coor = 0.00226
fuel_height = 0.0127
include_clad = false
include_plenum = false
clad_gap_width = 0
clad_thickness = 0
slices_per_block = 10
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 7.5e-6
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '-100 0 100 1e8'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = fuel
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
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[]
[BCs]
[fuel_wall_temp]
type = DirichletBC
variable = temp
boundary = '10'
value = 673
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.05
[]
[fuel_density]
type = ParsedMaterial
block = fuel
property_name = density
expression = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 6
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
execute_on = linear
burnup_function = burnup
variable = temp
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.0127
[]
[ave_fission_rate]
type = ElementAverageValue
block = fuel
variable = fission_rate
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[fuel_center_temperature]
type = NodalVariableValue
nodeid = 165 # Paraview GlobalNodeID 166 at (0.0, 0.009245)
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = false
color = false
print_linear_residuals = true
[csv]
type = CSV
execute_on = final
[]
[chkfile]
type = CSV
show = 'burnup fis_gas_percent fuel_center_temperature rod_total_power'
execute_on = final
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'fis_gas_percent >= 0.01'
[]
[]
(examples/1.5D_rodlet_10pellets/1_5D.i)
# Model is of a 10 pellet stack of fuel modeled in 1.5d
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = disp_x
temperature = temperature
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 8.0e-5
clad_thickness = 0.00056
fuel_height = 0.1186
plenum_height = 0.027
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temperature]
initial_condition = 580.0 # set initial temperature to coolant inlet
[]
[]
[AuxVariables]
[disp_y] ## Required for easier visualization in Paraview
[]
[disp_z] ## Required for easier visualization in Paraview
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[densification]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[relocation]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.5e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[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 = fuel # fission rate applied to the fuel (block 2) only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
strain = FINITE
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
eigenstrain_names = 'fuelthermal_strain swelling_strain fuel_relocation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx'
extra_vector_tags = 'ref'
outputs = none
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
block = clad
add_variables = true
strain = FINITE
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx'
extra_vector_tags = 'ref'
outputs = none
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
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
order = CONSTANT
family = MONOMIAL
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0 # 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 = 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 = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain
block = clad
execute_on = timestep_end
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
block = fuel
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
block = fuel
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
block = fuel
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
block = fuel
[]
[relocation_strain]
type = MaterialRealAux
variable = relocation
property = relocation_strain
execute_on = timestep_end
block = fuel
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[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 = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = 2
function = pressure_ramp # use the pressure_ramp function defined above
factor = 15.5e6
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.314
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
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
variable = temperature
boundary = 2
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 = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = fuel
gas_swelling_model_type = SIFGRS
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = swelling_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
fuel_pin_geometry = pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000.0
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
gbs_model = true
grain_radius = grain_radius
[]
[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
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'zrycreep'
[]
[zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
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
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
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
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[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 = 50
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
# scale_factor = -1
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[_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
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temperature
burnup_function = burnup
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[ave_fuel_temp]
type = ElementAverageValue
block = fuel
variable = temperature
[]
[central_fuel_temp]
type = NodalVariableValue
nodeid = 262 #Mesh dependent (0.0041, 0.05661)
variable = temperature
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
### Comparisons for 1.5D work, mesh specific #################### # von Mises Stress
[top_vonMises_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = vonmises_stress
[]
[center_vonMises_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = vonmises_stress
[]
[bottom_vonMises_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = vonmises_stress
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = fuel
[]
[top_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = vonmises_stress
[]
[top_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = vonmises_stress
[]
[center_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = vonmises_stress
[]
[center_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = vonmises_stress
[]
[bottom_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = vonmises_stress
[]
[bottom_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = vonmises_stress
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
# radial stress
[top_stress_rr_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = stress_xx
[]
[center_stress_rr_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = stress_xx
[]
[bottom_stress_rr_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = stress_xx
[]
[average_stress_rr_fuel]
type = ElementAverageValue
variable = stress_xx
block = fuel
[]
[top_stress_rr_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = stress_xx
[]
[top_stress_rr_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = stress_xx
[]
[center_stress_rr_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = stress_xx
[]
[center_stress_rr_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = stress_xx
[]
[bottom_stress_rr_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = stress_xx
[]
[bottom_stress_rr_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = stress_xx
[]
[average_stress_rr_clad]
type = ElementAverageValue
variable = stress_xx
block = clad
[]
# radial strain
[top_strain_rr_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = strain_xx
[]
[center_strain_rr_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = strain_xx
[]
[bottom_strain_rr_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = strain_xx
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = strain_xx
block = fuel
[]
[top_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = strain_xx
[]
[top_strain_rr_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = strain_xx
[]
[center_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = strain_xx
[]
[center_strain_rr_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = strain_xx
[]
[bottom_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = strain_xx
[]
[bottom_strain_rr_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = strain_xx
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = strain_xx
block = clad
[]
# effective creep strain
[top_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = creep_strain
[]
[top_creep_strain_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = creep_strain
[]
[center_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = creep_strain
[]
[center_creep_strain_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = creep_strain
[]
[bottom_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = creep_strain
[]
[bottom_creep_strain_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = creep_strain
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = creep_strain
block = clad
[]
### Nodal displacements
[top_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
[top_disp_r_clad_inner]
type = NodalVariableValue
variable = disp_x
nodeid = 63 #mesh dependent, at (0.00418, 0.09219)
[]
[top_disp_r_clad_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 68 #mesh dependent, at (0.00474, 0.09219)
[]
[center_disp_r_clad_inner]
type = NodalVariableValue
variable = disp_x
nodeid = 36 #mesh dependent, at (0.00418, 0.05661)
[]
[center_disp_r_clad_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 43 #mesh dependent, at (0.00474, 0.05661)
[]
[bottom_disp_r_clad_inner]
type = NodalVariableValue
variable = disp_x
nodeid = 9 #mesh dependent, at (0.00418, 0.02103)
[]
[bottom_disp_r_clad_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 16 #mesh dependent, at (0.00418, 0.02103)
[]
### Nodal temperatures
[top_temp_fuel]
type = NodalVariableValue
variable = temperature
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_temp_fuel]
type = NodalVariableValue
variable = temperature
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_temp_fuel]
type = NodalVariableValue
variable = temperature
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
[top_temp_clad_inner]
type = NodalVariableValue
variable = temperature
nodeid = 63 #mesh dependent, at (0.00418, 0.09219)
[]
[top_temp_clad_outer]
type = NodalVariableValue
variable = temperature
nodeid = 68 #mesh dependent, at (0.00474, 0.09219)
[]
[center_temp_clad_inner]
type = NodalVariableValue
variable = temperature
nodeid = 36 #mesh dependent, at (0.00418, 0.05661)
[]
[center_temp_clad_outer]
type = NodalVariableValue
variable = temperature
nodeid = 43 #mesh dependent, at (0.00474, 0.05661)
[]
[bottom_temp_clad_inner]
type = NodalVariableValue
variable = temperature
nodeid = 9 #mesh dependent, at (0.00418, 0.02103)
[]
[bottom_temp_clad_outer]
type = NodalVariableValue
variable = temperature
nodeid = 16 #mesh dependent, at (0.00418, 0.02103)
[]
### Nodal penetration
[top_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
### Nodal contact pressure
[top_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
### End of 1.5D comparisons
[center_effective_creep_rate_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent
variable = creep_strain_rate
[]
[center_effective_creep_rate_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent
variable = creep_strain_rate
[]
[effective_creep_strain_rate]
type = ElementAverageValue
variable = creep_strain_rate
block = clad
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[densification]
type = ElementAverageValue
variable = densification
block = fuel
[]
[volumetric_swelling]
type = ElementAverageValue
variable = volumetric_swelling_strain
block = fuel
[]
[relocation]
type = ElementAverageValue
variable = relocation
block = fuel
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'clad_radial_displacement'
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
[clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1_gas_communication.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 295.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 5.0e-6
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_fuel_radius]
order = FIRST
family = LAGRANGE
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_volume]
order = CONSTANT
family = MONOMIAL
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[]
[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
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
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 = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
use_axial_gas_communication = true
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[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
initial_moles = 0.0170917878663391
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
incremental_calculation = true
execute_on = 'INITIAL LINEAR'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = -200.0
end_time = 172387800.0
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.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_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10452.96
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.0
direction_max = 0.48
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 2.0e6
material_input = 'fis_gas_released'
execute_on = 'initial timestep_end'
debug_output = true
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[gap_layer_moles]
type = ElementExtremeValue
value_type = max
variable = gap_layer_moles
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
start_time = -200.0
end_time = 172387800 # End base irradiation
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
exodus = true
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
# execute_on = 'FINAL'
# create_final_symlink = true
file_base = 'clad/new'
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/TSQ002_1pt5.i)
# Model is of a 10 slice pellet stack in 1.5D
# Top plenum height of 295.07 mm + bot_gap_height = 1.e-3 in 2D mesh
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = disp_x
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.0041275
clad_gap_width = 8.89e-5
clad_thickness = 6.35e-4
fuel_height = 3.81381
plenum_height = 0.29607
slices_per_block = 10
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 300.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 8.7945e-6 # ((11.6+11.2+11.2+11.1)/4)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads an input file containing rod average linear power vs time
data_file = TSQ002_alhr.csv
format = columns
[]
[axial_peaking_factors]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads an input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 141798626 141802226' # -100 @ 101326 Pa, 0 to 141798626 @ 15.517 MPa, 141802226 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ002_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ002_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.517e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress strain_xx strain_yy strain_zz'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
strain_xx strain_yy strain_zz creep_strain_xx creep_strain_xy
creep_strain_yy creep_strain_zz'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
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 # checked with paraview
a_upper = 3.81705 # checked with paraview
fuel_outer_radius = .0041275 # checked with paraview
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
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
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic # #changed to match 1.5d example problem
penalty = 1e7 #changed to match 1.5D example problem to 1e7 from 1e9
model = frictionless
#normal_smoothing_distance = 0.1 # This option does not play nicely with 1.5D
[]
[]
[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 = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
#normal_smoothing_distance = 0.1 # This option does not play nicely with 1.5D
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.517e6
function = pressure_ramp # use the pressure_ramp function defined above
displacements = 'disp_x'
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
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
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'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
diameter = 0.008255
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 0.0001778 #diameteral gap
relocation_activation1 = 5000
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate #fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[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
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
stress_free_temperature = 300.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 = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Executioner]
type = Transient
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 = 1e-3
# controls for nonlinear iterations
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 141802226 #141798626+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
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 = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81381 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[FCT]
type = NodalVariableValue
nodeid = 264 #coords (0.0, 2.10084)
variable = temp
execute_on = 'initial timestep_end'
[]
[FCT_slice4]
type = NodalVariableValue
nodeid = 231 #coords (0.0, 1.71945)
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[gap_slice6]
type = NodalVariableValue
variable = penetration
nodeid = 328 #coords (0.0041275, 2.48222)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 295 #coords (0.0041275, 2.10084)
[]
[gap_slice4]
type = NodalVariableValue
variable = penetration
nodeid = 262 #coords (0.0041275, 1.71945)
[]
[contact_pressure_slice6]
type = NodalVariableValue
variable = contact_pressure
nodeid = 328 #coords (0.0041275, 2.48222)
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 295 #coords (0.0041275, 2.10084)
[]
[contact_pressure_slice4]
type = NodalVariableValue
variable = contact_pressure
nodeid = 262 #coords (0.0041275, 1.71945)
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[chkfile]
type = CSV
show = 'average_burnup fis_gas_percent FCT rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_twentyslice.i)
# Model is of a 20 slice pellet stack in 1.5D
# Top plenum height of 295.07 mm + bot_gap_height = 1.e-3 in 2D mesh
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = disp_x
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.0041275
clad_gap_width = 8.89e-5
clad_thickness = 6.35e-4
fuel_height = 3.81381
plenum_height = 0.29607
slices_per_block = 20
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 300.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 8.7945e-6 # ((11.6+11.2+11.2+11.1)/4)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[vonmises_stress]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads an input file containing rod average linear power vs time
data_file = TSQ002_alhr.csv
format = columns
[]
[axial_peaking_factors]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads an input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 141798626 141802226' # -100 @ 101326 Pa, 0 to 141798626 @ 15.517 MPa, 141802226 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ002_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ002_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.517e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain fuel_volumetric_strain'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
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
fuel_pin_geometry = pin_geometry
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
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
[]
[stress_xx] # computes stress components for output
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = VonMisesStress
execute_on = timestep_end
block = fuel
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = timestep_end
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic
penalty = 1e7
model = frictionless
[]
[]
[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 = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.517e6
function = pressure_ramp # use the pressure_ramp function defined above
displacements = 'disp_x'
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
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
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'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = pin_geometry
relocation_activation1 = 5000
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
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
stress_free_temperature = 300.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 = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4 #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 = 141802226 #141798626+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
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 = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 231 # Global node id 232, at coordinates (0.0, 1.71774, 0.0)
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[max_penetration]
type = NodalExtremeValue
block = fuel
value_type = max
variable = penetration
[]
[min_penetration]
type = NodalExtremeValue
block = fuel
value_type = min
variable = penetration
[]
[max_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = max
variable = contact_pressure
[]
[min_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = min
variable = contact_pressure
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[top_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 847 #coords (0.0041275, 3.62274)
[]
[top_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 153 #coords (0.0042164, 3.62274)
[]
[plenum_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 180 #coords (0.0042164, 3.96053)
[]
[top_radial_strain_fuel]
type = ElementalVariableValue
variable = strain_xx
elementid = 403
[]
[top_axial_strain_fuel]
type = ElementalVariableValue
elementid = 403
variable = strain_yy
[]
[top_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 72
[]
[top_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 72
[]
[plenum_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 80
[]
[plenum_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 80
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[pellet_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_surface_temp'
#[]
#[pellet_center_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 12
# sort_by = y
# outputs = 'outfile_FCT'
#[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[outfile_fuel_surface_temp]
# type = CSV
# execute_on = linear
#[]
#[outfile_FCT]
# type = CSV
# execute_on = linear
#[]
[console]
type = Console
max_rows = 25
[]
[]
(examples/accident_tolerant_fuel/u3si2_sic/u3si2_outer_monolith_1.5D.i)
# Model is of a 10 pellet fuel rodlet modeled in 1.5D. The rodlet contains
# U3Si2 fuel and a multilayer silicon carbide cladding (an inner composite
# winding layer) and an outer monolithic layer. The inner composite layer is
# 0.75 mm thick and the outer monolithic layer is 0.25 mm thick. The internal
# layered1D mesh generator can model a clad an arbitrary number of additional blocks.
# Therefore, to create the multilayer SiC clad the composite layer is assigned to the
# clad block and the monolithic_layer is assigned to the monolithic_layer block
# as specified in the additional_block_names parameter in the Mesh block.
initial_fuel_density = 11590.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = disp_x
temperature = temperature
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 8.0e-5
clad_mesh_density = customize
clad_thickness = 0.00075
nx_c = 5
additional_block_names = 'monolithic_layer'
additional_elements_per_ring = '3'
additional_ring_thicknesses = '0.00025'
fuel_height = 0.1186
plenum_height = 0.027
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temperature]
initial_condition = 580.0 # set initial temperature to coolant inlet
[]
[]
[AuxVariables]
[disp_y] ## Required for easier visualization in Paraview
[]
[disp_z] ## Required for easier visualization in Paraview
[]
[fast_neutron_flux]
block = 'clad monolithic_layer'
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_fluence]
block = 'clad monolithic_layer'
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
block = fuel
initial_condition = 10e-6
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[gaseous_swelling]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[densification]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[relocation]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e4 1e8'
y = '0 25000 25000'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '6.537e-3 1 1'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.5e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[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
block = fuel
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
strain = SMALL
incremental = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[composite]
block = clad
add_variables = true
strain = SMALL
incremental = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
eigenstrain_names = 'composite_thermal_strain composite_swelling_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[monolith]
block = monolithic_layer
add_variables = true
strain = SMALL
incremental = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
eigenstrain_names = 'monolith_thermal_strain monolith_swelling_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
order = CONSTANT
family = MONOMIAL
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
RPF = RPF
fuel_type = U3Si2
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = MaterialRealAux
variable = fast_neutron_flux
property = fast_neutron_flux
block = 'clad monolithic_layer'
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = MaterialRealAux
variable = fast_neutron_fluence
property = fast_neutron_fluence
block = 'clad monolithic_layer'
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
block = fuel
[]
[gas_swell]
type = MaterialRealAux
variable = gaseous_swelling
property = gaseous_swelling
execute_on = timestep_end
block = fuel
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
block = fuel
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
block = fuel
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[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 = 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
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
use_displaced_mesh = false
boundary = 2
function = pressure_ramp # use the pressure_ramp function defined above
factor = 15.5e6
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
use_displaced_mesh = false
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.314
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
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
variable = temperature
boundary = 2
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 10.368e-3 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
block = 'clad monolithic_layer'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
[]
### U3Si2 Fuel
[fuel_thermal]
type = SilicideFuelThermal
block = fuel
thermal_conductivity_model = WHITE
temperature = temperature
[]
[fuel_elasticity_tensor]
type = U3Si2ElasticityTensor
block = fuel
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = fuel
tangent_operator = elastic
inelastic_models = 'fuel_creep'
[]
[fuel_creep]
type = U3Si2CreepUpdate
block = fuel
temperature = temperature
[]
[fuel_thermal_expansion]
type = U3Si2ThermalExpansionEigenstrain
block = fuel
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = U3Si2VolumetricSwellingEigenstrain
block = fuel
gaseous_swelling_type = FINLAY
temperature = temperature
burnup_function = burnup
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = U3Si2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius_const = 2.5e-05
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
### Composite SiC
[composite_thermal]
type = CompositeSiCThermal
thermal_conductivity_model = STONE
temperature = temperature
block = clad
[]
[composite_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 2700.0
[]
[composite_elasticity_tensor]
type = CompositeSiCElasticityTensor
block = clad
[]
[composite_stress]
type = ComputeStrainIncrementBasedStress
block = clad
[]
[composite_thermal_expansion]
type = CompositeSiCThermalExpansionEigenstrain
block = clad
stress_free_temperature = 295.0
temperature = temperature
eigenstrain_name = composite_thermal_strain
[]
[composite_irradiation_swelling]
type = CompositeSiCVolumetricSwellingEigenstrain
block = clad
temperature = temperature
fast_neutron_fluence = fast_neutron_fluence
swelling_model = KATOH
number_of_substeps = 1000
eigenstrain_name = composite_swelling_strain
[]
### Monolithic SiC
[monolith_thermal]
type = MonolithicSiCThermal
temperature = temperature
thermal_conductivity_model = STONE
block = monolithic_layer
[]
[monolith_density]
type = StrainAdjustedDensity
block = monolithic_layer
strain_free_density = 3120.0
[]
[monolith_elasticity_tensor]
type = MonolithicSiCElasticityTensor
block = monolithic_layer
[]
[monolith_stress]
type = ComputeMultipleInelasticStress
block = monolithic_layer
tangent_operator = elastic
inelastic_models = 'monolith_creep'
[]
[monolith_creep]
type = MonolithicSiCCreepUpdate
block = monolithic_layer
fast_neutron_flux = fast_neutron_flux
temperature = temperature
k_function = 2e-37
[]
[monolith_thermal_expansion]
type = MonolithicSiCThermalExpansionEigenstrain
block = monolithic_layer
stress_free_temperature = 295.0
temperature = temperature
eigenstrain_name = monolith_thermal_strain
[]
[monolith_irradiation_swelling]
type = CompositeSiCVolumetricSwellingEigenstrain
block = monolithic_layer
temperature = temperature
fast_neutron_fluence = fast_neutron_fluence
swelling_model = KATOH
number_of_substeps = 1000
eigenstrain_name = monolith_swelling_strain
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[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 = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-7
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 25
iteration_window = 5
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[_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
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temperature
burnup_function = burnup
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gaseous_swelling]
type = ElementAverageValue
variable = gaseous_swelling
block = fuel
[]
[densification]
type = ElementAverageValue
variable = densification
block = fuel
[]
[volumetric_swelling]
type = ElementAverageValue
variable = volumetric_swelling_strain
block = fuel
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
[]
(test/tests/layered2D/side_average_value.i)
#
# The mesh contains two slices of cladding of height 10e-3.
# Temperature is set to 10 and 90 on the two slices.
# The average temperature is (10*10e-3 + 90*10e-3)/(10e-3+10e0-3) = 50.
#
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[layered2D_mesh]
type = Layered2DMeshGenerator
num_sectors = 10
axial_direction = y
slices_per_block = 2
clad_mesh_density = coarse
clad_thickness = 0.57e-3
clad_gap_width = 0.08e-3
fuel_height = 20e-3
include_plenum = false
include_fuel = false
pellet_bottom_coor = 0
pellet_inner_radius = 0
pellet_outer_radius = 0.0041
[]
[]
[UserObjects]
[pin_geometry]
type = Layered2DFuelPinGeometry
mesh_generator = layered2D_mesh
include_fuel = false
[]
[]
[Functions]
[temp_func]
type = PiecewiseBilinear
x = '0.005 0.015'
y = '0 1'
z = '0 0 10 90'
axis = 1
[]
[]
[Variables]
[temp]
initial_condition = 0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[BCs]
[temp_func]
type = FunctionDirichletBC
boundary = 5
variable = temp
function = temp_func
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = clad
specific_heat = 1.0
thermal_conductivity = 100000000.0
[]
[density]
type = ParsedMaterial
block = clad
property_name = density
expression = 1.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_abs_tol = 9e-2
nl_rel_tol = 1e-12
l_tol = 1e-8
l_max_its = 100
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Postprocessors]
[ave_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = temp
execute_on = timestep_end
fuel_pin_geometry = pin_geometry
[]
[]
[Outputs]
[out]
type = Exodus
output_dimension = 3
[]
[]
(test/tests/layered_1D/multi_block_error.i)
#
# Mesh has three fuel blocks with different inner radii and numbers of slices.
#
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = disp_x
slice_heights = '3.0 3.0 2.0 2.0 2.0 6.0 4.0'
volumetric_locking_correction = false
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[gen]
type = Layered1DMeshGenerator
uniform_slice_heights = false
slices_per_block = '2 3 1'
include_fuel = true
include_clad = true
include_plenum = true
pellet_bottom_coor = 0
clad_gap_width = .001
clad_thickness = .001
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 1
nx_c = 1
elem_type = EDGE2
[]
[]
[Functions]
[clad_axial_pressure]
type = ParsedFunction
expression = 2.0
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = 1.0
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[BCs]
[temp_clad_int]
type = DirichletBC
boundary = all_clad_interior
variable = temp
value = 600
[]
[temp_clad_ext]
type = DirichletBC
boundary = clad_outside_right
variable = temp
value = 500
[]
[temp_ext]
type = DirichletBC
boundary = all_pellet_exterior
variable = temp
value = 800
[]
[temp_center]
type = DirichletBC
boundary = pellet_centerline
variable = temp
value = 900
[]
[no_x]
type = DirichletBC
boundary = pellet_centerline
variable = disp_x
value = 0.0
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = true
mesh_generator = layered1D_mesh
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel_1]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel_1
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuelthermal_strain'
group_scalar_vars_in_reference_residual = true
extra_vector_tags = 'ref'
mesh_generator = layered1D_mesh
[]
[fuel_2]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel_2
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuelthermal_strain'
group_scalar_vars_in_reference_residual = true
extra_vector_tags = 'ref'
mesh_generator = layered1D_mesh
[]
[fuel_3]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel_3
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuelthermal_strain'
group_scalar_vars_in_reference_residual = true
extra_vector_tags = 'ref'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain'
group_scalar_vars_in_reference_residual = true
extra_vector_tags = 'ref'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'fuel_1 fuel_2 fuel_3'
youngs_modulus = 1e8
poissons_ratio = 0.25
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel_1 fuel_2 fuel_3'
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'fuel_1 fuel_2 fuel_3'
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 293.0
eigenstrain_name = fuelthermal_strain
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 1e6
poissons_ratio = 0.25
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 8e-6
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[heat_fuel]
type = HeatConductionMaterial
block = 'fuel_1 fuel_2 fuel_3'
specific_heat = 1.0
thermal_conductivity = 7000.0
[]
[heat_clad]
type = HeatConductionMaterial
block = clad
specific_heat = 1.0
thermal_conductivity = 100000000.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = 'fuel_1 fuel_2 fuel_3'
density = 10.0
[]
[density_clad]
type = StrainAdjustedDensity
block = clad
strain_free_density = 1.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_abs_tol = 9e-2
nl_rel_tol = 1e-12
l_tol = 1e-8
l_max_its = 100
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Postprocessors]
[ave_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = temp
execute_on = timestep_end
fuel_pin_geometry = pin_geometry
[]
[]
[Outputs]
exodus = true
[]
(test/tests/layered_1D/layered_axial_profile_nonuniform.i)
#
# This test compares the integrated axial profile using the LayeredAxialPowerProfile
# function and the raw axial profile function. The LayeredAxialPowerProfile
# function returns values very close to 1.0 in every case, whereas the raw data may
# not be integrated accurately.
#
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = disp_x
out_of_plane_strain = strain_yy
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
uniform_slice_heights = false
slice_heights = '0.25 0.5 1.25 2.0 0.2'
slices_per_block = 4
pellet_outer_radius = 0.2
clad_gap_width = 0.2
clad_thickness = 0.2
pellet_bottom_coor = 0
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 2
nx_c = 1
bx_p = 2
[]
[]
[Variables]
[disp_x]
[]
[]
[AuxVariables]
[strain_yy]
[]
[axial_profile]
order = CONSTANT
family = MONOMIAL
[]
[raw_axial_profile]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[disp_x_fuel]
type = ParsedFunction
expression = t*0.01
[]
[zero]
type = ParsedFunction
expression = '0'
[]
[raw_axial_profile]
type = ParsedFunction
expression = 'if(t<=1.0, 1.0,
if(t<=2.0, 1.0+0.05*(y-2.0),
if(t<=3.0, 1.0+0.1*cos(pi/2.0*(y-1.0)),
if(t<=4.0, 1.0+0.01*if(y<3,8*y-15,9.0),
if(t<=5.0, 1.0-0.2*cos(2.5*(y-2.0))+0.5*(y-2.0)+0.04*sin(5.0),
0)))))'
[]
[axial_profile]
type = LayeredAxialPowerProfile
axial_power_profile = raw_axial_profile
fuel_pin_geometry = pin_geometry
[]
[]
[Kernels]
[rz]
type = StressDivergenceRZTensors
variable = disp_x
component = 0
[]
[]
[AuxKernels]
[strain_yy]
type = FunctionAux
variable = strain_yy
function = zero
[]
[axial_profile]
type = FunctionAux
variable = axial_profile
function = axial_profile
[]
[raw_axial_profile]
type = FunctionAux
variable = raw_axial_profile
function = raw_axial_profile
[]
[]
[BCs]
[zero_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 12
function = zero
[]
[clad]
type = DirichletBC
variable = disp_x
boundary = 5
value = 0
[]
[fuel]
type = FunctionDirichletBC
variable = disp_x
boundary = 10
function = disp_x_fuel
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 10
poissons_ratio = 0
[]
[strain]
type = ComputeAxisymmetric1DIncrementalStrain
[]
[stress]
type = ComputeStrainIncrementBasedStress
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Postprocessors]
[integrated_axial_profile]
type = LayeredSideAverageValuePostprocessor
boundary = 8
variable = axial_profile
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[integrated_raw_axial_profile]
type = LayeredSideAverageValuePostprocessor
boundary = 8
variable = raw_axial_profile
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
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 = 15
nl_abs_tol = 1e-8
end_time = 5
dt = 1
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/Riso_GE7_ZX115/analysis/Riso_GE7_1pt5.i)
[GlobalParams]
displacements = 'disp_x'
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
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.005205
clad_gap_width = 110.0e-6
clad_thickness = 8.15e-4
fuel_height = 0.74952
plenum_height = 0.15665 # Add volume from below the pellet stack = 0.01494 - 0.00224 = 0.0127
# Nominal plenum height = 0.14395 + 0.0127 = 0.15665
slices_per_block = 10
[]
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temperature]
initial_condition = 293.0 # set initial temperature to ambient
scaling = 1e3
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 9.4e-6 # from Riso GE7 report, Table 2-1, R = 1.56*l/2, l is 2D average size, Mendelson, J.Am.Cerm.Soc.(1969) eqn 13
[]
[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 = riso_ge7_zx115_linear_power.csv
scale_factor = 1
format = columns
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = riso_ge7_zx115_peaking_factors.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 161748936 161756676 161813271 161814651'
y = '.013995 1 1 .994475 .994475 .013995'
[]
[clad_wall_temperature]
type = PiecewiseLinear
data_file = riso_ge7_zx115_clad_temperature.csv
format = columns
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
data_file = riso_ge7_zx115_fast_flux.csv
format = columns
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 7.24e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress strain_xx strain_xy strain_yy strain_zz'
mesh_generator = layered1D_mesh
extra_vector_tags = 'ref'
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
strain_xx strain_xy strain_yy strain_zz creep_strain_xx creep_strain_xy
creep_strain_yy creep_strain_zz'
mesh_generator = layered1D_mesh
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
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = fuel
density = 10431.0
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.76446
a_lower = 0.01494
fuel_inner_radius = 0
fuel_outer_radius = 0.005205
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
factor = 1
function = fast_neutron_flux_function
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 = fuel
variable = grain_radius
temperature = temperature
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
penalty = 1e14
formulation = penalty
normalize_penalty = true
model = frictionless
[]
[]
# 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 = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
quadrature = true
# normal_smoothing_distance = 0.1 # This option is not applicable in 1.5D
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[temperature]
type = FunctionDirichletBC
variable = temperature
boundary = 2
function = clad_wall_temperature
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 7.24e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.29e6
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 # 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'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temperature
burnup = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.05
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
temperature = temperature
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
diameter = 0.01041 # fuel pellet diameter in meters
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 220.e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.03 # turn off relocation just before contact
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup = burnup
temperature = temperature
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
temp = temperature
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
strain_free_density = 10431.0
block = fuel
[]
[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
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
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
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
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
l_max_its = 40
l_tol = 1e-4
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
# end_time = 161756676 # End of base irradiation
end_time = 161814651 # Whole power history, rounded to dtmin
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
[]
[Quadrature]
side_order = FIFTH
order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[average_centerline_fuel_temperature]
type = LayeredAxisymmetricCenterlineAverageValuePostprocessor
boundary = 12
variable = temperature
execute_on = 'timestep_end'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[max_fuel_temperature]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_fuel_temperature]
type = NodalExtremeValue
block = fuel
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temperature]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temperature]
type = NodalExtremeValue
block = clad
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume] # gas volume
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[average_fission_rate]
type = ElementAverageValue
block = fuel
variable = fission_rate
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.74952 # rod height
[]
[rod_ave_lin_pow]
type = LayeredElementIntegralPowerPostprocessor
block = fuel
fission_rate = fission_rate
variable = temperature
fuel_pin_geometry = pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[max_penetration]
type = NodalExtremeValue
block = fuel
value_type = max
variable = penetration
execute_on = 'initial timestep_end'
[]
[min_penetration]
type = NodalExtremeValue
block = fuel
value_type = min
variable = penetration
execute_on = 'initial timestep_end'
[]
[max_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = max
variable = contact_pressure
[]
[min_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = min
variable = contact_pressure
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
# Nodal comparisons
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 262 #coords (0.005205, 0.340524)
use_displaced_mesh = true
[]
[penetration]
type = NodalVariableValue
variable = penetration
nodeid = 262 #coords (0.005205, 0.340524)
use_displaced_mesh = true
[]
[FCT]
type = NodalVariableValue
variable = temperature
nodeid = 231 #coords (0.0, 0.340524) Glb node id 232
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
sync_times = '161756676 161760846 161765136 161765976 161767595.9 161767655.9 161767716.1 161767775.9 161767839 161767896.1 161768000.3 161770475.9 161770583.9 161771136.1 161771189.8 161772036.1 161772083.5 161772936.1 161772958.2 161773056 161773093.9 161773836.1 161773889.8 161774736.1 161774758.2 161796696.1 161796702.4 161797236.1 161797283.5 161797356 161797523.4 161797716 161797788.6 161797835.9 161797876.9 161797956.1 161798019.3 161812536.1 161812595.9 161812716.1 161812836 161813270.9'
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[chkfile]
type = CSV
show = 'average_burnup fis_gas_percent FCT rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
[]
[]
[Debug]
show_var_residual = 'disp_x temperature'
show_var_residual_norms = true
[]
(test/tests/layered2D/layered_axial_profile.i)
#
# This test compares the integrated axial profile using the LayeredAxialPowerProfile
# function and the raw axial profile function. The LayeredAxialPowerProfile
# function returns values very close to 1.0 in every case, whereas the raw data may
# not be integrated accurately.
#
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
out_of_plane_strain = strain_yy
[]
[Mesh]
[layered2D_mesh]
type = Layered2DMeshGenerator
axial_direction = y
num_sectors = 10
fuel_height = 4.0
plenum_height = 0.2
slices_per_block = 2
pellet_outer_radius = 0.2
clad_gap_width = 0.2
clad_thickness = 0.2
pellet_bottom_coor = 0
pellet_mesh_density = customize
clad_mesh_density = customize
nr_p = 2
nr_c = 1
[]
[]
[Variables]
[disp_x]
[]
[disp_z]
[]
[]
[AuxVariables]
[disp_y]
[]
[strain_yy]
[]
[axial_profile]
order = CONSTANT
family = MONOMIAL
[]
[raw_axial_profile]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[disp_fuel]
type = ParsedFunction
expression = t*0.01
[]
[zero]
type = ParsedFunction
expression = '0'
[]
[raw_axial_profile]
type = ParsedFunction
expression = 'if(t<=1.0, 1.0,
if(t<=2.0, 1.0+0.05*(y-2.0),
if(t<=3.0, 1.0+0.1*cos(pi/2.0*(y-1.0)),
if(t<=4.0, 1.0+0.01*if(y<3,8*y-15,9.0),
if(t<=5.0, 1.0-0.2*cos(2.5*(y-2.0))+0.5*(y-2.0)+0.04*sin(5.0),
0)))))'
[]
[axial_profile]
type = LayeredAxialPowerProfile
axial_power_profile = raw_axial_profile
fuel_pin_geometry = pin_geometry
[]
[]
[Kernels]
[disp_x]
type = StressDivergenceTensors
out_of_plane_direction = y
variable = disp_x
component = 0
[]
[disp_z]
type = StressDivergenceTensors
out_of_plane_direction = y
variable = disp_z
component = 2
[]
[]
[AuxKernels]
[strain_yy]
type = FunctionAux
variable = strain_yy
function = zero
[]
[axial_profile]
type = FunctionAux
variable = axial_profile
function = axial_profile
[]
[raw_axial_profile]
type = FunctionAux
variable = raw_axial_profile
function = raw_axial_profile
[]
[]
[BCs]
[zero_x]
type = FunctionDirichletBC
variable = disp_x
boundary = bottom
function = zero
[]
[zero_z]
type = FunctionDirichletBC
variable = disp_z
boundary = bottom
function = zero
[]
[clad_x]
type = DirichletBC
variable = disp_x
boundary = 5
value = 0
[]
[clad_z]
type = DirichletBC
variable = disp_z
boundary = 5
value = 0
[]
[fuel_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 10
function = disp_fuel
[]
[fuel_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 10
function = disp_fuel
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 10
poissons_ratio = 0
[]
[strain]
type = ComputePlaneIncrementalStrain
out_of_plane_direction = y
[]
[stress]
type = ComputeStrainIncrementBasedStress
[]
[]
[UserObjects]
[pin_geometry]
type = Layered2DFuelPinGeometry
mesh_generator = layered2D_mesh
[]
[]
[Postprocessors]
[integrated_axial_profile]
type = LayeredSideAverageValuePostprocessor
boundary = 8
variable = axial_profile
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[integrated_raw_axial_profile]
type = LayeredSideAverageValuePostprocessor
boundary = 8
variable = raw_axial_profile
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
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 = 15
nl_abs_tol = 1e-8
end_time = 5
dt = 1
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1.i)
initial_fuel_density = 10452.96
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 295.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 5.0e-6
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[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
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
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 = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[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
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = -200.0
end_time = 172387800.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.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_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
start_time = -200.0
end_time = 172387800 # End base irradiation
# end_time = 172489043 # Begin Blowdown
# end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
[exodus]
type = Exodus
file_base = IFA_650_4_part1_out
execute_on = 'initial timestep_end'
[]
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2.i)
initial_fuel_density = 10452.96
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_4_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[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
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
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 = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[fuel_relo]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 3.17755E-06 # Addition of the volume to bring the starting total volume to 21.5cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[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
initial_gas_types = 'He Ar'
initial_fractions = '0.05 0.95'
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 172489043
end_time = 172489661
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
# axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.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_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
# hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
# end_time = 172387800 # End base irradiation
# end_time = 172489043 # Begin Blowdown
end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 3.0 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
exodus = true
execute_on = 'initial timestep_end'
perf_graph = true
[outfile_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(examples/1.5D_restart/Smeared_1.5D.i)
# Model is of a 10 pellet stack of fuel modeled in 1.5d
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = disp_x
temperature = temp
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 8.0e-5
clad_thickness = 0.00056
fuel_height = 0.1186
plenum_height = 0.027
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 10e-6
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[vonmises]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[densification]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[relocation]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.5e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuelthermal_strain swell reloc'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
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 = 1.0 #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 = fuel
variable = grain_radius
temperature = temp
execute_on = linear
[]
[stress_xx] # computes stress components for output
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain
block = clad
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
block = fuel
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
block = fuel
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
block = fuel
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
block = fuel
[]
[relocation_strain]
type = MaterialRealAux
variable = relocation
property = relocation_strain
execute_on = timestep_end
block = fuel
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[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
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = 2
function = pressure_ramp # use the pressure_ramp function defined above
factor = 15.5e6
[]
[]
[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 = 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
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
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 = fuel
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
#relocation_activation2 = 22965.879
#relocation_activation3 = 16404.199
relocation_model = ESCORE_modified
eigenstrain_name = reloc
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
# complete_burnup = 5
# total_densification = 0.01
initial_fuel_density = 10431.0
eigenstrain_name = swell
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLimbackHoppeUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
#absolute_tolerance = 1.0e-13
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
block = clad
#max_iterations = 50
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.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 = clad
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[]
#[Preconditioning]
# [SMP]
# type = SMP
# full = true
# []
#[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package' # -mat_superlu_dist_fact'
petsc_options_value = 'lu superlu_dist' # SamePattern_SameRowPerm'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7 #1e-8 #1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
# [Quadrature]
# order = THIRD
# side_order = FIFTH
# []
# [Predictor]
# type = SimplePredictor
# scale = 1.0
# []
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
# scale_factor = -1
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
# addition = 2.853e-7 # plenum
fuel_pin_geometry = pin_geometry
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[_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
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
burnup_function = burnup
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[ave_fuel_temp]
type = ElementAverageValue
block = fuel
variable = temp
[]
[central_fuel_temp]
type = NodalVariableValue
nodeid = 262 #Mesh dependent (0.0041, 0.05661)
variable = temp
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
[]
### Comparisons for 1.5D work, mesh specific #################### # von Mises Stress
[top_vonMises_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = vonmises
[]
[center_vonMises_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = vonmises
[]
[bottom_vonMises_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = vonmises
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises
block = fuel
[]
[top_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = vonmises
[]
[top_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = vonmises
[]
[center_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = vonmises
[]
[center_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = vonmises
[]
[bottom_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = vonmises
[]
[bottom_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = vonmises
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises
block = clad
[]
# radial stress
[top_stress_rr_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = stress_xx
[]
[center_stress_rr_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = stress_xx
[]
[bottom_stress_rr_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = stress_xx
[]
[average_stress_rr_fuel]
type = ElementAverageValue
variable = stress_xx
block = fuel
[]
[top_stress_rr_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = stress_xx
[]
[top_stress_rr_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = stress_xx
[]
[center_stress_rr_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = stress_xx
[]
[center_stress_rr_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = stress_xx
[]
[bottom_stress_rr_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = stress_xx
[]
[bottom_stress_rr_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = stress_xx
[]
[average_stress_rr_clad]
type = ElementAverageValue
variable = stress_xx
block = clad
[]
# radial strain
[top_strain_rr_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = strain_xx
[]
[center_strain_rr_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = strain_xx
[]
[bottom_strain_rr_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = strain_xx
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = strain_xx
block = fuel
[]
[top_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = strain_xx
[]
[top_strain_rr_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = strain_xx
[]
[center_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = strain_xx
[]
[center_strain_rr_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = strain_xx
[]
[bottom_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = strain_xx
[]
[bottom_strain_rr_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = strain_xx
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = strain_xx
block = clad
[]
# effective creep strain
[top_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = creep_strain
[]
[top_creep_strain_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = creep_strain
[]
[center_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = creep_strain
[]
[center_creep_strain_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = creep_strain
[]
[bottom_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = creep_strain
[]
[bottom_creep_strain_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = creep_strain
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = creep_strain
block = clad
[]
### Nodal displacements
[top_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
[top_disp_r_clad_inner]
type = NodalVariableValue
variable = disp_x
nodeid = 63 #mesh dependent, at (0.00418, 0.09219)
[]
[top_disp_r_clad_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 68 #mesh dependent, at (0.00474, 0.09219)
[]
[center_disp_r_clad_inner]
type = NodalVariableValue
variable = disp_x
nodeid = 36 #mesh dependent, at (0.00418, 0.05661)
[]
[center_disp_r_clad_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 43 #mesh dependent, at (0.00474, 0.05661)
[]
[bottom_disp_r_clad_inner]
type = NodalVariableValue
variable = disp_x
nodeid = 9 #mesh dependent, at (0.00418, 0.02103)
[]
[bottom_disp_r_clad_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 16 #mesh dependent, at (0.00418, 0.02103)
[]
### Nodal temperatures
[top_temp_fuel]
type = NodalVariableValue
variable = temp
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_temp_fuel]
type = NodalVariableValue
variable = temp
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_temp_fuel]
type = NodalVariableValue
variable = temp
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
[top_temp_clad_inner]
type = NodalVariableValue
variable = temp
nodeid = 63 #mesh dependent, at (0.00418, 0.09219)
[]
[top_temp_clad_outer]
type = NodalVariableValue
variable = temp
nodeid = 68 #mesh dependent, at (0.00474, 0.09219)
[]
[center_temp_clad_inner]
type = NodalVariableValue
variable = temp
nodeid = 36 #mesh dependent, at (0.00418, 0.05661)
[]
[center_temp_clad_outer]
type = NodalVariableValue
variable = temp
nodeid = 43 #mesh dependent, at (0.00474, 0.05661)
[]
[bottom_temp_clad_inner]
type = NodalVariableValue
variable = temp
nodeid = 9 #mesh dependent, at (0.00418, 0.02103)
[]
[bottom_temp_clad_outer]
type = NodalVariableValue
variable = temp
nodeid = 16 #mesh dependent, at (0.00418, 0.02103)
[]
### Nodal penetration
[top_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
### Nodal contact pressure
[top_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
### End of 1.5D comparisons
[center_eff_creep_rate_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent
variable = creep_strain_rate
[]
[center_eff_creep_rate_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent
variable = creep_strain_rate
[]
[effective_creep_strain_rate]
type = ElementAverageValue
variable = creep_strain_rate
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[densification]
type = ElementAverageValue
variable = densification
block = fuel
[]
[volumetric_swelling]
type = ElementAverageValue
variable = volumetric_swelling_strain
block = fuel
[]
[relocation]
type = ElementAverageValue
variable = relocation
block = fuel
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_1_5D_D.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_1_5D_F.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(examples/1.5D_rodlet_10pellets/1_5D_friction.i)
# Model is of a 10 pellet stack of fuel modeled in 1.5d
pressure_test = 2.0e6
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = disp_x
temperature = temperature
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 8.0e-5
clad_thickness = 0.00056
fuel_height = 0.1186
plenum_height = 0.027
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[AuxVariables]
[tangential_contact_pressure_aux]
block = fuel
[]
[]
[AuxKernels]
[tangential_contact_pressure_aux]
type = SpatialUserObjectAux
variable = tangential_contact_pressure_aux
user_object = 1DFriction_secondary
block = fuel
execute_on = 'TIMESTEP_END'
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
# We could have two element UOs to obtain interface stress
[1DContactStressOOP_fuel]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.00917
direction_max = 0.11591
block = fuel
execute_on = 'LINEAR NONLINEAR'
[]
[1DContactStressOOP_cladding]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.00917
direction_max = 0.11591
block = clad
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_secondary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = pellet_outer_radial_surface
num_layers = 10
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = true
tangential_pressure = tangential_contact_pressure_aux
friction_coefficient = 0.2
thickness = 0.01
penalty_factor = 1.0e13
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.00917
direction_max = 0.11591
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_primary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = clad_inside_right
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.00917
direction_max = 0.11591
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = false
secondary_side_frictional_user_object = 1DFriction_secondary
friction_coefficient = 0.2
thickness = 0.01
penalty_factor = 1.0e13
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[]
[Variables]
[temperature]
initial_condition = 580.0 # set initial temperature to coolant inlet
[]
[]
[AuxVariables]
[disp_y] ## Required for easier visualization in Paraview
[]
[disp_z] ## Required for easier visualization in Paraview
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[densification]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[relocation]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[discrete_contact_pressure]
order = FIRST
family = LAGRANGE
block = fuel
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.5e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[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 = fuel # fission rate applied to the fuel (block 2) only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
strain = FINITE
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
eigenstrain_names = 'fuelthermal_strain swelling_strain fuel_relocation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx'
extra_vector_tags = 'ref'
outputs = none
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
layer_friction_user_object = 1DFriction_secondary
[]
[clad]
block = clad
add_variables = true
strain = FINITE
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx'
extra_vector_tags = 'ref'
outputs = none
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
layer_friction_user_object = 1DFriction_primary
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
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
order = CONSTANT
family = MONOMIAL
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
RPF = RPF
isotopes = 'U235 U238'
isotope_fractions = '0.05 0.95'
[]
[]
[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 = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain
block = clad
execute_on = timestep_end
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
block = fuel
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
block = fuel
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
block = fuel
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
block = fuel
[]
[relocation_strain]
type = MaterialRealAux
variable = relocation
property = relocation_strain
execute_on = timestep_end
block = fuel
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = clad_inside_right
secondary = pellet_outer_radial_surface
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = clad_inside_right
secondary = pellet_outer_radial_surface
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
quadrature = true
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = 2
function = pressure_ramp # use the pressure_ramp function defined above
factor = 15.5e6
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = ${pressure_test}
startup_time = 0
R = 8.314
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
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
variable = temperature
boundary = 2
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 = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = fuel
gas_swelling_model_type = SIFGRS
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = swelling_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
fuel_pin_geometry = pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000.0
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
gbs_model = true
grain_radius = grain_radius
[]
[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
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'zrycreep'
[]
[zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
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
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
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
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[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 = 50
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 18
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
### Nodal contact pressure
[top_contact_pressure_fuel]
type = NodalVariableValue
variable = discrete_contact_pressure
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = discrete_contact_pressure
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_contact_pressure_fuel]
type = NodalVariableValue
variable = discrete_contact_pressure
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
# scale_factor = -1
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[fis_gas_produced] # fission gas produced (moles)
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temperature
burnup_function = burnup
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[ave_fuel_temp]
type = ElementAverageValue
block = fuel
variable = temperature
[]
[central_fuel_temp]
type = NodalVariableValue
nodeid = 262 #Mesh dependent (0.0041, 0.05661)
variable = temperature
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
### Comparisons for 1.5D work, mesh specific #################### # von Mises Stress
[top_vonMises_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = vonmises_stress
[]
[center_vonMises_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = vonmises_stress
[]
[bottom_vonMises_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = vonmises_stress
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = fuel
[]
[top_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = vonmises_stress
[]
[top_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = vonmises_stress
[]
[center_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = vonmises_stress
[]
[center_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = vonmises_stress
[]
[bottom_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = vonmises_stress
[]
[bottom_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = vonmises_stress
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
### End of 1.5D comparisons
[fuel_elongation]
type = LayeredElongation
fuel_pin_geometry = pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
execute_on = 'initial timestep_end'
[]
[clad_elongation]
type = LayeredElongation
fuel_pin_geometry = pin_geometry
out_of_plane_strain_cladding = cladding_strain_yy
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'clad_radial_displacement'
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'fuel_radial_displacement'
[]
[contact_pressure_output]
type = NodalValueSampler
variable = contact_pressure
boundary = 10
sort_by = y
outputs = 'contact_pressure_output'
[]
[tangential_pressure_output]
type = NodalValueSampler
variable = tangential_contact_pressure_aux
boundary = 10
sort_by = y
outputs = 'tangential_pressure_output'
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
[clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[contact_pressure_output]
type = CSV
execute_on = 'TIMESTEP_END'
[]
[tangential_pressure_output]
type = CSV
execute_on = 'TIMESTEP_END'
[]
[]
(assessment/LWR/validation/RE_Ginna_Rodlets/analysis/RE_Ginna_rodlet-4/RE_Ginna_rodlet_4_1pt5.i)
# This file contains all characteristics specific to the Rodlet 4 1.5 D layered model
# It uses information from the Base file to create a complete input file
!include ../RE_Ginna_Rodlets_Base.i
id = RE_Ginna_rodlet_4_1pt5
# Fuel material properties
initial_grain_radius = 10.0e-6 # m (2D grain radius 10.0e-6)
fuel_youngs_modulus = 2.0e11 # Pa
fuel_poissons_ratio = 0.345 # (-)
# Cladding material properties
cladding_thermal_expansion_coeff = 5.0e-6 # K^-1
# Rod geometry
fuel_inner_radius = 0.001407 # m
pellet_inner_radius = 0.001407 # m
pellet_outer_radius = 0.0044515 # m
fuel_height = 0.541782 # m
plenum_height = 0.047316 # m
rod_power_scale_factor = 0.541782 # m (rod height)
# Cladding geometry
clad_gap_width = 9.5e-5 # m
clad_thickness = 7.495e-4 # m
# Mesh parameters
slices_per_block = 10
fuel_blockid = fuel
clad_blockid = clad
# Coolant pressure ramp parameters
pressure_ramp_x = '-100 0 115273407.3 115273767.3'
pressure_ramp_y = '0.006533 1 1 0.006533'
coolant_pressure_scaling_factor = 15.51e6
# Isotope fractions
isotope_fraction_U235 = 0.037
isotope_fraction_U238 = 0.963
# BC boundary names
clad_surface_temperature_boundary = 2
coolantPressure_boundary = 2
PP_temperature = ave_temperature_interior
PP_volume = gas_volume
# Materials block parameters
fuel_elasticity_tensor_type = ComputeIsotropicElasticityTensor
clad_stress_inelastic_models = 'clad_creep'
clad_thermal_expansion_type = ComputeThermalExpansionEigenstrain
# Eigenstrain names
fuel_thermal_expansion_eigenstrain_name = fuel_thermal_strain
fuel_volumetric_swelling_eigenstrain_name = fuel_volumetric_strain
clad_thermal_expansion_eigenstrain_name = clad_thermal_eigenstrain
# Relocation
burnup_relocation_stop = 0.0204 # FIMA
# Numerical options
damper_max_temperature_value = 3200 # K
damper_min_temperature_value = 275 # K
verbose_option = false
nl_max_its = 50
end_time = 115273767.3 # s
TimeStepper_optimal_iterations = 15
TimeStepper_iteration_window = 5
TimeStepper_max_function_change = 3e20
# Postprocessor parameters
fis_gas_grain_Postpro_type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
fis_gas_boundary_Postpro_type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
clad_flux_Postpro_type = LayeredSideFluxIntegralPostprocessor
fuel_flux_Postpro_type = LayeredSideFluxIntegralPostprocessor
FCT_nodeid = 264 # GlobalNodeID 265, coords (0.001407, 0.30122)
gap_nodeid = 295 # coords (0.0044515, 0.30122)
contact_pressure_nodeid = 295 # coords (0.0044515, 0.30122)
# Data file pathways
power_history_data_file = 'RE_Ginna_rodlet-4/rodlet4_power.csv'
axial_peaking_data_file = 'RE_Ginna_rodlet-4/rodlet4_axial_peaking.csv'
flux_data_file = 'RE_Ginna_rodlet-4/rodlet4_fast_flux.csv'
clad_temperature_bc_data_file = 'RE_Ginna_rodlet-4/rodlet4_clad_bc.csv'
[GlobalParams]
displacements = disp_x
temperature = temperature
[]
[Mesh]
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = ${pellet_inner_radius}
pellet_outer_radius = ${pellet_outer_radius}
clad_gap_width = ${clad_gap_width}
clad_thickness = ${clad_thickness}
fuel_height = ${fuel_height}
plenum_height = ${plenum_height}
slices_per_block = ${slices_per_block}
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Functions]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = ${coolant_pressure_scaling_factor}
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain
fuel_relocation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress'
mesh_generator = layered1D_mesh
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_xy creep_strain_yy creep_strain_zz'
mesh_generator = layered1D_mesh
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
[]
[]
[]
[]
[Burnup]
[burnup]
density = ${initial_fuel_density}
[]
[]
[Materials]
[fuel_elasticity_tensor]
youngs_modulus = ${fuel_youngs_modulus}
poissons_ratio = ${fuel_poissons_ratio}
[]
[clad_thermal_expansion]
thermal_expansion_coeff = ${cladding_thermal_expansion_coeff}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
# [limitT]
# type = MaxIncrement
# variable = temperature
# max_increment = 50
# []
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = ${damper_max_temperature_value}
min_value = ${damper_min_temperature_value}
[]
[]
[Executioner]
[TimeStepper]
max_function_change = ${TimeStepper_max_function_change}
[]
[]
[Postprocessors]
[ave_temperature_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial timestep_end'
[]
[avg_clad_temperature]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = ${fuel_blockid}
fuel_pin_geometry = pin_geometry
[]
[fission_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = ${fuel_blockid}
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel]
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temperature
fission_rate = fission_rate
block = ${fuel_blockid}
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = ${rod_power_scale_factor}
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[rod_ave_lin_pow]
type = LayeredElementIntegralPowerPostprocessor
block = ${fuel_blockid}
burnup_function = burnup
variable = temperature
fuel_pin_geometry = pin_geometry
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fis_gas_generated
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = ${fuel_blockid}
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = ${clad_blockid}
variable = vonmises_stress
[]
# nodal value comparison
[FCT]
type = NodalVariableValue
variable = temperature
nodeid = ${FCT_nodeid}
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = ${gap_nodeid}
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = ${contact_pressure_nodeid}
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_pellet'
[]
[]
[Outputs]
[outfile_clad]
type = CSV
file_base = '${id}_outfile_clad'
execute_on = 'FINAL'
[]
[outfile_pellet]
type = CSV
file_base = '${id}_outfile_pellet'
execute_on = 'FINAL'
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'average_burnup fis_gas_percent FCT rod_total_power'
execute_on = 'FINAL'
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_1_5D_E.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_tenslice.i)
# Model is of a 10 slice pellet stack in 1.5D
# Top plenum height of 295.07 mm + bot_gap_height = 1.e-3 in 2D mesh
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = disp_x
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.0041275
clad_gap_width = 8.89e-5
clad_thickness = 6.35e-4
fuel_height = 3.81381
plenum_height = 0.29607
slices_per_block = 10
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 300.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 8.7945e-6 # ((11.6+11.2+11.2+11.1)/4)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[vonmises_stress]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads an input file containing rod average linear power vs time
data_file = TSQ002_alhr.csv
format = columns
[]
[axial_peaking_factors]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads an input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 141798626 141802226' # -100 @ 101326 Pa, 0 to 141798626 @ 15.517 MPa, 141802226 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ002_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ002_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.517e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain fuel_volumetric_strain'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
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
fuel_pin_geometry = pin_geometry
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
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
[]
[stress_xx] # computes stress components for output
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = VonMisesStress
execute_on = timestep_end
block = fuel
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = timestep_end
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic
penalty = 1e7
model = frictionless
[]
[]
[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 = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.517e6
function = pressure_ramp # use the pressure_ramp function defined above
displacements = 'disp_x'
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
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
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'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = pin_geometry
relocation_activation1 = 5000
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
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
stress_free_temperature = 300.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 = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4 #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 = 141802226 #141798626+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
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 = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 231 # Global node id 232, at coordinates (0.0, 1.71774, 0.0)
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[max_penetration]
type = NodalExtremeValue
block = fuel
value_type = max
variable = penetration
[]
[min_penetration]
type = NodalExtremeValue
block = fuel
value_type = min
variable = penetration
[]
[max_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = max
variable = contact_pressure
[]
[min_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = min
variable = contact_pressure
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[top_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 427 #coords (0.0041275, 3.62274)
[]
[top_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 81 #coords (0.0042164, 3.62274)
[]
[plenum_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 90 #coords (0.0042164, 3.96053)
[]
[top_radial_strain_fuel]
type = ElementalVariableValue
variable = strain_xx
elementid = 203
[]
[top_axial_strain_fuel]
type = ElementalVariableValue
elementid = 203
variable = strain_yy
[]
[top_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 36
[]
[top_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 36
[]
[plenum_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 40
[]
[plenum_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 40
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[pellet_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_surface_temp'
#[]
#[pellet_center_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 12
# sort_by = y
# outputs = 'outfile_FCT'
#[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[outfile_fuel_surface_temp]
# type = CSV
# execute_on = linear
#[]
#[outfile_FCT]
# type = CSV
# execute_on = linear
#[]
[console]
type = Console
max_rows = 25
[]
[]
(test/tests/layered_1D/side_average_value.i)
#
# Mesh has two slices of heights 1 and 9.
# Temperature is set to 10 and 90 on the two slices.
# The average temperature is (10*1 + 90*9)/(1+9) = 82.
#
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
uniform_slice_heights = false
slice_heights = '1.0 9.0'
slices_per_block = 2
include_fuel = false
include_plenum = false
pellet_bottom_coor = 0
pellet_outer_radius = 1.0
clad_gap_width = 1.0
clad_thickness = 1.0
elem_type = EDGE2
[]
[]
[Functions]
[temp1]
type = PiecewiseLinear
x = '0 1'
y = '0 10'
[]
[temp2]
type = PiecewiseLinear
x = '0 1'
y = '0 90'
[]
[]
[Variables]
[temp]
initial_condition = 0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[BCs]
[temp1]
type = FunctionDirichletBC
boundary = 10003
variable = temp
function = temp1
[]
[temp2]
type = FunctionDirichletBC
boundary = 10023
variable = temp
function = temp2
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = clad
specific_heat = 1.0
thermal_conductivity = 100000000.0
[]
[density]
type = ParsedMaterial
block = clad
property_name = density
expression = 1.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_abs_tol = 9e-2
nl_rel_tol = 1e-12
l_tol = 1e-8
l_max_its = 100
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Postprocessors]
[ave_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = temp
execute_on = timestep_end
fuel_pin_geometry = pin_geometry
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_fuel = false
mesh_generator = layered1D_mesh
[]
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_2/REP_Na_2_1pt5.i)
# REP Na 2 Base Irradiation 1.5D layered simulation
# Uses information from the base irradiation and base file to make a complete input file
!include ../REP_Na_Base_Irradiation.i
!include ../REP_Na_Base.i
id = REP_Na_2_1pt5
clad_block_name = clad
fuel_block_name = fuel
# GlobalParams options
displacements_option = disp_x
# Mesh parameters
clad_thickness = 0.000637 # m
pellet_outer_radius = 0.0040248 # m
fuel_height = 1.00706 # m
plenum_height = 0.044077 # m
clad_gap_width = 93.0e-6 # m
pellet_bottom_coor = 0.0045 # m
slices_per_block = 10
# Fuel material properties
initial_fuel_density = 10344.71 # kg/m^3
total_densification = 0.00676 # (-)
initial_fuel_porosity = 0.057 # (-)
fuel_youngs_modulus = 2.0e11 # Pa
fuel_poissons_ratio = 0.345 # (-)
# Cladding material properties
max_inelastic_increment = 5.0e-3 # (-)
# Cladding geometry
clad_inner_radius = 0.0041178 # m
clad_outer_radius = 0.0047549 # m
# Rod geometry
BU_num_axial = 85
a_upper = 1.0115592 # m
fuel_outer_radius = 0.0040248 # m
fuel_diameter = 0.0080496 # m
diametral_gap = 186.0e-6 # m
rod_power_scale_factor = 1.05114 # m (rod height)
# Isotope fractions
isotope_fraction_U235 = 0.0685
isotope_fraction_U238 = 0.9315
# Relocation
burnup_relocation_stop = 0.024 # FIMA
# Coolant pressure and temperature ramp parameters
pressure_ramp_xy_data = '0 101325
8640 13999808
57067200 13999808
57110400 101325
57542410 101325
57542450 500008
57542700 500008
57542800 101325
57542900 101325'
temperature_ramp_xy_data = '0 293.15
8640 543.15
57067200 543.15
57110400 293.15
57542410 293.15
57542450 553.15
57542700 553.15
57542800 293.15
57542900 293.15'
# Plenum parameters
initial_plenum_pressure = 1.70e6 # Pa
refab_time = 57456000 # s
refab_pressure = 0.1e6 # Pa
refab_volume = 2.3e-6 # m^3
# Coolant channel parameters
inlet_massflux = 1779 # kg/m^2-sec
rod_diameter = 0.0095096 # m
rod_pitch = 1.265e-2 # m
# Contact
normalize_contact_penalty_option = true
contact_penalty = 1e14 # (-)
# BC parameters
coolantPressure_boundary = 2
convective_clad_surface_boundary = 2
PP_temperature = ave_temperature_interior
PP_volume = gas_volume
# Eigenstrain names
fuel_volumetric_swelling_eigenstrain_name = fuel_volumetric_strain
fuel_thermal_expansion_eigenstrain_name = fuel_thermal_strain
fuel_relocation_eigenstrain_name = fuel_relocation_strain
clad_irradiation_swelling_eigenstrain_name = clad_irradiation_strain
clad_thermal_expansion_eigenstrain_name = clad_thermal_eigenstrain
# Materials parameters
fuel_elasticity_tensor_type = ComputeIsotropicElasticityTensor
# Numerical options
damper_max_temperature_increment = 10.0 # K
nl_abs_tol = 1e-8
end_time = 57542400 # s
time_t = '57542410 57542420 57542430 57542440 57542450 57542460 57542470 57542480 57542500 57542500.01 57542500.02 57542500.03 57542500.04 57542500.05 57542500.06 57542500.07'
time_dt = '10 10 10 10 10 10 10 10 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001'
TimeStepper_optimal_iterations = 10
TimeStepper_max_function_change = 1e5
# Postprocessor parameters
fis_gas_grain_type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
fis_gas_boundary_type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
penetration_nodeid = 295 # (0.0040248, 0.558383, 0)
contact_pressure_nodeid = 295 # (0.0040248, 0.558383, 0)
fuel_centerline_temperature_nodeid = 264 # (0, 0.558383, 0)
fuel_surface_temperature_nodeid = 295 # (0.0040248, 0.558383, 0)
clad_inner_surface_temperature_nodeid = 45 # (0.0041178, 0.558383, 0)
clad_outer_surface_temperature_nodeid = 52 # (0.0047548, 0.558383, 0)
# Outputs options
color_option = false
chkfile_show = 'ave_temperature_interior fission_gas_released fuel_centerline_temperature average_burnup'
sync_times = '57542400 57542900'
# Data file pathways
power_history_data_file = 'REP_Na_2/REPNa2_power_history_Full.csv'
axial_peaking_data_file = 'REP_Na_2/REPNa2_axial_peaking_Full.csv'
[Mesh]
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${fuel_height}
plenum_height = ${plenum_height}
clad_gap_width = ${clad_gap_width}
pellet_bottom_coor = ${pellet_bottom_coor}
slices_per_block = ${slices_per_block}
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[AuxVariables]
[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
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[pellets]
block = ${fuel_block_name}
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'hoop_stress axial_stress vonmises_stress'
mesh_generator = layered1D_mesh
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
[]
[clad]
block = ${clad_block_name}
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'hoop_stress axial_stress vonmises_stress'
mesh_generator = layered1D_mesh
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
[]
[]
[Burnup]
[burnup]
density = ${initial_fuel_density}
[]
[]
[AuxKernels]
[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_block_name}
[]
[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_block_name}
[]
[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_block_name}
[]
[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_block_name}
[]
[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_block_name}
[]
[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_block_name}
[]
[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_block_name}
[]
[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_block_name}
[]
[]
[Materials]
[fuel_elasticity_tensor]
youngs_modulus = ${fuel_youngs_modulus}
poissons_ratio = ${fuel_poissons_ratio}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = ${damper_max_temperature_increment}
variable = temperature
[]
[]
[Postprocessors]
[ave_temperature_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[avg_clad_temperature] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[min_fuel_temperature]
type = NodalExtremeValue
block = ${fuel_block_name}
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temperature]
type = NodalExtremeValue
block = ${clad_block_name}
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = ${fuel_block_name}
fuel_pin_geometry = pin_geometry
[]
[fission_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = ${fuel_block_name}
fuel_pin_geometry = pin_geometry
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fis_gas_generated
[]
[fis_gas_grain]
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[gas_volume] # gas volume
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel]
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[rod_input_power]
scale_factor = ${rod_power_scale_factor}
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = ${fuel_block_name}
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = ${clad_block_name}
variable = vonmises_stress
[]
## Nodal values
[max_fuel_temperature]
execute_on = 'initial timestep_end'
[]
[max_clad_temperature]
execute_on = 'initial timestep_end'
[]
[]
[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'
[]
[]
[Outputs]
time_step_interval = 1
#exodus = true
[outfile_clad_diameter]
type = CSV
file_base = '${id}_clad_diameter_csv'
#execute_on = 'FINAL'
sync_times = ${sync_times}
sync_only = true
[]
[outfile_pellet_diameter]
type = CSV
file_base = '${id}_pellet_diameter_csv'
#execute_on = 'FINAL'
sync_times = ${sync_times}
sync_only = true
[]
[outfile_oxide_thickness]
type = CSV
file_base = '${id}_oxide_thickness_csv'
#execute_on = 'FINAL'
sync_times = ${sync_times}
sync_only = true
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_1pt5_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_mesh_density = customize
include_fuel = false
include_clad = true
include_plenum = false
pellet_outer_radius = 0.00465
clad_gap_width = 0
clad_thickness = 0.000725
fuel_height = 0.1625
slices_per_block = 10
pellet_bottom_coor = 0.0
nx_c = 1
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_fuel = false
mesh_generator = layered1D_mesh
[]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+07 1.e+07' # 100 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = inner_pressure_func
coolant_pressure = outer_pressure_func
coolant_pressure_scaling_factor = 1
fuel_pin_geometry = pin_geometry
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuelcladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.57 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.45 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.48 0.48'
[]
[L]
type = PiecewiseLinear
x = '-1000 10000'
y = '1.0 1.0'
[]
[M]
type = PiecewiseLinear
x = '-1000 10000'
y = '1.0 1.0'
[]
[N]
type = PiecewiseLinear
x = '-1000 10000'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/Layered1D]
[clad]
block = clad
add_variables = true
strain = FINITE
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
decomposition_method = TaylorExpansion
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain'
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'
group_scalar_vars_in_reference_residual = false
mesh_generator = layered1D_mesh
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[disp_y] ## Required for easier visualization in Paraview
[]
[disp_z] ## Required for easier visualization in Paraview
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[effective_creep_strain]
type = ADMaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
# [inner_temperature]
# type = REBEKADirichletBC
# variable = temperature
# function_tempm = temperature_func
# minimum_temperature = 573.0
# translation = 0.1625
# boundary = 5
# []
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 5
function = inner_pressure_func
[]
[]
[]
# [CoolantChannel]
# [convective_clad_surface]
# boundary = 2
# variable = temperature
# inlet_temperature = 473.
# inlet_pressure = 1.e+05
# inlet_massflux = 1. # kg/m^2-sec # almost stagnant steam
# rod_diameter = 10.75e-03
# rod_pitch = 1.26e-02 # default
# oxide_thickness = scale_thickness
# []
# []
[Materials]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[thermal]
type = ADZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = clad
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501
temperature_standard_thermal_creep_end = 500
fract_beta_phase_name = 'ad_fract_beta_phase'
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
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_aux
temperature = temperature
fraction_beta_phase = 'ad_fract_beta_phase'
fraction_oxygen_gain = oxywtfgain_total
[]
[]
[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 = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = temperature
fuel_pin_geometry = pin_geometry
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[max_eff_creep_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = effective_creep_strain
[]
[max_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[top_disp_r_clad_slice] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 28 # 1 line element
[]
[inner_pressure_func]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial linear'
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 9 #single line element
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 9 #single line element
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 9 #single line element
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_10MPa_1pt5_out_chkfile
show = 'ave_clad_exterior_temp max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_fortyslice.i)
# Model is of a 40 slice pellet stack in 1.5D
# Top plenum height of 295.07 mm + bot_gap_height = 1.e-3 in 2D mesh
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = disp_x
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.0041275
clad_gap_width = 8.89e-5
clad_thickness = 6.35e-4
fuel_height = 3.81381
plenum_height = 0.29607
slices_per_block = 40
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 300.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 8.7945e-6 # ((11.6+11.2+11.2+11.1)/4)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[vonmises_stress]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads an input file containing rod average linear power vs time
data_file = TSQ002_alhr.csv
format = columns
[]
[axial_peaking_factors]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads an input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 141798626 141802226' # -100 @ 101326 Pa, 0 to 141798626 @ 15.517 MPa, 141802226 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ002_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ002_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.517e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain fuel_volumetric_strain'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
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
fuel_pin_geometry = pin_geometry
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
RPF = RPF
fuel_volume_ratio = 1.0
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
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
[]
[stress_xx] # computes stress components for output
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = VonMisesStress
execute_on = timestep_end
block = fuel
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = timestep_end
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic
penalty = 1e7
model = frictionless
[]
[]
[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 = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.517e6
function = pressure_ramp # use the pressure_ramp function defined above
displacements = 'disp_x'
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
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
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'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = pin_geometry
relocation_activation1 = 5000
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
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
stress_free_temperature = 300.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 = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4 #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 = 141802226 #141798626+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
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 = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 231 # Global node id 232, at coordinates (0.0, 1.71774, 0.0)
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[max_penetration]
type = NodalExtremeValue
block = fuel
value_type = max
variable = penetration
[]
[min_penetration]
type = NodalExtremeValue
block = fuel
value_type = min
variable = penetration
[]
[max_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = max
variable = contact_pressure
[]
[min_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = min
variable = contact_pressure
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[top_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 1654 #coords (0.0041275, 3.62274)
[]
[top_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 306 #coords (0.0042164, 3.62274)
[]
[plenum_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 351 #coords (0.0042164, 3.96053)
[]
[top_radial_strain_fuel]
type = ElementalVariableValue
variable = strain_xx
elementid = 787
[]
[top_axial_strain_fuel]
type = ElementalVariableValue
elementid = 787
variable = strain_yy
[]
[top_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 136
[]
[top_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 136
[]
[plenum_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 156
[]
[plenum_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 156
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[pellet_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_surface_temp'
#[]
#[pellet_center_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 12
# sort_by = y
# outputs = 'outfile_FCT'
#[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[outfile_fuel_surface_temp]
# type = CSV
# execute_on = linear
#[]
#[outfile_FCT]
# type = CSV
# execute_on = linear
#[]
[console]
type = Console
max_rows = 25
[]
[]
(test/tests/layered_1D/layered_axial_profile.i)
#
# This test compares the integrated axial profile using the LayeredAxialPowerProfile
# function and the raw axial profile function. The LayeredAxialPowerProfile
# function returns values very close to 1.0 in every case, whereas the raw data may
# not be integrated accurately.
#
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = disp_x
out_of_plane_strain = strain_yy
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
fuel_height = 4.0
plenum_height = 0.2
slices_per_block = 2
pellet_outer_radius = 0.2
clad_gap_width = 0.2
clad_thickness = 0.2
pellet_bottom_coor = 0
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 2
nx_c = 1
bx_p = 2
[]
[]
[Variables]
[disp_x]
[]
[]
[AuxVariables]
[strain_yy]
[]
[axial_profile]
order = CONSTANT
family = MONOMIAL
[]
[raw_axial_profile]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[disp_x_fuel]
type = ParsedFunction
expression = t*0.01
[]
[zero]
type = ParsedFunction
expression = '0'
[]
[raw_axial_profile]
type = ParsedFunction
expression = 'if(t<=1.0, 1.0,
if(t<=2.0, 1.0+0.05*(y-2.0),
if(t<=3.0, 1.0+0.1*cos(pi/2.0*(y-1.0)),
if(t<=4.0, 1.0+0.01*if(y<3,8*y-15,9.0),
if(t<=5.0, 1.0-0.2*cos(2.5*(y-2.0))+0.5*(y-2.0)+0.04*sin(5.0),
0)))))'
[]
[axial_profile]
type = LayeredAxialPowerProfile
axial_power_profile = raw_axial_profile
fuel_pin_geometry = pin_geometry
[]
[]
[Kernels]
[rz]
type = StressDivergenceRZTensors
variable = disp_x
component = 0
[]
[]
[AuxKernels]
[strain_yy]
type = FunctionAux
variable = strain_yy
function = zero
[]
[axial_profile]
type = FunctionAux
variable = axial_profile
function = axial_profile
[]
[raw_axial_profile]
type = FunctionAux
variable = raw_axial_profile
function = raw_axial_profile
[]
[]
[BCs]
[zero_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 12
function = zero
[]
[clad]
type = DirichletBC
variable = disp_x
boundary = 5
value = 0
[]
[fuel]
type = FunctionDirichletBC
variable = disp_x
boundary = 10
function = disp_x_fuel
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 10
poissons_ratio = 0
[]
[strain]
type = ComputeAxisymmetric1DIncrementalStrain
[]
[stress]
type = ComputeStrainIncrementBasedStress
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Postprocessors]
[integrated_axial_profile]
type = LayeredSideAverageValuePostprocessor
boundary = 8
variable = axial_profile
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[integrated_raw_axial_profile]
type = LayeredSideAverageValuePostprocessor
boundary = 8
variable = raw_axial_profile
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
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 = 15
nl_abs_tol = 1e-8
end_time = 5
dt = 1
[]
[Outputs]
exodus = true
[]
(examples/temperature_tables/layered1D_cases/1pt5D.i)
#
# This calculation originates in CASL, where there was a need to compute a fuel
# temperature table to be used in another application.
#
# The set of calculations done here through the 'examples' file can be visually
# checked by running './create_temp_table.py files.txt' and examining the
# raw_data.png file. The temperatures in the plot increase with increasing
# linear heat rate. At 15 kW/ft, it appears that the high power and centerline
# temperature cause a small gap and a relatively low rod average fuel
# temperature. If the centerline temperature is plotted instead, the expected
# increase in temperature with increase in linear heat rate is clear.
#
initial_fuel_density = 10257.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = disp_x
temperature = temp
volumetric_locking_correction = false
slice_heights = '0.03866 0.08211 0.08211 0.08211 0.08212 0.08211 0.08211 0.08211 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.079212 0.079212 0.079212 0.079212 0.079212 0.16152' #VERA_DEFINED <<VERA MODIFIED>>
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
partitioner = centroid
centroid_partitioner_direction = y
patch_update_strategy = auto
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
clad_thickness = 0.00057
slices_per_block = 49
uniform_slice_heights = false
pellet_outer_radius = 0.004096
clad_gap_width = 8.4e-05
nx_p = 6
nx_c = 3
elem_type = EDGE3
bx_p = 0.5
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[terminator1]
type = Terminator
expression = 'burnup_EAV >= 0.0632'
[]
[terminator2]
type = Terminator
expression = 'plenum_pressure >= 1.55e7'
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 2.50e-06
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[vonmises]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[densification]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[relocation]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0.000000 10800 97200 500000000.000000'
# y = '0.000000 0.000000 16404.200000 16404.200000' #LHR5
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.00324 3.77797'
y = '0.000000 10800 97200 500000000.000000'
z = '1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000'
axis = 1
scale_factor = 1
[]
[bc_temperature]
type = PiecewiseBilinear
x = '0.00324 3.77797'
y = '0.000000 10800 97200 500000000.000000'
z = '300.000000 300.000000 585.000000 585.000000 585.000000 585.000000 585.000000 585.000000'
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
scale_factor = 1
x = '0 10800.0'
y = '0.00651 1.0'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.55132e+07
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[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 = fuel
fission_rate = fission_rate
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuelthermal_strain fuel_swelling fuel_relocation'
extra_vector_tags = 'ref'
mesh_generator = layered1D_mesh
group_scalar_vars_in_reference_residual = true
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
extra_vector_tags = 'ref'
mesh_generator = layered1D_mesh
group_scalar_vars_in_reference_residual = true
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 100
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238'
isotope_fractions = '0.001 0.999'
fuel_volume_ratio = 1.0
fuel_pin_geometry = pin_geometry
[]
[]
[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 = 4.29768e13
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 = fuel
variable = grain_radius
temperature = temp
execute_on = linear
[]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain
block = clad
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
block = fuel
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
block = fuel
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
block = fuel
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
block = fuel
[]
[relocation_strain]
type = MaterialRealAux
variable = relocation
property = relocation_strain
execute_on = timestep_end
block = fuel
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
normalize_penalty = true
penalty = 5e13
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_secondary = 1e-06
roughness_coef = 1.5
roughness_primary = 1e-06
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fis_gas_released
tangential_tolerance = 1.0e-4
# quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.55132e+07
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.99948e+06
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[clad_coolant_surface]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = bc_temperature
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.017
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation
fuel_pin_geometry = pin_geometry
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 293.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
total_densification = 0.005
initial_fuel_density = 10257.0
eigenstrain_name = fuel_swelling
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
matpro_poissons_ratio = false
matpro_youngs_modulus = false
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLimbackHoppeUpdate
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 = zirlo
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
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 = clad
strain_free_density = 6560.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-5
[]
[]
[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'
verbose = true
l_max_its = 50
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 5e-5
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1e9
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = 0.5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[Predictor]
type = SimplePredictor
scale = 1.0
skip_times_old = '0 10800 97200'
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[average_clad_temp]
type = ElementAverageValue
block = clad
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = ElementExtremeValue
value_type = MAX
block = clad
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = ElementExtremeValue
value_type = MIN
block = clad
variable = temp
execute_on = 'initial timestep_end'
[]
[average_grain_radius]
type = ElementAverageValue
variable = grain_radius
block = fuel
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[_dt]
type = TimestepSize
[]
[nonlinear_its]
type = NumNonlinearIterations
[]
[linear_its]
type = NumLinearIterations
[]
[rod_average_fuel_temp]
type = ElementAverageValue
block = fuel
variable = temp
execute_on = 'initial timestep_end'
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.6576
execute_on = 'initial timestep_end'
[]
[average_fission_rate]
type = AverageFissionRate
rod_ave_lin_pow = power_history
[]
[clad_hoop_stress_max]
type = ElementExtremeValue
value_type = MAX
variable = stress_zz
block = clad
execute_on = 'initial timestep_end'
[]
[clad_hoop_stress_min]
type = ElementExtremeValue
value_type = MIN
variable = stress_zz
block = clad
execute_on = 'initial timestep_end'
[]
[max_fuel_centerline_temp]
type = NodalExtremeValue
variable = temp
boundary = 12
execute_on = 'initial timestep_end'
[]
[max_fuel_surface_temp]
type = NodalExtremeValue
value_type = MAX
variable = temp
boundary = 10
execute_on = 'initial timestep_end'
[]
[max_gap_distance]
type = NodalExtremeValue
value_type = MAX
variable = penetration
boundary = 10
execute_on = 'initial timestep_end'
[]
[burnup_EAV]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[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
[]
[]
[Outputs]
perf_graph = true
exodus = false
color = false
[csv]
type = CSV
execute_on = 'initial timestep_end'
[]
[chkfile]
type = CSV
show = 'fission_gas_release plenum_pressure rod_average_fuel_temp max_fuel_centerline_temp burnup_EAV'
sync_only = true
sync_times = '0 10800 97200'
[]
[]
(test/tests/radial_power_factor/two_blocks.i)
#
# Mesh has two fuel blocks with different inner radii and two Burnup blocks.
# fuel_1_burnup appears on the lower fuel block, and
# fuel_2_burnup appears on the upper fuel block.
#
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = disp_x
slice_heights = '1.0 1.0'
volumetric_locking_correction = false
temperature = temp
density = 10431.0
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
uniform_slice_heights = false
slices_per_block = '1 1'
include_fuel = true
include_clad = true
include_plenum = false
pellet_bottom_coor = 0
pellet_outer_radius = '.0041 .0041'
pellet_inner_radius = '.000 .001'
clad_gap_width = .001
clad_thickness = .001
elem_type = EDGE3
[]
[]
[Functions]
[clad_axial_pressure]
type = ParsedFunction
expression = 2.0
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = 1.0
[]
[power_history]
type = PiecewiseLinear
x = '0 1e4'
y = '0 2.5e4'
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[Burnup]
[lower]
a_lower = '0.0'
a_upper = '1.0'
block = fuel_1
num_radial = 81
num_axial = 3
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
rod_ave_lin_pow = power_history
axial_power_profile = 1
base_name = fuel_1
[]
[upper]
a_lower = '1.0'
a_upper = '2.0'
block = fuel_2
num_radial = 81
num_axial = 3
fuel_inner_radius = 0.001
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
rod_ave_lin_pow = power_history
axial_power_profile = 1
base_name = fuel_2
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[BCs]
[temp_clad_int]
type = DirichletBC
boundary = all_clad_interior
variable = temp
value = 600
[]
[temp_clad_ext]
type = DirichletBC
boundary = clad_outside_right
variable = temp
value = 500
[]
[temp_ext]
type = DirichletBC
boundary = all_pellet_exterior
variable = temp
value = 800
[]
[temp_center]
type = DirichletBC
boundary = pellet_centerline
variable = temp
value = 900
[]
[no_x]
type = DirichletBC
boundary = pellet_centerline
variable = disp_x
value = 0.0
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = true
mesh_generator = layered1D_mesh
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel_1]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel_1
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuelthermal_strain'
mesh_generator = layered1D_mesh
[]
[fuel_2]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel_2
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuelthermal_strain'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'fuel_1 fuel_2'
youngs_modulus = 1e8
poissons_ratio = 0.25
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel_1 fuel_2'
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'fuel_1 fuel_2'
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 293.0
eigenstrain_name = fuelthermal_strain
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 1e6
poissons_ratio = 0.25
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 8e-6
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[heat_fuel]
type = HeatConductionMaterial
block = 'fuel_1 fuel_2'
specific_heat = 1.0
thermal_conductivity = 7000.0
[]
[heat_clad]
type = HeatConductionMaterial
block = clad
specific_heat = 1.0
thermal_conductivity = 100000000.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = 'fuel_1 fuel_2'
strain_free_density = 10.0
[]
[density_clad]
type = StrainAdjustedDensity
block = clad
strain_free_density = 1.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_abs_tol = 9e-2
nl_rel_tol = 1e-12
l_tol = 1e-8
l_max_its = 100
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Postprocessors]
[ave_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = temp
execute_on = timestep_end
fuel_pin_geometry = pin_geometry
[]
[]
[Outputs]
exodus = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_1_5D_B.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part2.i)
initial_fuel_density = 10430.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_9_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.262416
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseBilinear
data_file = average_coolant_htc.csv
axis = 1
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 200412461 200413048'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[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
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain
fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hoop_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
strain_zz creep_strain_zz hoop_stress'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
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 = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[rel]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 2.73291E-06 # Addition of the volume to bring the starting total volume to 19cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
gap_thickness_threshold = 0.00039
axial_relocation_output_options = 'MASS_FRACTION'
mesh_generator = layered1D_mesh
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[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
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 199159200
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 199159200
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 1.9e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 200412431
end_time = 200413048
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10430.0
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
# axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 1e-3
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.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_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
# end_time = 199159200 # End base irradiation
# end_time = 200412431 # Begin Blowdown
end_time = 200413048 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '199159200 200312431 200411431 200412431 200412461 200413048'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
exodus = true
execute_on = 'initial timestep_end'
perf_graph = true
[outfile_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(test/tests/layered_1D/multi_block.i)
#
# Mesh has three fuel blocks with different inner radii and numbers of slices.
#
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = disp_x
slice_heights = '3.0 3.0 2.0 2.0 2.0 6.0 4.0'
volumetric_locking_correction = false
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
uniform_slice_heights = false
slices_per_block = '2 3 1'
pellet_bottom_coor = 0
pellet_outer_radius = '.004 .004 .0045'
pellet_inner_radius = '.001 .0 .0015'
clad_gap_width = .001
clad_thickness = .001
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 1
nx_c = 1
elem_type = EDGE2
[]
[]
[Functions]
[clad_axial_pressure]
type = ParsedFunction
expression = 2.0
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = 1.0
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[]
[BCs]
[temp_clad_int]
type = DirichletBC
boundary = all_clad_interior
variable = temp
value = 600
[]
[temp_clad_ext]
type = DirichletBC
boundary = clad_outside_right
variable = temp
value = 500
[]
[temp_ext]
type = DirichletBC
boundary = all_pellet_exterior
variable = temp
value = 800
[]
[temp_center]
type = DirichletBC
boundary = pellet_centerline
variable = temp
value = 900
[]
[no_x]
type = DirichletBC
boundary = pellet_centerline
variable = disp_x
value = 0.0
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = true
mesh_generator = layered1D_mesh
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel_1]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel_1
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuelthermal_strain'
group_scalar_vars_in_reference_residual = true
extra_vector_tags = 'ref'
mesh_generator = layered1D_mesh
[]
[fuel_2]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel_2
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuelthermal_strain'
extra_vector_tags = 'ref'
mesh_generator = layered1D_mesh
[]
[fuel_3]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel_3
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuelthermal_strain'
extra_vector_tags = 'ref'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'fuel_1 fuel_2 fuel_3'
youngs_modulus = 1e8
poissons_ratio = 0.25
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel_1 fuel_2 fuel_3'
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'fuel_1 fuel_2 fuel_3'
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 293.0
eigenstrain_name = fuelthermal_strain
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 1e6
poissons_ratio = 0.25
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 8e-6
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[heat_fuel]
type = HeatConductionMaterial
block = 'fuel_1 fuel_2 fuel_3'
specific_heat = 1.0
thermal_conductivity = 7000.0
[]
[heat_clad]
type = HeatConductionMaterial
block = clad
specific_heat = 1.0
thermal_conductivity = 100000000.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = 'fuel_1 fuel_2 fuel_3'
strain_free_density = 10.0
[]
[density_clad]
type = StrainAdjustedDensity
block = clad
strain_free_density = 1.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_abs_tol = 9e-2
nl_rel_tol = 1e-12
l_tol = 1e-8
l_max_its = 100
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Postprocessors]
[ave_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = temp
execute_on = timestep_end
fuel_pin_geometry = pin_geometry
[]
[volume]
type = LayeredInternalVolumePostprocessor
fuel_pin_geometry = pin_geometry
boundary = 9
out_of_plane_strain = strain_yy
execute_on = 'initial timestep_end'
[]
[vol_fuel]
type = LayeredInternalVolumePostprocessor
fuel_pin_geometry = pin_geometry
boundary = 8
out_of_plane_strain = strain_yy
execute_on = 'initial timestep_end'
[]
[vol_clad]
type = LayeredInternalVolumePostprocessor
fuel_pin_geometry = pin_geometry
boundary = 5
out_of_plane_strain = strain_yy
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
exodus = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_1_5D_C.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(test/tests/layered2D/layered_axial_profile_nonuniform.i)
#
# This test compares the integrated axial profile using the LayeredAxialPowerProfile
# function and the raw axial profile function. The LayeredAxialPowerProfile
# function returns values very close to 1.0 in every case, whereas the raw data may
# not be integrated accurately.
#
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
out_of_plane_strain = strain_yy
[]
[Mesh]
[layered2D_mesh]
type = Layered2DMeshGenerator
axial_direction = y
uniform_slice_heights = false
slice_heights = '0.25 0.5 1.25 2.0 0.2'
slices_per_block = 4
num_sectors = 10
plenum_height = 0.2
pellet_outer_radius = 0.2
clad_gap_width = 0.2
clad_thickness = 0.2
pellet_bottom_coor = 0
pellet_mesh_density = customize
clad_mesh_density = customize
nr_p = 2
nr_c = 1
[]
[]
[Variables]
[disp_x]
[]
[disp_z]
[]
[]
[AuxVariables]
[disp_y]
[]
[strain_yy]
[]
[axial_profile]
order = CONSTANT
family = MONOMIAL
[]
[raw_axial_profile]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[disp_fuel]
type = ParsedFunction
expression = t*0.01
[]
[zero]
type = ParsedFunction
expression = '0'
[]
[raw_axial_profile]
type = ParsedFunction
expression = 'if(t<=1.0, 1.0,
if(t<=2.0, 1.0+0.05*(y-2.0),
if(t<=3.0, 1.0+0.1*cos(pi/2.0*(y-1.0)),
if(t<=4.0, 1.0+0.01*if(y<3,8*y-15,9.0),
if(t<=5.0, 1.0-0.2*cos(2.5*(y-2.0))+0.5*(y-2.0)+0.04*sin(5.0),
0)))))'
[]
[axial_profile]
type = LayeredAxialPowerProfile
axial_power_profile = raw_axial_profile
fuel_pin_geometry = pin_geometry
[]
[]
[Kernels]
[disp_x]
type = StressDivergenceTensors
out_of_plane_direction = y
variable = disp_x
component = 0
[]
[disp_z]
type = StressDivergenceTensors
out_of_plane_direction = y
variable = disp_z
component = 2
[]
[]
[AuxKernels]
[strain_yy]
type = FunctionAux
variable = strain_yy
function = zero
[]
[axial_profile]
type = FunctionAux
variable = axial_profile
function = axial_profile
[]
[raw_axial_profile]
type = FunctionAux
variable = raw_axial_profile
function = raw_axial_profile
[]
[]
[BCs]
[zero_x]
type = FunctionDirichletBC
variable = disp_x
boundary = bottom
function = zero
[]
[zero_z]
type = FunctionDirichletBC
variable = disp_z
boundary = bottom
function = zero
[]
[clad_x]
type = DirichletBC
variable = disp_x
boundary = 5
value = 0
[]
[clad_z]
type = DirichletBC
variable = disp_z
boundary = 5
value = 0
[]
[fuel_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 10
function = disp_fuel
[]
[fuel_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 10
function = disp_fuel
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 10
poissons_ratio = 0
[]
[strain]
type = ComputePlaneIncrementalStrain
out_of_plane_direction = y
[]
[stress]
type = ComputeStrainIncrementBasedStress
[]
[]
[UserObjects]
[pin_geometry]
type = Layered2DFuelPinGeometry
mesh_generator = layered2D_mesh
[]
[]
[Postprocessors]
[integrated_axial_profile]
type = LayeredSideAverageValuePostprocessor
boundary = 8
variable = axial_profile
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[integrated_raw_axial_profile]
type = LayeredSideAverageValuePostprocessor
boundary = 8
variable = raw_axial_profile
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
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 = 15
nl_abs_tol = 1e-8
end_time = 5
dt = 1
[]
[Outputs]
exodus = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_1_5D_H.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ022/TSQ022_1pt5.i)
# Model is of a 10 slice pellet stack in 1.5D
# Top plenum height of 213.45 mm + bot_gap_height = 1.e-3 in 2D mesh
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = disp_x
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0011684 #annular pellets
pellet_outer_radius = 0.0041275
clad_gap_width = 8.89e-5
clad_thickness = 6.35e-4
fuel_height = 3.81381
plenum_height = 0.21445
slices_per_block = 10
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 300.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 8.892e-6 # ((11.1+10.9+12.2)/3)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads an input file containing rod average linear power vs time
data_file = TSQ022_alhr.csv
format = columns
[]
[axial_peaking_factors]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ022_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads an input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 141789874 141793474' # -100 @ 101326 Pa, 0 to 141789874 @ 15.517 MPa, 141793474 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ022_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ022_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ022_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.517e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress
strain_xx strain_xy strain_yy strain_zz'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
strain_xx strain_xy strain_yy strain_zz creep_strain_xx creep_strain_xy
creep_strain_yy creep_strain_zz'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
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 # checked with paraview
a_upper = 3.81705 # checked with paraview
fuel_outer_radius = .0041275 # checked with paraview
fuel_inner_radius = .0011684 # Checked with paraview
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
fuel_volume_ratio = 1.0
order = Constant
family = MONOMIAL
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
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
[]
[stress_xx] # computes stress components for output
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = VonMisesStress
execute_on = timestep_end
block = fuel
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = timestep_end
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic # #changed to match 1.5d example problem
penalty = 1e9
model = frictionless
#normal_smoothing_distance = 0.1 # This option does not play nicely with 1.5D
[]
[]
[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 = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
#normal_smoothing_distance = 0.1 # This option does not play nicely with 1.5D
[]
[]
[BCs]
# No displacement boundary conditions are necessary for annular pellets because of the
# axisymmetric stress divergence which creates the additional constraint
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
function = pressure_ramp # use the pressure_ramp function defined above
factor = 15.517e6
displacements = 'disp_x'
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
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
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'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
diameter = 0.008255
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 0.0001778
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[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
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
stress_free_temperature = 300.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 = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Executioner]
type = Transient
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 = 1e-3
# controls for nonlinear iterations
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 141793474 #141789874+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
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 = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81381 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[FCT]
type = NodalVariableValue
nodeid = 264 #coords (0.0, 2.10084)
variable = temp
execute_on = 'initial timestep_end'
[]
[FCT_slice4]
type = NodalVariableValue
nodeid = 231 #coords (0.0, 1.71945)
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[gap_slice6]
type = NodalVariableValue
variable = penetration
nodeid = 328 #coords (0.0041275, 2.48222)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 295 #coords (0.0041275, 2.10084)
[]
[gap_slice4]
type = NodalVariableValue
variable = penetration
nodeid = 262 #coords (0.0041275, 1.71945)
[]
[contact_pressure_slice6]
type = NodalVariableValue
variable = contact_pressure
nodeid = 328 #coords (0.0041275, 2.48222)
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 295 #coords (0.0041275, 2.10084)
[]
[contact_pressure_slice4]
type = NodalVariableValue
variable = contact_pressure
nodeid = 262 #coords (0.0041275, 1.71945)
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[chkfile]
type = CSV
show = 'average_burnup fis_gas_percent FCT rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_1pt5.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_mesh_density = customize
include_fuel = false
include_clad = true
include_plenum = false
pellet_outer_radius = 0.00465
clad_gap_width = 0
clad_thickness = 0.000725
fuel_height = 0.1625
slices_per_block = 10
pellet_bottom_coor = 0.0
nx_c = 1
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_fuel = false
mesh_generator = layered1D_mesh
[]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+07 1.e+07' # 100 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = inner_pressure_func
coolant_pressure = outer_pressure_func
coolant_pressure_scaling_factor = 1
fuel_pin_geometry = pin_geometry
[]
[]
[Physics/SolidMechanics/Layered1D]
[clad]
block = clad
add_variables = true
strain = FINITE
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain'
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'
group_scalar_vars_in_reference_residual = false
mesh_generator = layered1D_mesh
[]
[]
[AuxVariables]
[disp_y] ## Required for easier visualization in Paraview
[]
[disp_z] ## Required for easier visualization in Paraview
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.0
translation = 0.1625
boundary = 5
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 5
function = inner_pressure_func
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1. # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501
temperature_standard_thermal_creep_end = 500
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
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_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfgain_total
[]
[]
[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 = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = temperature
fuel_pin_geometry = pin_geometry
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[max_eff_creep_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = effective_creep_strain
[]
[max_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[top_disp_r_clad_slice] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 28 # 1 line element
[]
[inner_pressure_func]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial linear'
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 9 #single line element
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 9 #single line element
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 9 #single line element
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_10MPa_1pt5_out_chkfile
show = 'ave_clad_exterior_temp max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/x441_base_1_5D.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'effective_creep_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'effective_creep_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part3_gas_communication.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_4_part2_gas_communication_checkpoint2_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_fuel_radius]
order = FIRST
family = LAGRANGE
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_volume]
order = CONSTANT
family = MONOMIAL
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[]
[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
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
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 = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 3.17755E-06 # Addition of the volume to bring the starting total volume to 21.5cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
use_axial_gas_communication = true
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[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
initial_gas_types = 'He Ar'
initial_fractions = '0.05 0.95'
# initial_moles = initial_moles
# gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
incremental_calculation = true
execute_on = 'INITIAL LINEAR'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
#axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.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_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
#hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10452.96
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'gap_layer_pressure_max < 101325.01'
execute_on = 'TIMESTEP_END'
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.0
direction_max = 0.48
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 2.0e6
equilibrium_pressure = 7.5e5
material_input = 'fis_gas_released'
execute_on = 'initial timestep_end'
debug_output = true
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[gap_layer_moles]
type = ElementExtremeValue
value_type = max
variable = gap_layer_moles
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dt = .1
end_time = 172489651 # End
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_3'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_3'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
exodus = true
[exodus3]
type = Exodus
file_base = IFA_650_4_gas_part3_out
execute_on = 'initial timestep_end'
[]
[checkpoint3]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_3]
type = CSV
#execute_on = 'FINAL'
#create_final_symlink = true
file_base = 'clad3/new'
[]
[outfile_temp_3]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_3]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1_action.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
initial_grain_radius = 5.0e-6
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_function = burnup
axial_relocation_output_options = MASS_FRACTION
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc
inlet_temperature = heat_sink_temperature
effective_emissivity = 0.75
rod_diameter = 0.01075
rod_pitch = 1.26e-2
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[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
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
out_of_plane_strain = strain_yy
fuel_pin_geometry = fuel_pin_geometry
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = -200.0
end_time = 172387800.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[NuclearMaterials]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hoop_stress'
fission_operation = 'LOCA'
physics = 'Mechanics Thermal'
initial_temperature = 295
stress_free_temperature = 295
extra_vector_tags = 'ref'
strain = FINITE
[UO2]
[fuel]
block = fuel
fuel_pin_geometry = fuel_pin_geometry
uo2_models = 'Burnup Elastic Creep Relocation Swelling ThermalExpansion HighBurnupStructureFormation'
isotopes = 'U235 U238'
isotope_fractions = '0.035 0.965'
burnup_relocation_stop = 0.024
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
fragmentation_model = 'BARANI'
[]
[]
[ZirconiumAlloy]
[clad]
block = clad
fuel_pin_geometry = fuel_pin_geometry
cladding_models = 'Elastic Creep IrradiationGrowth ZrPhase ZryOxidation ZryCladdingFailure'
failure_criterion = overstress
additional_generate_output = 'strain_zz hoop_creep_strain'
fast_neutron_flux_factor = 3e13
[]
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
start_time = -200.0
end_time = 172387800 # End base irradiation
# end_time = 172489043 # Begin Blowdown
# end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
[exodus]
type = Exodus
file_base = IFA_650_4_part1_out
execute_on = 'initial timestep_end'
[]
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_hundredslice.i)
# Model is of a 10 slice pellet stack in 1.5D
# Top plenum height of 295.07 mm + bot_gap_height = 1.e-3 in 2D mesh
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = disp_x
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.0041275
clad_gap_width = 8.89e-5
clad_thickness = 6.35e-4
fuel_height = 3.81381
plenum_height = 0.29607
slices_per_block = 100
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 300.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 8.7945e-6 # ((11.6+11.2+11.2+11.1)/4)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[vonmises_stress]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads an input file containing rod average linear power vs time
data_file = TSQ002_alhr.csv
format = columns
[]
[axial_peaking_factors]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads an input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 141798626 141802226' # -100 @ 101326 Pa, 0 to 141798626 @ 15.517 MPa, 141802226 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ002_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ002_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.517e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain fuel_volumetric_strain'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
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
fuel_pin_geometry = pin_geometry
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
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
[]
[stress_xx] # computes stress components for output
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = VonMisesStress
execute_on = timestep_end
block = fuel
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = timestep_end
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic
penalty = 1e7
model = frictionless
[]
[]
[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 = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.517e6
function = pressure_ramp # use the pressure_ramp function defined above
displacements = 'disp_x'
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
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
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'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = pin_geometry
relocation_activation1 = 5000
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
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
stress_free_temperature = 300.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 = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4 #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 = 141802226 #141798626+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
linear_iteration_ratio = 100
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
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 = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 231 # Global node id 232, at coordinates (0.0, 1.71774, 0.0)
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[max_penetration]
type = NodalExtremeValue
block = fuel
value_type = max
variable = penetration
[]
[min_penetration]
type = NodalExtremeValue
block = fuel
value_type = min
variable = penetration
[]
[max_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = max
variable = contact_pressure
[]
[min_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = min
variable = contact_pressure
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[top_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 4043 #coords (0.0041275, 3.62274)
[]
[top_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 847 #coords (0.0042164, 3.62274)
[]
[plenum_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 892 #coords (0.0042164, 3.96053)
[]
[top_radial_strain_fuel]
type = ElementalVariableValue
variable = strain_xx
elementid = 203
[]
[top_axial_strain_fuel]
type = ElementalVariableValue
elementid = 203
variable = strain_yy
[]
[top_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 36
[]
[top_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 36
[]
[plenum_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 40
[]
[plenum_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 40
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[pellet_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_surface_temp'
#[]
#[pellet_center_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 12
# sort_by = y
# outputs = 'outfile_FCT'
#[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[outfile_fuel_surface_temp]
# type = CSV
# execute_on = linear
#[]
#[outfile_FCT]
# type = CSV
# execute_on = linear
#[]
[console]
type = Console
max_rows = 25
[]
[]