- fission_rateCoupled Fission Rate.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled Fission Rate.
- variableThe name of the variable that this object applies to
C++ Type:AuxVariableName
Unit:(no unit assumed)
Controllable:No
Description:The name of the variable that this object applies to
MaxFissionRateAux
Returns the maximum fission rate value.
Description
From the specified coupled fission rate variable, MaxFissionRateAux calculates the maximum value.
Example Input Syntax
[AuxKernels<<<{"href": "../../syntax/AuxKernels/index.html"}>>>]
[max_fission_rate]
type = MaxFissionRateAux<<<{"description": "Returns the maximum fission rate value.", "href": "MaxFissionRateAux.html"}>>>
variable<<<{"description": "The name of the variable that this object applies to"}>>> = max_fission_rate
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 1
fission_rate<<<{"description": "Coupled Fission Rate."}>>> = fission_rate
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = timestep_begin
[]
[](test/tests/decay_heating/decay_heating_rz.i)Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- check_boundary_restrictedTrueWhether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh
Default:True
C++ Type:bool
Controllable:No
Description:Whether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh
- execute_onLINEAR TIMESTEP_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:LINEAR 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, PRE_DISPLACE
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.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Material Property Retrieval Parameters
Input Files
(test/tests/decay_heating/decay_heating_rz.i)
# Tests decay heating, specifically the MaxFissionRateAux auxkernel and NeutonHeatSource kernel.
#
# The test solves a simple lumped heat capacity problem (ODE):
#
# rho*C dT/dt = Fdot*Ef
# where rho = density
# C = heat capacity
# Fdot = fission density rate
# Ef = energy per fission
# T = temperature
# t = time
#
# which can be integrated to give the time dependent temperature throughout the domain as:
#
# T(t) = (Ef/(rho*C)) * Integral [Fdot(t) * dt] + T0
#
# The fission density rate is linearly ramped to 1000 over 100 s, dropped to 0 over the next 100 s,
# ramped to 500 over the next 100 s, and then returned to zero over a final 100 s. The result is a
# temperature of 2.5e5 at 400 s when the decay process begins. Decay is computed in two 4 s steps,
# which can be integrated as follows:
#
# deltaT(408s) = (Ef/(rho*C) * [f(404s) *dt + f(408s) *dt] * max_fission_density_rate
# = (1 /(1 *1) * [0.03802859*4 + 0.03070299*4 ] * 1000
# = 274.9263
# which matches the computed temperature at 408s precisely.
#
# Note that:
# 1) the max_fission_density_rate is multiplied by the decay function as per the simplified method
# precribed in the ANS 5.1-1979 Standard for decay heating
# 2) the f functions are taken from the decay_heat_function post processor (computed during this
# test) which is tested independently
#
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = cylinder.e
[]
[]
[Functions]
[power_function]
type = PiecewiseLinear
x = '0 100 200 300 400'
y = '0 1 0 0.5 0'
[]
[time_function]
type = PiecewiseLinear
x = '0 400 400.000001 408'
y = '20 20 4 4'
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1e5
[]
[]
[AuxVariables]
[fission_rate]
block = 1
[]
[max_fission_rate]
block = 1
[]
[]
[Kernels]
[ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[fission_heat_source]
type = NeutronHeatSource
variable = temp
fission_rate = fission_rate
energy_per_fission = 1
decay_heat_function = decay_heat_function # Couple to postprocessor which defines the decay heat function
max_fission_rate = max_fission_rate # Couple to auxvariable which defines maximum fission rate over irradiation
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 1
value = 1000
fission_rate_function = power_function
execute_on = timestep_begin
[]
[max_fission_rate]
type = MaxFissionRateAux
variable = max_fission_rate
block = 1
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[BCs]
[top_T]
type = NeumannBC
variable = temp
boundary = '1 2'
value = 0.0
[]
[]
[Materials]
[fuel]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 10
specific_heat = 1
[]
[density]
type = ParsedMaterial
block = 1
property_name = density
expression = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
end_time = 408
num_steps = 500
nl_rel_tol = 1e-8
nl_abs_tol = 1e-14
dt = 20
[TimeStepper]
type = FunctionDT
function = time_function
[]
[]
[Postprocessors]
[temperature]
type = NodalVariableValue
variable = temp
nodeid = 2
[]
[decay_heat_function]
type = DecayHeatFunction
time_at_shutdown = 400
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
energy_per_fission = 1
block = 1
[]
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_2/IFA_650_2.i)
initial_fuel_density = 10412
[GlobalParams]
density = ${initial_fuel_density} # 0.95TD UO2, TD=10960
temperature = temp
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = mesh_ife6502_medium2.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
initial_condition = 5.e-06 # !! assumption
[]
[max_fission_rate]
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[average_linear_heat_rate]
type = PiecewiseLinear
data_file = linear_heat_rate_av.csv
format = columns
scale_factor = 1
[]
[axial_power_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors_lhr.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[average_clad_outer_temperature]
type = PiecewiseLinear
data_file = temperature_clad_outer_av.csv
format = columns
scale_factor = 1
[]
[axial_temperature_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors_ctemp.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_outer_temperature]
type = CompositeFunction
functions = 'average_clad_outer_temperature axial_temperature_peaking_factors'
[]
[coolant_pressure]
type = PiecewiseLinear
data_file = pressure_rig.csv
format = columns
scale_factor = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[uo2nat]
block = 'pellet_type_1 pellet_type_3'
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'uo2nat_thermal_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
decomposition_method = EigenSolution
[]
[fuel]
block = pellet_type_2
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
[]
[clad]
block = clad
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
#extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
#extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
#extra_vector_tags = 'ref'
block = pellet_type_2
fission_rate = fission_rate
decay_heat_function = decay_heat_function # Couple to postprocessor which defines the decay heat function
max_fission_rate = max_fission_rate # Couple to auxvariable which defines maximum fission rate over irradiation
[]
[]
[Burnup]
[burnup]
block = pellet_type_2
rod_ave_lin_pow = average_linear_heat_rate
axial_power_profile = axial_power_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 28.5e-03 # mesh dependent
a_upper = 528.5e-03 # mesh dependent
fuel_inner_radius = 0.
fuel_outer_radius = 4.145e-03
fuel_volume_ratio = 1. # for use with dished pellets (ratio of actual volume to cylinder volume)
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = average_linear_heat_rate
axial_power_profile = axial_power_peaking_factors
factor = 3.e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_2
variable = grain_radius
temperature = temp
execute_on = linear
[]
[max_fission_rate]
type = MaxFissionRateAux
variable = max_fission_rate
block = pellet_type_2
fission_rate = fission_rate
execute_on = timestep_begin
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = clad
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_cond
[]
[nbbl2]
type = MaterialRealAux
block = pellet_type_2
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[radbbl]
type = MaterialRealAux
block = pellet_type_2
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[stcvrg]
type = MaterialRealAux
block = pellet_type_2
variable = sat_coverage
property = sat_coverage
[]
[frcvrg]
type = MaterialRealAux
block = pellet_type_2
variable = GBCoverage
property = GBCoverage
[]
[dvv0bd]
type = MaterialRealAux
block = pellet_type_2
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.e+07
[]
[]
#TODO: Add option in StandardLWRFuelRodOutputs to compute plenum temperature this way.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.
[]
[clad_outer_temperature]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_outer_temperature
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
function = coolant_pressure # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 4.e+06
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_2
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_2
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup_function = burnup
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_2
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_2
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_2
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_2
temperature = temp
burnup_function = burnup
initial_porosity = 0.0468
initial_fuel_density = 10447.
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_2
burnup_function = burnup
diameter = 0.00829
rod_ave_lin_pow = average_linear_heat_rate
axial_power_profile = axial_power_peaking_factors
diametral_gap =70.e-06
burnup_relocation_stop = 1.e+20
eigenstrain_name = fuel_relocation_eigenstrain
relocation_activation1 = 19685.039
[]
[fission_gas]
type = UO2Sifgrs
block = pellet_type_2
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING_BURNUP
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temp
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0 #TODO: It is odd to have different values for fuel and clad, but keeping this way to match SM
eigenstrain_name = clad_thermal_strain
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 1.e+11
poissons_ratio = 0.3
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 3.e-03
#TODO: The parameters below really should be provided, but they weren't specified in the SM model.
# They may have not been included because irradiation creep wasn't modeled. However, they are used in the thermal
# creep model as well.
# fast_neutron_flux = fast_neutron_flux
# fast_neutron_fluence = fast_neutron_fluence
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
#eff_strain_rate_plast =
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temp
[]
[uo2nat_thermal]
type = HeatConductionMaterial
block = 'pellet_type_1 pellet_type_3'
thermal_conductivity = 3. # !! assumption
specific_heat = 300. # !! assumption
[]
[uo2nat_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_3'
strain_free_density = ${initial_fuel_density}
[]
[uo2nat_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1 pellet_type_3'
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = uo2nat_thermal_strain
[]
[uo2nat_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1 pellet_type_3'
[]
[uo2nat_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_3'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1.e-02
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
start_time = -200
n_startup_steps = 1
end_time = 229440
dtmax = 2700. #1000.
dtmin = 0.00000001
[TimeStepper]
type = IterationAdaptiveDT
dt = 200.
#optimal_iterations = 4
#iteration_window = 2
#linear_iteration_ratio = 100
timestep_limiting_function = average_clad_outer_temperature
max_function_change = 10
timestep_limiting_postprocessor = material_timestep
time_t = '-200. 0. 3.5e+04 216000. 218700. 219180. 219240. 219799. 219819. 219821. 219999.'
time_dt = ' 200. 900. 2700. 2700. 60. 60. 20. 20.
10. 10. 2.'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = true
[]
[]
[Postprocessors]
[decay_heat_function]
type = DecayHeatFunction
time_at_shutdown = 100000001.
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temp
block = clad
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
value_type = max
variable = temp
block = pellet_type_2
execute_on = 'initial timestep_end'
[]
[central_fuel_temp]
type = NodalVariableValue
variable = temp
nodeid = 54 # Global node ID = 55 !! Mesh dependent
execute_on = 'initial timestep_end'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial linear'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial linear'
[]
[alhr_input]
type = FunctionValuePostprocessor
function = average_linear_heat_rate
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_oxygen_fgain]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfgain_total
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
block = clad
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
block = clad
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_2
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
print_linear_residuals = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[out_vector_pp]
execute_vector_postprocessors_on = 'timestep_end'
type = CSV
[]
[]
(test/tests/decay_heating/decay_heating_rz.i)
# Tests decay heating, specifically the MaxFissionRateAux auxkernel and NeutonHeatSource kernel.
#
# The test solves a simple lumped heat capacity problem (ODE):
#
# rho*C dT/dt = Fdot*Ef
# where rho = density
# C = heat capacity
# Fdot = fission density rate
# Ef = energy per fission
# T = temperature
# t = time
#
# which can be integrated to give the time dependent temperature throughout the domain as:
#
# T(t) = (Ef/(rho*C)) * Integral [Fdot(t) * dt] + T0
#
# The fission density rate is linearly ramped to 1000 over 100 s, dropped to 0 over the next 100 s,
# ramped to 500 over the next 100 s, and then returned to zero over a final 100 s. The result is a
# temperature of 2.5e5 at 400 s when the decay process begins. Decay is computed in two 4 s steps,
# which can be integrated as follows:
#
# deltaT(408s) = (Ef/(rho*C) * [f(404s) *dt + f(408s) *dt] * max_fission_density_rate
# = (1 /(1 *1) * [0.03802859*4 + 0.03070299*4 ] * 1000
# = 274.9263
# which matches the computed temperature at 408s precisely.
#
# Note that:
# 1) the max_fission_density_rate is multiplied by the decay function as per the simplified method
# precribed in the ANS 5.1-1979 Standard for decay heating
# 2) the f functions are taken from the decay_heat_function post processor (computed during this
# test) which is tested independently
#
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = cylinder.e
[]
[]
[Functions]
[power_function]
type = PiecewiseLinear
x = '0 100 200 300 400'
y = '0 1 0 0.5 0'
[]
[time_function]
type = PiecewiseLinear
x = '0 400 400.000001 408'
y = '20 20 4 4'
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1e5
[]
[]
[AuxVariables]
[fission_rate]
block = 1
[]
[max_fission_rate]
block = 1
[]
[]
[Kernels]
[ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[fission_heat_source]
type = NeutronHeatSource
variable = temp
fission_rate = fission_rate
energy_per_fission = 1
decay_heat_function = decay_heat_function # Couple to postprocessor which defines the decay heat function
max_fission_rate = max_fission_rate # Couple to auxvariable which defines maximum fission rate over irradiation
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 1
value = 1000
fission_rate_function = power_function
execute_on = timestep_begin
[]
[max_fission_rate]
type = MaxFissionRateAux
variable = max_fission_rate
block = 1
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[BCs]
[top_T]
type = NeumannBC
variable = temp
boundary = '1 2'
value = 0.0
[]
[]
[Materials]
[fuel]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 10
specific_heat = 1
[]
[density]
type = ParsedMaterial
block = 1
property_name = density
expression = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
end_time = 408
num_steps = 500
nl_rel_tol = 1e-8
nl_abs_tol = 1e-14
dt = 20
[TimeStepper]
type = FunctionDT
function = time_function
[]
[]
[Postprocessors]
[temperature]
type = NodalVariableValue
variable = temp
nodeid = 2
[]
[decay_heat_function]
type = DecayHeatFunction
time_at_shutdown = 400
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
energy_per_fission = 1
block = 1
[]
[]
[Outputs]
exodus = true
[]
(examples/spent_fuel/full_life_cycle_coarse/discrete.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
# Modifying the base model to simulate the complete fuel life cycle from
# irradiation through dry storage
# Irradiation Time 3 years (6% burnup, ~ 60 MWd/kgU)
# Spent Fuel Pool 3 years
# Vacuum Drying 24 hours
# Dry Cask Storage (DCSS) 5 years
#
irrad_ramp = 8.64e4
irrad_end = 9.46944e7
cool_start = 9.47808e7
cool_end = 4.101408e8
dry_start = 4.101409e8
# dry_end = 4.102272e8 # 24 hour drying
dry_end = 4.101696e8 # 8 hour drying
# store_end = 5.679072e8 # 5 yrs storage
store_end = 4.732416e8 # 2 yrs storage
#
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 20 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = coarse10_rz.e
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temp]
initial_condition = 298.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[max_fission_rate]
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear
x = '0 ${irrad_ramp} ${irrad_end} ${cool_start}'
y = '0 25e3 25e3 0'
[]
[axial_peaking_factors]
type = PiecewiseLinear
axis = y
x = '0.00324 0.0151 0.10998 0.12184'
y = '1.0 1.0 1.0 1.0'
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[coolant_pressure]
type = PiecewiseLinear
# ---- irrad ---- --- pool --- - storage -
x = '0 ${irrad_ramp} ${irrad_end} ${cool_start} ${cool_end} ${dry_start} ${dry_end} ${store_end}'
y = '1e5 15.5e6 15.5e6 2e5 2e5 1e5 1e5 1e5'
[]
[coolant_temperature]
type = PiecewiseLinear
# ---- irrad ---- --- pool --- - storage -
x = '0 ${irrad_ramp} ${irrad_end} ${cool_start} ${cool_end} ${dry_start} ${dry_end} ${store_end}'
y = '300 587 587 308 308 308 308 308'
[]
[coolant_htc]
type = PiecewiseLinear
# From CoolantChannel model, HTC falls from 37000 to 22000 as the oxide grows.
# Coolant flow is maintained until after CZP, then 1 more day. Flow is then reduced until the
# correct htc for natural convection is achieved (~400 W/m2-K).
# Drying is handled by DryCaskHeatFlux.
x = '0 ${irrad_ramp} 7e7 ${irrad_end} ${cool_start} ${cool_end} ${dry_start} ${dry_end} ${store_end}'
y = '37e3 37e3 25e3 22e3 400 400 0 0 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
fission_rate = fission_rate
decay_heat_function = decay_heat_function
max_fission_rate = max_fission_rate
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[max_fission_rate]
type = MaxFissionRateAux
variable = max_fission_rate
block = pellet_type_1
fission_rate = fission_rate
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = nonlinear
[]
[creep_strain_mag]
type = MaterialRealAux
block = clad
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 1.0
function = coolant_pressure
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[convective_clad_surface] # apply convective boundary to clad outer surface
type = ConvectiveFluxFunction
boundary = '1 2 3'
variable = temp
coefficient = 'coolant_htc'
T_infinity = 'coolant_temperature'
[]
[cask_cooling]
type = DryCaskHeatFlux
variable = temp
boundary = '1 2 3'
bwr_or_pwr = 'pwr'
fill_gas = 'helium'
ambient_temperature = 298
cask_effective_htc = 3.1 # W/K from each assembly to ambient
start_time = ${cool_end}
drying_duration = 86400
[]
[]
[Controls]
[DCSS]
type = TimePeriod
disable_objects = 'BCs/convective_clad_surface'
start_time = ${cool_end}
end_time = 1e9
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 'pellet_type_1'
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[ZryOxidation]
type = ZryOxidation
boundary = '2'
clad_inner_radius = 0.00418
clad_outer_radius = 0.00474
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
outputs = all
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
initial_fuel_density = 10431.0
gas_swelling_model_type = SIFGRS
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1'
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160e-6
burnup_relocation_stop = 0.3
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 'clad'
[]
[clad_creep_model]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 'clad'
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 298.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_growth_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
# PETSC options:
# petsc_options
# petsc_options_iname
# petsc_options_value
#
# controls for linear iterations
# l_max_its
# l_tol
#
# controls for nonlinear iterations
# nl_max_its
# nl_rel_tol
# nl_abs_tol
#
# time control
# start_time
# dt
# optimal_iterations
# iteration_window
# linear_iteration_ratio
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 35
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -200
n_startup_steps = 1
end_time = ${store_end}
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 20
iteration_window = 6
time_t = '0 ${irrad_ramp} ${irrad_end} ${cool_start} ${cool_end} ${dry_start} ${dry_end} ${store_end}'
time_dt ='1e3 1e4 1e3 100 100 100 100 100'
growth_factor = 1.5
cutback_factor = .6
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = linear
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[decay_heat_function]
type = DecayHeatFunction
time_at_shutdown = ${cool_start}
table_or_sum = sum
[]
[peak_clad_temp]
type = NodalExtremeValue
variable = temp
block = 'clad'
execute_on = 'timestep_end'
[]
[max_clad_hoop_stress]
type = ElementExtremeValue
variable = stress_zz
block = 'clad'
value_type = 'max'
execute_on = 'timestep_end'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[peak_oxide_thickness]
type = ElementExtremeValue
variable = oxide_thickness
block = 'clad'
value_type = 'max'
execute_on = 'timestep_end'
[]
[]
[VectorPostprocessors]
[clad_surf_props]
type = LineValueSampler
variable = 'oxide_thickness temp stress_zz'
start_point = '0.00467 0.0001 0'
end_point = '0.00467 0.1279 0'
num_points = 100
sort_by = y
outputs = 'outfile_1'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[chkfile]
type = CSV
show = 'peak_clad_temp peak_oxide_thickness max_clad_hoop_stress'
execute_on = final
[]
[]