- burnup_functionBurnup function
C++ Type:BurnupFunctionName
Unit:(no unit assumed)
Controllable:No
Description:Burnup function
RodAverageBurnup
Returns rod average burnup as computed by BurnupFunction.
See BurnupFunction
Example Input Syntax
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[average_burnup_direct]
type = RodAverageBurnup<<<{"description": "Returns rod average burnup as computed by BurnupFunction.", "href": "RodAverageBurnup.html"}>>>
burnup_function<<<{"description": "Burnup function"}>>> = burnup
[]
[](test/tests/radial_power_factor/average_burnup.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/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_1/vitanza_1pt5.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)
- (workshop/bison_example/Discrete_mortar.i)
- (test/tests/radial_power_factor/bad_bias.i)
- (test/tests/burnup_action/burnup_with_actions.i)
- (assessment/LWR/validation/Riso_GE7_ZX115/analysis/Riso_GE7_1pt5.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)
- (test/tests/burnup_action/burnup_without_actions.i)
- (assessment/LWR/validation/RE_Ginna_Rodlets/analysis/RE_Ginna_rodlet-4/RE_Ginna_rodlet_4_1pt5.i)
- (workshop/bison_example/Smeared_mortar.i)
- (workshop/bison_example/Smeared.i)
- (test/tests/radial_power_factor/average_burnup.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_tenslice.i)
- (examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets_mortar.i)
- (workshop/bison_example/Discrete.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_2/REP_Na_2_1pt5.i)
- (examples/3D_rodlet_3pellets/discrete_half_symm/3d_3pellets.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_fortyslice.i)
- (examples/temperature_tables/layered1D_cases/1pt5D.i)
- (examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part2.i)
- (assessment/LWR/validation/IFA_677/analysis/IFA_677_Base.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_1/vitanza.i)
- (assessment/LWR/validation/IFA_716/analysis/IFA_716_Base.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ022/TSQ022_1pt5.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)
- (examples/3D_rodlet_3pellets/discrete_full/3d_3pellets_mortar.i)
(test/tests/radial_power_factor/average_burnup.i)
#
# This tests the AverageBurnup and RodAverageBurnup Postprocessors. These
# Postprocessors use the BurnupFunction values directly without interpolation
# to the finite element mesh. Thus, they report the most accurate burnup
# values as computed by BurnupFunction. However, the values will not match
# those computed after interpolation to the finite element mesh, as this test
# shows.
#
# The test is set up such that at the final time the rod average burnup is
# 50 GWd/tHM. The RodAverageBurnup Postprocessor computes this exactly.
# Also, the AverageBurnup Postprocessors compute their values at heights
# along the fuel, and those values are also exact. This can be verified by
# scaling the overall average value (average_burnup_direct) by the local
# axial peaking factor.
#
[GlobalParams]
density = 10421.5
energy_per_fission = 3.2e-11 # J/fission
[]
[Mesh]
coord_type = RZ
[mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 4
xmin = 0.0
xmax = 0.0041
ymin = 0.0
ymax = 0.0082
[]
[]
[Variables]
[temp]
initial_condition = 293.15
[]
[]
[Functions]
[power_profile]
type = ParsedFunction
expression = 20674.327326148894
[]
[axial_peaking_factors]
type = PiecewiseLinear
x = '0.0 0.00205 0.0041 0.00615 0.0082'
y = '0.25 1.25 1.25 1.25 0.25' # Averages out to 1.0
axis = y
[]
[temp_ramp]
type = ParsedFunction
expression = 't+293.15'
[]
[burnup_GWd]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup'
[]
[burnup_GWd_direct]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup_direct'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = 0
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 5
a_upper = 0.0082
a_lower = 0.0
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1
isotopes = 'U235 U238'
isotope_fractions = '0.045 0.955'
RPF = RPF
[]
[]
# Define boundary conditions
[BCs]
[temp_top]
type = FunctionDirichletBC
boundary = top
variable = temp
function = temp_ramp
preset = false
[]
[temp_bottom]
type = DirichletBC
boundary = bottom
variable = temp
value = 293.15
preset = false
[]
[]
# Define material behavior models and input material property data
[Materials]
[thermal]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '1.0'
[]
[]
[Executioner]
type = Transient
# PETSC options
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'
# controls for linear iterations
l_max_its = 50
l_tol = 1e-3
# controls for nonlinear iterations
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-6
# time control
start_time = 0
end_time = 1e8
dtmax = 1e6
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[GWd_burnup]
type = FunctionValuePostprocessor
function = burnup_GWd
[]
[average_burnup_direct]
type = RodAverageBurnup
burnup_function = burnup
[]
[GWd_burnup_direct]
type = FunctionValuePostprocessor
function = burnup_GWd_direct
[]
[average_burnup_0_0]
type = AverageBurnup
burnup_function = burnup
height = 0.0
[]
[average_burnup_0_00205]
type = AverageBurnup
burnup_function = burnup
height = 0.00205
[]
[average_burnup_0_0041]
type = AverageBurnup
burnup_function = burnup
height = 0.0041
[]
[average_burnup_0_00615]
type = AverageBurnup
burnup_function = burnup
height = 0.00615
[]
[average_burnup_0_0082]
type = AverageBurnup
burnup_function = burnup
height = 0.0082
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
exodus = true
[console]
type = Console
output_linear = true
max_rows = 10
[]
[]
(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/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'
[]
[]
(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
[]
[]
(workshop/bison_example/Discrete_mortar.i)
[GlobalParams]
density = 10431.0
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
family = LAGRANGE
order = SECOND
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'temperature disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = discrete.e
type = FileMeshGenerator
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temperature]
initial_condition = 295.0
[]
[disp_x]
block = 'pellet_type_1 clad'
[]
[disp_y]
block = 'pellet_type_1 clad'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
temperature = temperature
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
temperature = temperature
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = 'pellet_type_1 clad'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fis_gas_released
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5
secondary = 10
c_normal = 1e+11
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 0.987775
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = fuel_pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.03
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
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
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 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
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
snesmf_reuse_base = false
line_search = 'none'
l_max_its = 20
l_tol = 8e-3
nl_max_its = 60
nl_rel_tol = 1e-4
nl_abs_tol = 1e-12 # LM
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
dtmin = 1
automatic_scaling = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 50
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temp]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_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 = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[fuel_centerline_temp]
type = NodalVariableValue
variable = temperature
nodeid = 2369
[]
[fuel_surface_mid_temp]
type = NodalVariableValue
variable = temperature
nodeid = 2887
[]
[fuel_surface_ridge_temp]
type = NodalVariableValue
variable = temperature
nodeid = 2862
[]
[clad_surface_temp]
type = NodalVariableValue
variable = temperature
nodeid = 7322
[]
[penetration_mid]
type = NodalVariableValue
variable = penetration
nodeid = 2887
[]
[penetration_ridge]
type = NodalVariableValue
variable = penetration
nodeid = 2862
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'timestep_end'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/radial_power_factor/bad_bias.i)
#
# This tests checks that an error is reported if the bias is aggressive enough
# to result in radial grid points that do not have increasing coordinates.
#
[GlobalParams]
density = 10421.5
energy_per_fission = 3.2e-11 # J/fission
[]
[Mesh]
coord_type = RZ
[mesh]
# Specify coordinate system type
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 4
xmin = 0.0
xmax = 0.0041
ymin = 0.0
ymax = 0.0082
[]
[]
[Variables]
[temp]
initial_condition = 293.15
[]
[]
[Functions]
[power_profile]
type = ParsedFunction
expression = 20674.327326148894
[]
[axial_peaking_factors]
type = PiecewiseLinear
x = '0.0 0.00205 0.0041 0.00615 0.0082'
y = '0.25 1.25 1.25 1.25 0.25' # Averages out to 1.0
axis = y
[]
[temp_ramp]
type = ParsedFunction
expression = 't+293.15'
[]
[burnup_GWd]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup'
[]
[burnup_GWd_direct]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup_direct'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = 0
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 5
bias = 0.5
a_upper = 0.0082
a_lower = 0.0
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1
isotopes = 'U235 U238'
isotope_fractions = '0.045 0.955'
RPF = RPF
[]
[]
# Define boundary conditions
[BCs]
[temp_top]
type = FunctionDirichletBC
boundary = top
variable = temp
function = temp_ramp
[]
[temp_bottom]
type = DirichletBC
boundary = bottom
variable = temp
value = 293.15
[]
[]
# Define material behavior models and input material property data
[Materials]
[thermal]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '1.0'
[]
[]
[Executioner]
type = Transient
# PETSC options
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'
# controls for linear iterations
l_max_its = 50
l_tol = 1e-3
# controls for nonlinear iterations
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-6
# time control
start_time = 0
end_time = 1e8
dtmax = 1e6
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[GWd_burnup]
type = FunctionValuePostprocessor
function = burnup_GWd
[]
[average_burnup_direct]
type = RodAverageBurnup
burnup_function = burnup
[]
[GWd_burnup_direct]
type = FunctionValuePostprocessor
function = burnup_GWd_direct
[]
[average_burnup_0_0]
type = AverageBurnup
burnup_function = burnup
height = 0.0
[]
[average_burnup_0_00205]
type = AverageBurnup
burnup_function = burnup
height = 0.00205
[]
[average_burnup_0_0041]
type = AverageBurnup
burnup_function = burnup
height = 0.0041
[]
[average_burnup_0_00615]
type = AverageBurnup
burnup_function = burnup
height = 0.00615
[]
[average_burnup_0_0082]
type = AverageBurnup
burnup_function = burnup
height = 0.0082
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
exodus = true
[console]
type = Console
output_linear = true
max_rows = 10
[]
[]
(test/tests/burnup_action/burnup_with_actions.i)
# This test is designed as a companion test to the burnup_without_actions.i input
# to demonstrate which input file blocks are created by the Burnup action.
#
# In this simple two block problem, the power profile is designed such that the
# power provided to the top block, block 2, is nearly twice that of the power on
# the bottom block, block 1. As a result, the fission rate on block 2 is exactly
# twice the fission rate on block 1, and the burnup on block 2 is twice the value
# of the burnup on block 1.
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
energy_per_fission = 3.20435313e-11 # J/fission (200 MeV)
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = two_separate_blocks.e
[]
[]
[Variables]
[temp]
initial_condition = 300
[]
[]
# [AuxVariables]
# [fission_rate_1]
# block = 1
# []
# [fission_rate_2]
# block = 2
# []
# [burnup_1]
# block = 1
# []
# [burnup_2]
# block = 2
# []
# []
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 100'
y = '0 40000'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.0 0.01 0.0105 0.0205'
y = '0 100'
z = '1 1 2 2 1 1 2 2'
axis = 1
[]
# [burnup1]
# type = BurnupFunction
# rod_ave_lin_pow = power_profile
# axial_power_profile = axial_peaking_factors
# num_radial = 80
# num_axial = 20
# a_upper = 0.01
# a_lower = 0.0
# fuel_inner_radius = 0.0
# fuel_outer_radius = 0.01
# []
# [burnup2]
# type = BurnupFunction
# rod_ave_lin_pow = power_profile
# axial_power_profile = axial_peaking_factors
# num_radial = 80
# num_axial = 20
# a_upper = 0.0205
# a_lower = 0.0105
# fuel_inner_radius = 0.0
# fuel_outer_radius = 0.01
# []
[]
[Burnup]
[burnup1]
block = 1
base_name = action_block1
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01
a_lower = 0.0
fuel_inner_radius = 0.0
fuel_outer_radius = 0.01
fuel_volume_ratio = 1.0
[]
[burnup2]
block = 2
base_name = action_block2
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.0205
a_lower = 0.0105
fuel_inner_radius = 0.0
fuel_outer_radius = 0.01
fuel_volume_ratio = 1.0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source_block1]
type = NeutronHeatSource
variable = temp
block = 1
burnup_function = burnup1
[]
[heat_source_block2]
type = NeutronHeatSource
variable = temp
block = 2
burnup_function = burnup2
[]
[]
# [AuxKernels]
# [BurunupGrid1]
# type = BurnupGrid
# block = 1
# execute_on = 'initial linear'
# burnup_function = burnup1
# variable = fission_rate_1
# fission_rate = fission_rate_1
# []
# [BurunupGrid2]
# type = BurnupGrid
# block = 2
# execute_on = 'initial linear'
# burnup_function = burnup2
# variable = fission_rate_2
# fission_rate = fission_rate_2
# []
# [BurunupGrid13]
# type = BurnupGrid
# block = 1
# execute_on = 'initial linear'
# burnup_function = burnup1
# variable = burnup_1
# burnup = burnup_1
# []
# [BurunupGrid4]
# type = BurnupGrid
# block = 2
# execute_on = 'initial linear'
# burnup_function = burnup2
# variable = burnup_2
# burnup = burnup_2
# []
# []
[BCs]
[block1_side_bc]
type = DirichletBC
variable = temp
boundary = 1
value = 300
[]
[block2_side_bc]
type = DirichletBC
variable = temp
boundary = 2
value = 300
[]
[]
[Materials]
[fuel_thermal1]
type = UO2Thermal
block = 1
temperature = temp
burnup_function = burnup1
thermal_conductivity_model = NFIR # NFIR thermal conductivity
initial_porosity = 0.05
[]
[fuel_thermal2]
type = UO2Thermal
block = 2
temperature = temp
burnup_function = burnup2
thermal_conductivity_model = NFIR # NFIR thermal conductivity
initial_porosity = 0.05
[]
[fuel_density]
type = ParsedMaterial
block = '1 2'
property_name = density
expression = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0
dtmax = 1e4
dtmin = 100
end_time = 5e5
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 6
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[ave_temp_block1]
type = ElementAverageValue
block = 1
variable = temp
execute_on = 'initial timestep_end'
[]
[ave_temp_block2]
type = ElementAverageValue
block = 2
variable = temp
execute_on = 'initial timestep_end'
[]
[rod_power_1]
type = ElementIntegralPower
variable = temp
block = 1
burnup_function = burnup1
execute_on = 'timestep_end'
[]
[rod_power_2]
type = ElementIntegralPower
variable = temp
block = 2
burnup_function = burnup2
execute_on = 'timestep_end'
[]
[rod_burnup_1]
type = RodAverageBurnup
burnup_function = burnup1
execute_on = 'timestep_end'
[]
[rod_burnup_2]
type = RodAverageBurnup
burnup_function = burnup2
execute_on = 'timestep_end'
[]
[]
[Outputs]
csv = true
exodus = false
color = false
perf_graph = true
[console]
type = Console
max_rows = 1
[]
[]
(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
[]
(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
[]
[]
(test/tests/burnup_action/burnup_without_actions.i)
# This test is designed as a companion test to the burnup_with_action.i input
# to clarify which input file blocks are created by the Burnup action.
#
# In this simple two block problem, the power profile is designed such that the
# power provided to the top block, block 2, is nearly twice that of the power on
# the bottom block, block 1. As a result, the fission rate on block 2 is exactly
# twice the fission rate on block 1, and the burnup on block 2 is twice the value
# of the burnup on block 1.
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
energy_per_fission = 3.20435313e-11 # J/fission (200 MeV)
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = two_separate_blocks.e
[]
[]
[Variables]
[temp]
initial_condition = 300
[]
[]
[AuxVariables]
[fission_rate_1]
block = 1
[]
[fission_rate_2]
block = 2
[]
[burnup_1]
block = 1
[]
[burnup_2]
block = 2
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 100'
y = '0 40000'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.0 0.01 0.0105 0.0205'
y = '0 100'
z = '1 1 2 2 1 1 2 2'
axis = 1
[]
[burnup1]
type = BurnupFunction
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01
a_lower = 0.0
fuel_inner_radius = 0.0
fuel_outer_radius = 0.01
fuel_volume_ratio = 1.0
[]
[burnup2]
type = BurnupFunction
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.0205
a_lower = 0.0105
fuel_inner_radius = 0.0
fuel_outer_radius = 0.01
fuel_volume_ratio = 1.0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source_block1]
type = NeutronHeatSource
variable = temp
block = 1
burnup_function = burnup1
[]
[heat_source_block2]
type = NeutronHeatSource
variable = temp
block = 2
burnup_function = burnup2
[]
[]
[AuxKernels]
[BurnupGrid1]
type = BurnupGrid
block = 1
execute_on = 'initial linear'
burnup_function = burnup1
variable = fission_rate_1
fission_rate = fission_rate_1
[]
[BurnupGrid2]
type = BurnupGrid
block = 2
execute_on = 'initial linear'
burnup_function = burnup2
variable = fission_rate_2
fission_rate = fission_rate_2
[]
[BurnupGrid3]
type = BurnupGrid
block = 1
execute_on = 'initial linear'
burnup_function = burnup1
variable = burnup_1
burnup = burnup_1
[]
[BurnupGrid4]
type = BurnupGrid
block = 2
execute_on = 'initial linear'
burnup_function = burnup2
variable = burnup_2
burnup = burnup_2
[]
[]
[BCs]
[block1_side_bc]
type = DirichletBC
variable = temp
boundary = 1
value = 300
[]
[block2_side_bc]
type = DirichletBC
variable = temp
boundary = 2
value = 300
[]
[]
[Materials]
[fuel_thermal1]
type = UO2Thermal
block = 1
temperature = temp
burnup_function = burnup1
thermal_conductivity_model = NFIR # NFIR thermal conductivity
initial_porosity = 0.05
[]
[fuel_thermal2]
type = UO2Thermal
block = 2
temperature = temp
burnup_function = burnup2
thermal_conductivity_model = NFIR # NFIR thermal conductivity
initial_porosity = 0.05
[]
[fuel_density]
type = ParsedMaterial
block = '1 2'
property_name = density
expression = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0
dtmax = 1e4
dtmin = 100
end_time = 5e5
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 6
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[ave_temp_block1]
type = ElementAverageValue
block = 1
variable = temp
execute_on = 'initial timestep_end'
[]
[ave_temp_block2]
type = ElementAverageValue
block = 2
variable = temp
execute_on = 'initial timestep_end'
[]
[rod_power_1]
type = ElementIntegralPower
variable = temp
block = 1
burnup_function = burnup1
execute_on = 'timestep_end'
[]
[rod_power_2]
type = ElementIntegralPower
variable = temp
block = 2
burnup_function = burnup2
execute_on = 'timestep_end'
[]
[rod_burnup_1]
type = RodAverageBurnup
burnup_function = burnup1
execute_on = 'timestep_end'
[]
[rod_burnup_2]
type = RodAverageBurnup
burnup_function = burnup2
execute_on = 'timestep_end'
[]
[]
[Outputs]
csv = true
exodus = false
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 1
[]
[]
(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'
[]
[]
(workshop/bison_example/Smeared_mortar.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
family = LAGRANGE
order = SECOND
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'temperature disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = smeared.e
type = FileMeshGenerator
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temperature]
initial_condition = 295.0
[]
[disp_x]
block = 'pellet_type_1 clad'
[]
[disp_y]
block = 'pellet_type_1 clad'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
temperature = temperature
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
temperature = temperature
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = 'pellet_type_1 clad'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fis_gas_released
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5
secondary = 10
c_normal = 1e+11
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 0.987775
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = fuel_pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.03
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
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
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 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
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
snesmf_reuse_base = false
line_search = 'none'
l_max_its = 20
l_tol = 8e-3
nl_max_its = 60
nl_rel_tol = 1e-4
nl_abs_tol = 1e-12 # LM
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
dtmin = 1
automatic_scaling = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 50
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temp]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_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 = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[fuel_centerline_temp]
type = NodalVariableValue
variable = temperature
nodeid = 616
[]
[fuel_surface_temp]
type = NodalVariableValue
variable = temperature
nodeid = 587
[]
[clad_surface_temp]
type = NodalVariableValue
variable = temperature
nodeid = 1440
[]
[penetration_mid]
type = NodalVariableValue
variable = penetration
nodeid = 587
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'timestep_end'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(workshop/bison_example/Smeared.i)
# This model is a higher order, discrete 10 pellet fuel stack (pellet_type_1).
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
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = smeared.e
type = FileMeshGenerator
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain
fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx
stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain
clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx
stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775
RPF = RPF
# N235 = N235
# N236 = N236
# N238 = N238
# N239 = N239
# N240 = N240
# N241 = N241
# N242 = N242
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[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
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
diameter = 0.0082
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
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
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[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'
petsc_options_value = 'lu superlu_dist'
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 = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
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 = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[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
[]
[fuel_centerline_temp]
type = NodalVariableValue
variable = temp
nodeid = 616
[]
[fuel_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 587
[]
[clad_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 1440
[]
[penetration_mid]
type = NodalVariableValue
variable = penetration
nodeid = 587
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'timestep_end'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/radial_power_factor/average_burnup.i)
#
# This tests the AverageBurnup and RodAverageBurnup Postprocessors. These
# Postprocessors use the BurnupFunction values directly without interpolation
# to the finite element mesh. Thus, they report the most accurate burnup
# values as computed by BurnupFunction. However, the values will not match
# those computed after interpolation to the finite element mesh, as this test
# shows.
#
# The test is set up such that at the final time the rod average burnup is
# 50 GWd/tHM. The RodAverageBurnup Postprocessor computes this exactly.
# Also, the AverageBurnup Postprocessors compute their values at heights
# along the fuel, and those values are also exact. This can be verified by
# scaling the overall average value (average_burnup_direct) by the local
# axial peaking factor.
#
[GlobalParams]
density = 10421.5
energy_per_fission = 3.2e-11 # J/fission
[]
[Mesh]
coord_type = RZ
[mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 4
xmin = 0.0
xmax = 0.0041
ymin = 0.0
ymax = 0.0082
[]
[]
[Variables]
[temp]
initial_condition = 293.15
[]
[]
[Functions]
[power_profile]
type = ParsedFunction
expression = 20674.327326148894
[]
[axial_peaking_factors]
type = PiecewiseLinear
x = '0.0 0.00205 0.0041 0.00615 0.0082'
y = '0.25 1.25 1.25 1.25 0.25' # Averages out to 1.0
axis = y
[]
[temp_ramp]
type = ParsedFunction
expression = 't+293.15'
[]
[burnup_GWd]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup'
[]
[burnup_GWd_direct]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup_direct'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = 0
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 5
a_upper = 0.0082
a_lower = 0.0
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1
isotopes = 'U235 U238'
isotope_fractions = '0.045 0.955'
RPF = RPF
[]
[]
# Define boundary conditions
[BCs]
[temp_top]
type = FunctionDirichletBC
boundary = top
variable = temp
function = temp_ramp
preset = false
[]
[temp_bottom]
type = DirichletBC
boundary = bottom
variable = temp
value = 293.15
preset = false
[]
[]
# Define material behavior models and input material property data
[Materials]
[thermal]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '1.0'
[]
[]
[Executioner]
type = Transient
# PETSC options
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'
# controls for linear iterations
l_max_its = 50
l_tol = 1e-3
# controls for nonlinear iterations
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-6
# time control
start_time = 0
end_time = 1e8
dtmax = 1e6
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[GWd_burnup]
type = FunctionValuePostprocessor
function = burnup_GWd
[]
[average_burnup_direct]
type = RodAverageBurnup
burnup_function = burnup
[]
[GWd_burnup_direct]
type = FunctionValuePostprocessor
function = burnup_GWd_direct
[]
[average_burnup_0_0]
type = AverageBurnup
burnup_function = burnup
height = 0.0
[]
[average_burnup_0_00205]
type = AverageBurnup
burnup_function = burnup
height = 0.00205
[]
[average_burnup_0_0041]
type = AverageBurnup
burnup_function = burnup
height = 0.0041
[]
[average_burnup_0_00615]
type = AverageBurnup
burnup_function = burnup
height = 0.00615
[]
[average_burnup_0_0082]
type = AverageBurnup
burnup_function = burnup
height = 0.0082
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
exodus = true
[console]
type = Console
output_linear = true
max_rows = 10
[]
[]
(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
[]
[]
(examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets_mortar.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y disp_z'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
converge_on = 'disp_x disp_y disp_z temp'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = DiscreteThreePellets3D_90deg_HEX8.e
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 20
patch_update_strategy = iteration
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fission_rate]
block = 3
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 3
value = 5.3548e+14
fission_rate_function = power_history
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = 3
variable = gas_swell
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = mortar
model = coulomb
c_normal = 1e+18
c_tangential = 1e+18
friction_coefficient = 0.5
#normalize_c = true
#correct_edge_dropping = true
#normal_lm_scaling = 1.0e-5
#tangential_lm_scaling = 1.0e-5
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
gas_released = fis_gas_released_model
initial_moles = initial_moles
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_wedge]
type = DirichletBC
variable = disp_x
boundary = 98
value = 0.0
[]
[no_z_wedge]
type = DirichletBC
variable = disp_z
boundary = 99
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0.0
material_input = fis_gas_released_model
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-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 = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00836
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =50.0e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
# thermal_expansion_coeff = 10.0e-6 (reference)
# We are artificially increasing the fuel expansion to simulate mechanical contact within reasonable 'example' time
thermal_expansion_coeff = 70.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
line_search = 'basic'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-6
nl_abs_tol = 1e-9
start_time = -200
dtmax = 1.0e6
dtmin = 1.0
end_time = 25200
# Use time below for realistic fuel thermal expansion
# end_time = 4.0e7
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
growth_factor = 2.0
cutback_factor = 0.5
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[gas_volume]
type = InternalVolume
boundary = 9
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced_model]
type = ElementIntegralFisGasGeneratedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = fis_gas_produced_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[fis_gas_released_model]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fission_gas_released] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = fis_gas_released_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[flux_from_clad_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_clad] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = flux_from_clad_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[flux_from_fuel_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = flux_from_fuel_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[rod_total_power_model]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
execute_on = 'initial timestep_end'
[]
[rod_total_power] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = rod_total_power_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.03
execute_on = 'initial timestep_end'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'fission_gas_released plenum_pressure interior_temp gas_volume'
[]
[]
(workshop/bison_example/Discrete.i)
# This model is a higher order, discrete 10 pellet fuel stack (pellet_type_1).
[GlobalParams]
density = 10431.0
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = discrete.e
type = FileMeshGenerator
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain
fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx
stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain
clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx
stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775
RPF = RPF
# N235 = N235
# N236 = N236
# N238 = N238
# N239 = N239
# N240 = N240
# N241 = N241
# N242 = N242
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[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
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
diameter = 0.0082
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
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
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[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'
petsc_options_value = 'lu superlu_dist'
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 = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
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 = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[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
[]
[fuel_centerline_temp]
type = NodalVariableValue
variable = temp
nodeid = 2369
[]
[fuel_surface_mid_temp]
type = NodalVariableValue
variable = temp
nodeid = 2887
[]
[fuel_surface_ridge_temp]
type = NodalVariableValue
variable = temp
nodeid = 2862
[]
[clad_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 7322
[]
[penetration_mid]
type = NodalVariableValue
variable = penetration
nodeid = 2887
[]
[penetration_ridge]
type = NodalVariableValue
variable = penetration
nodeid = 2862
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'timestep_end'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(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
[]
[]
(examples/3D_rodlet_3pellets/discrete_half_symm/3d_3pellets.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y disp_z'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Mesh]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = DiscreteThreePellets3D.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fission_rate]
block = 3
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 3
value = 5.3548e+14
fission_rate_function = power_history
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = 3
variable = gas_swell
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
penalty = 1e14
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released_model
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1004
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_z_wedge]
type = DirichletBC
variable = disp_z
boundary = 99
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0.0
material_input = fis_gas_released_model
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-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 = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00836
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =50.0e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
start_time = -200
dtmax = 1.0e6
dtmin = 1.0
end_time = 3.0e7
automatic_scaling = true
compute_scaling_once = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
growth_factor = 2.0
cutback_factor = 0.5
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
scale_factor = 2.0 # Half-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
scale_factor = 2.0 # Half-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[gas_volume]
type = InternalVolume
boundary = 9
scale_factor = 2.0 # Half-Symmetry Model Correction
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced_model]
type = ElementIntegralFisGasGeneratedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = fis_gas_produced_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[fis_gas_released_model]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fission_gas_released] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = fis_gas_released_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[flux_from_clad_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_clad] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = flux_from_clad_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[flux_from_fuel_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = flux_from_fuel_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[rod_total_power_model]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
execute_on = 'initial timestep_end'
[]
[rod_total_power] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = rod_total_power_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.03
execute_on = 'initial timestep_end'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'plenum_pressure interior_temp gas_volume'
[]
[]
(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
[]
[]
(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'
[]
[]
(examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y disp_z'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Mesh]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 20
patch_update_strategy = iteration
[mesh]
type = FileMeshGenerator
file = DiscreteThreePellets3D_90deg.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fission_rate]
block = 3
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 3
value = 5.3548e+14
fission_rate_function = power_history
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = 3
variable = gas_swell
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
penalty = 1e14
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released_model
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_wedge]
type = DirichletBC
variable = disp_x
boundary = 98
value = 0.0
[]
[no_z_wedge]
type = DirichletBC
variable = disp_z
boundary = 99
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0.0
material_input = fis_gas_released_model
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-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 = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00836
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =50.0e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
start_time = -200
dtmax = 1.0e6
dtmin = 1.0
end_time = 3.0e7
automatic_scaling = true
compute_scaling_once = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
growth_factor = 2.0
cutback_factor = 0.5
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[gas_volume]
type = InternalVolume
boundary = 9
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced_model]
type = ElementIntegralFisGasGeneratedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = fis_gas_produced_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[fis_gas_released_model]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fission_gas_released] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = fis_gas_released_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[flux_from_clad_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_clad] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = flux_from_clad_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[flux_from_fuel_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = flux_from_fuel_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[rod_total_power_model]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
execute_on = 'initial timestep_end'
[]
[rod_total_power] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = rod_total_power_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.03
execute_on = 'initial timestep_end'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'plenum_pressure interior_temp gas_volume'
[]
[]
(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
[]
[]
(assessment/LWR/validation/IFA_677/analysis/IFA_677_Base.i)
# This is a partial input file that contains characteristics common to the entire assessment case
# NOTE: This file is not meant to be run on its own as it requires information contained in the .params files
# Fuel material properties
total_densification = 0.09e-2 # (-)
oxygen_to_metal_ratio = 2.002 # (-)
# Cladding material properties
cladding_density = 6550.0 # kg/m^3
# Cladding geometry
clad_inner_radius = 4.65e-3 # m
clad_outer_radius = 5.375e-3 # m
# Rod geometry
a_lower = 0.001025 # m
fuel_inner_radius = 0.0 # m
fuel_outer_radius = 0.4565e-02 # m
fuel_volume_ratio = 0.9940 # (-)
fuel_diameter = 9.13e-3 # m
diametral_gap = 170.e-6 # m
# Neutronics, power, and isotope fractions
energy_per_fission = 3.28451e-11 # J/fission
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# Temperature conditions
initial_temperature = 293.0 # K
stress_free_temperature = 293.0 # K
# Coolant pressure ramp parameters
pressure_ramp_x = '-200 0'
pressure_ramp_y = '0.0298 1'
pressure_ramp_factor = 3.4e6 # (-)
# Coolant Channel parameters
inlet_pressure = 3.4e+06 # Pa
inlet_massflux = 450. # kg/m^2-s
rod_diameter = 10.75e-03 # m
rod_pitch = 46.e-03 # m
htc_correlation_type = 2
# Contact
contact_penalty = 1e14 # (-)
roughness_primary = 5.0e-6
roughness_secondary = 0.32e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1 # m
# Relocation
relocation_activation1 = 5000 # W/m
# Plenum parameters
initial_plenum_pressure = 1.35e6 # Pa
startup_time = 0 # s
# Physical constants
gravitational_acceleration_constant = -9.81 # m/s^2
ideal_gas_constant = 8.3143 # J/mol-K
# Numerical options
l_max_its = 50
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
start_time = -200 # s
n_startup_steps = 1
dtmax = 5e5 # s
dtmin = 0.1 # s
TimeStepper_dt = 2e2 # s
TimeStepper_max_function_change = 1e20
# Postprocessor parameters
burnup_scaling_factor = 950.0 # (-)
time_days_scale_factor = 1.157407407e-5 # (-)
midplane_oxide_thickness_elementid = 629
outer_midplane_clad_temperature_nodeid = 763
fuel_central_temperature_nodeid = 337
clad_elongation_nodeid = 826
fuel_elongation_nodeid = 504
upper_TC_temperature_nodeid = 633
lower_TC_temperature_nodeid = 31
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temperature
order = FIRST
family = LAGRANGE
density = ${initial_fuel_density}
initial_porosity = ${initial_fuel_porosity}
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
initial_condition = ${initial_grain_radius}
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
scale_factor = 1e3
format = columns
[]
[corrected_power_history]
type = ParsedFunction
symbol_names = 'rod_average_burnup power_history'
symbol_values = 'burnup_MWdkgU power_history'
expression = 'if(rod_average_burnup < 14.5, power_history, 0.98 * power_history)'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = ${axial_peaking_data_file}
scale_factor = 1
axis = 1
[]
[power_correction]
type = PiecewiseBilinear
data_file = ${power_correction_data_file}
scale_factor = 1
axis = 1
[]
[corrected_axial_peaking_factors]
type = CompositeFunction
functions = 'axial_peaking_factors power_correction'
[]
[pressure_ramp]
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[coolant_inlet_temperature]
type = PiecewiseLinear
data_file = ${coolant_inlet_temperature_data_file}
scale_factor = 1
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = ${fast_neutron_flux_data_file}
scale_factor = 1e4
format = columns
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[pellets]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_eigenstrain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = ${gravitational_acceleration_constant}
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = corrected_power_history
axial_power_profile = corrected_axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = linear
[]
[effective_creep_strain]
type = MaterialRealAux
block = 1
property = effective_creep_strain
variable = effective_creep_strain
execute_on = 'timestep_end'
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = ${contact_penalty}
normal_smoothing_distance = ${normal_smoothing_distance}
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
contact_pressure = contact_pressure
quadrature = true
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
roughness_coef = ${roughness_coef}
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '20'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = ${pressure_ramp_factor}
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '9'
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = coolant_inlet_temperature
inlet_pressure = ${inlet_pressure}
inlet_massflux = ${inlet_massflux}
rod_diameter = ${rod_diameter}
rod_pitch = ${rod_pitch}
htc_correlation_type = ${htc_correlation_type}
compute_enthalpy = true
linear_heat_rate = corrected_power_history
axial_power_profile = corrected_axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
thermal_conductivity_model = HALDEN #NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
total_densification = ${total_densification}
initial_fuel_density = ${initial_fuel_density}
gas_swelling_model_type = SIFGRS
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
relocation_model = ESCORE_modified
burnup_function = burnup
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
rod_ave_lin_pow = corrected_power_history
axial_power_profile = corrected_axial_peaking_factors
relocation_activation1 = ${relocation_activation1}
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = corrected_power_history
fragmentation_model = BARANI
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'fuel_creep'
tangent_operator = elastic
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_creep]
type = UO2CreepUpdate
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = ${initial_grain_radius}
oxygen_to_metal_ratio = ${oxygen_to_metal_ratio}
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = clad
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
[]
[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_primary_creep = true
model_thermal_creep = true
model_irradiation_creep = true
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${cladding_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = ${clad_inner_radius}
clad_outer_radius = ${clad_outer_radius}
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING_BURNUP
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_4D3
doping_type = CR2O3_DOPED
cr_doped_option = BEST_ESTIMATE_1773
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = MaxIncrement
max_increment = 20
variable = temperature
[]
[]
[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 = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = ${n_startup_steps}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
timestep_limiting_function = power_history
max_function_change = ${TimeStepper_max_function_change}
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = corrected_power_history
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = NodalExtremeValue
variable = temperature
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
execute_on = 'initial timestep_end'
[]
[burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[burnup_MWdkgU]
type = ScalePostprocessor
value = burnup
scaling_factor = ${burnup_scaling_factor}
[]
[time_days]
type = FunctionValuePostprocessor
function = t
scale_factor = ${time_days_scale_factor}
[]
[temperature_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[oxide_thickness_midplane]
type = ElementalVariableValue
elementid = ${midplane_oxide_thickness_elementid}
variable = oxide_thickness
execute_on = 'initial timestep_end'
[]
[strain_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[temperature_clad_outer_midplane]
type = NodalVariableValue
nodeid = ${outer_midplane_clad_temperature_nodeid}
variable = temperature
execute_on = 'initial timestep_end'
[]
[temperature_fuel_central]
type = NodalVariableValue
variable = temperature
nodeid = ${fuel_central_temperature_nodeid}
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = InternalVolume
boundary = '9'
execute_on = 'initial linear'
[]
[fission_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
execute_on = linear
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
execute_on = linear
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_produced
execute_on = linear
[]
[clad_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${clad_elongation_nodeid}
[]
[fuel_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${fuel_elongation_nodeid}
[]
[upper_TC_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${upper_TC_temperature_nodeid}
[]
[lower_TC_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${lower_TC_temperature_nodeid}
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 15
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'lower_TC_temperature upper_TC_temperature fgr_percent plenum_pressure strain_clad_hoop_max'
execute_on = 'FINAL'
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_1/vitanza.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.20435313e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = 27_1_mesh.e
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[grain_radius]
block = 3
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
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 3
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 = 3
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[]
[BCs]
[fuel_wall_temp]
type = DirichletBC
variable = temp
boundary = '10'
value = 673
preset = false
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.05
[]
[fuel_density]
type = ParsedMaterial
block = 3
property_name = density
expression = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
[]
[]
[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 = 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
end_time = 2e8
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 6
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 3
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = 3
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
block = 3
execute_on = linear
burnup_function = burnup
type = ElementIntegralPower
variable = temp
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.0127
[]
[ave_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[fuel_center_temperature]
type = NodalVariableValue
nodeid = 174 # Paraview GlobalNodeID 175 at (0.0, 0.00862374)
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 pellet_volume'
execute_on = final
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'fis_gas_percent >= 0.01'
[]
[]
(assessment/LWR/validation/IFA_716/analysis/IFA_716_Base.i)
# This file contains all characteristics common to the entire assessment
# NOTE: This file requires information contained in subsequent files and therefore is not designed to run on its own
# Fuel material properties
total_densification = 0.0015 # (-)
# Cladding material properties
cold_work_factor = 0.2 # (-)
zircaloy_alloy_type = 4
cladding_density = 6550.0 # kg/m^3
# Cladding geometry
clad_inner_radius = 4.65e-3 # m
clad_outer_radius = 5.375e-3 # m
# Fuel geometry
num_radial = 80
num_axial = 11
a_lower = 0.001025 # m
a_upper = 0.400525 # m
fuel_inner_radius = 0 # m
fuel_outer_radius = 0.456e-02 # m
fuel_volume_ratio = 0.99140 # (-)
fuel_diameter = 9.12e-3 # m
diametral_gap = 180.0e-6 # m
# Neutronics, power, and isotope fractions
energy_per_fission = 3.28451e-11 # J/fission
fast_neutron_flux_factor = 3e13 # n/m^2-s
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# Temperature conditions
initial_temperature = 293.0 # K
stress_free_temperature = 293.0 # K
# Coolant pressure ramp parameters
pressure_ramp_x = '-200 0'
pressure_ramp_y = '0 1'
coolant_pressure_ramp_factor = 3.4e6 # (-)
# Physical constants
graviational_acceleration_constant = -9.81 # m/s^2
# Plenum parameters
initial_plenum_pressure = 1.0e6 # Pa
startup_time = -200 # s
# Coolant channel parameters
inlet_pressure = 3.4e+06 # Pa
inlet_massflux = 450.0 # kg/m^2-s
rod_diameter = 10.75e-03 # m
rod_pitch = 46.e-03 # m
htc_correlation_type = 2
# Relocation
relocation_activation1 = 5000 # W/m
# Numerical options
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200 # s
n_startup_steps = 1
end_time = 60025104 # s
num_steps = 50000
dtmax = 5e5 # s
dtmin = 0.1 # s
TimeStepper_dt = 2e2 # s
TimeStepper_iteration_window = 2
TimeStepper_growth_factor = 2
TimeStepper_cutback_factor = .5
# Postprocessor parameters
burnup_scaling_factor = 950.0 # GWd/tUO2 per FIMA
time_days_scale_factor = 1.157407407e-5 # days/s
clad_elongation_nodeid = 1085
fuel_elongation_nodeid = 689
upper_TC_temperature_nodeid = 886
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = ${initial_fuel_porosity}
temperature = temperature
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2'
initial_condition = ${initial_grain_radius}
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
scale_factor = 1e3
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = ${axial_peaking_data_file}
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[coolant_inlet_temperature]
type = PiecewiseLinear
data_file = ${coolant_inlet_temperature_data_file}
scale_factor = 1
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = ${add_variables_option}
strain = FINITE
[pellets]
block = 'pellet_type_1 pellet_type_2'
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_eigenstrain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = ${graviational_acceleration_constant}
[]
[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 = 'pellet_type_1 pellet_type_2'
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = ${num_radial}
num_axial = ${num_axial}
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1 pellet_type_2'
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = ${plenum_temperature_inner_surfaces}
outer_surfaces = ${plenum_temperature_outer_surfaces}
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = ${no_y_clad_bottom_boundary}
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = ${no_y_fuel_bottom_boundary}
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = ${coolant_pressure_ramp_factor}
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = ${PlenumPressure_boundary}
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = coolant_inlet_temperature
inlet_pressure = ${inlet_pressure}
inlet_massflux = ${inlet_massflux}
rod_diameter = ${rod_diameter}
rod_pitch = ${rod_pitch}
htc_correlation_type = ${htc_correlation_type}
compute_enthalpy = true
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2'
thermal_conductivity_model = HALDEN
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ${fuel_elasticity_tensor_type}
block = 'pellet_type_1 pellet_type_2'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1 pellet_type_2'
burnup_function = burnup
total_densification = ${total_densification}
initial_fuel_density = ${initial_fuel_density}
gas_swelling_model_type = SIFGRS
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_creep]
type = UO2CreepUpdate
block = 'pellet_type_1 pellet_type_2'
fission_rate = fission_rate
oxygen_to_metal_ratio = ${oxygen_to_metal_ratio}
[]
[fuel_thermal_expansion]
type = ${fuel_thermal_expansion_type}
block = 'pellet_type_1 pellet_type_2'
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2'
relocation_model = ESCORE_modified
burnup_function = burnup
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = ${relocation_activation1}
eigenstrain_name = ${fuel_relocation_eigenstrain_name}
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = 'pellet_type_1 pellet_type_2'
tangent_operator = elastic
inelastic_models = 'fuel_creep'
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_2'
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2'
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING_BURNUP
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_4D3
doping_type = CR2O3_DOPED
cr_doped_option = BEST_ESTIMATE_1773
[]
[clad_thermal]
type = ${clad_thermal_type}
block = clad
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep clad_zryplasticity'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_primary_creep = true
model_thermal_creep = true
model_irradiation_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[clad_zryplasticity]
type = ZryPlasticityUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = ${cold_work_factor}
zircaloy_alloy_type = ${zircaloy_alloy_type}
plasticity_model_type = ${plasticity_model_type}
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${cladding_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = ${clad_inner_radius}
clad_outer_radius = ${clad_outer_radius}
use_coolant_channel = true
temperature = temperature
fast_neutron_flux = fast_neutron_flux
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = ${solve_type}
petsc_options = '-snes_ksp_ew'
petsc_options_iname = ${petsc_options_iname}
petsc_options_value = ${petsc_options_value}
line_search = ${line_search}
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = ${n_startup_steps}
end_time = ${end_time}
num_steps = ${num_steps}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
timestep_limiting_function = power_history
max_function_change = ${TimeStepper_max_function_change}
linear_iteration_ratio = ${TimeStepper_linear_iteration_ratio}
optimal_iterations = ${TimeStepper_optimal_iterations}
iteration_window = ${TimeStepper_iteration_window}
growth_factor = ${TimeStepper_growth_factor}
cutback_factor = ${TimeStepper_cutback_factor}
force_step_every_function_point = true
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = NodalExtremeValue
variable = temperature
block = 'pellet_type_1 pellet_type_2'
execute_on = 'initial timestep_end'
[]
[burnup_ave]
type = RodAverageBurnup
burnup_function = burnup
[]
[burnup_ave_MWdkgU]
type = ScalePostprocessor
value = burnup_ave
scaling_factor = ${burnup_scaling_factor}
[]
[temperature_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[strain_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[gas_volume]
type = InternalVolume
boundary = '9'
execute_on = 'initial linear'
[]
[fission_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_1 pellet_type_2'
execute_on = linear
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_1 pellet_type_2'
execute_on = linear
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_produced
execute_on = linear
[]
[_dt]
type = TimestepSize
execute_on = linear
[]
[nonlinear_its]
type = NumNonlinearIterations
execute_on = linear
[]
[clad_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${clad_elongation_nodeid}
[]
[fuel_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${fuel_elongation_nodeid}
[]
[upper_TC_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${upper_TC_temperature_nodeid}
[]
[time_days]
type = FunctionValuePostprocessor
function = t
scale_factor = ${time_days_scale_factor}
[]
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'upper_TC_temperature fgr_percent plenum_pressure strain_clad_hoop_max'
execute_on = 'FINAL'
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(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_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
[]
[]
(examples/3D_rodlet_3pellets/discrete_full/3d_3pellets_mortar.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y disp_z'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
volumetric_locking_correction = true
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
converge_on = 'disp_x disp_y disp_z temp'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = DiscreteThreePellets3D_full_HEX8.e
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
patch_update_strategy = auto
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fission_rate]
block = 3
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[frictional_status]
family = LAGRANGE
order = FIRST
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 3
value = 5.3548e+14
fission_rate_function = power_history
[]
[frictional_state]
type = MortarFrictionalStateAux
tangent_one = pellet_clad_mechanical_tangential_lm
tangent_two = pellet_clad_mechanical_tangential_3d_lm
boundary = 10
contact_pressure = pellet_clad_mechanical_normal_lm
variable = frictional_status
mu = 0.5
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = 3
variable = gas_swell
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = mortar
model = coulomb
c_normal = 1e+18
c_tangential = 1e+18
friction_coefficient = 0.5
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
gas_released = fis_gas_released_model
initial_moles = initial_moles
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1004
value = 0.0
[]
[no_z_all]
type = DirichletBC
variable = disp_z
boundary = 1004
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_x_clad_bottom]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[]
[no_z_clad_bottom]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[]
[no_z_fuel_bottom_point]
type = DirichletBC
variable = disp_z
boundary = 1110
value = 0.0
[]
[no_z_fuel_bottom_point_y]
type = DirichletBC
variable = disp_y
boundary = 1110
value = 0.0
[]
[no_x_fuel_bottom_point]
type = DirichletBC
variable = disp_x
boundary = 1120
value = 0.0
[]
[no_x_fuel_bottom_point_y]
type = DirichletBC
variable = disp_y
boundary = 1120
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0.0
material_input = fis_gas_released_model
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-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 = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00836
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =50.0e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
# thermal_expansion_coeff = 10.0e-6 (reference)
# We are artificially increasing the fuel expansion to simulate mechanical contact within reasonable 'example' time
thermal_expansion_coeff = 50.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
line_search = 'basic'
l_max_its = 10
nl_max_its = 40
nl_rel_tol = 1e-7
nl_abs_tol = 1e-8
start_time = -200
dtmin = 1.0
end_time = 25200
nl_div_tol = 1e+40
# For a regular thermal expansion value, use following end_time
# end_time = 4.0e7
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
growth_factor = 2.0
cutback_factor = 0.5
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
scale_factor = 1.0
execute_on = 'INITIAL TIMESTEP_END'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
scale_factor = 1.0
execute_on = 'INITIAL TIMESTEP_END'
[]
[gas_volume]
type = InternalVolume
boundary = 9
scale_factor = 1.0
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced_model]
type = ElementIntegralFisGasGeneratedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ScalePostprocessor
value = fis_gas_produced_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[fis_gas_released_model]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fission_gas_released]
type = ScalePostprocessor
value = fis_gas_released_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[flux_from_clad_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_clad]
type = ScalePostprocessor
value = flux_from_clad_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[flux_from_fuel_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = ScalePostprocessor
value = flux_from_fuel_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[rod_total_power_model]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
execute_on = 'initial timestep_end'
[]
[rod_total_power]
type = ScalePostprocessor
value = rod_total_power_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.03
execute_on = 'initial timestep_end'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
[checkpoint]
type = Checkpoint
time_step_interval = 1
file_base = ckpoint_mortar_dup
num_files = 2
[]
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'fission_gas_released plenum_pressure interior_temp gas_volume'
[]
[]