- axial_directionThe name of the axial position variable.
C++ Type:std::string
Controllable:No
Description:The name of the axial position variable.
- radial_directionThe name of the radial position variable.
C++ Type:std::string
Controllable:No
Description:The name of the radial position variable.
- temperature_nameThe name of the temperature variable
C++ Type:std::string
Controllable:No
Description:The name of the temperature variable
- vector_postprocessorThe NodalValueSampler vector postprocessor whose values are used to calculate radial average fuel enthalpy.
C++ Type:VectorPostprocessorName
Unit:(no unit assumed)
Controllable:No
Description:The NodalValueSampler vector postprocessor whose values are used to calculate radial average fuel enthalpy.
RadialAverageEnthalpy
Uses radial temperature output from a NodalValueSampler VPP to calculate the peak radial average fuel enthalpyfor UO2 above 300 K
Description
RadialAverageEnthalpy calculates the radial average fuel enthalpy (J/kg) at a specified axial position in a radially symmetric fuel element.
Radial average fuel enthalpy is useful in assessing fuel performance and failure states for reactivity insertion accident (RIA) cases and may only be used with the RZ coordinate type. The Kerrisk's method to calculate enthalpy is only applicable for temperatures above 300 K, and currently only supports uranium oxide fuel types (fuel_type = UO2) Kerrisk and Clifton (1972).
A LineValueSampler VectorPostprocessor is set up to sample temperature at various radial positions (almost exclusively sort_by = x in radially symmetric 2D meshes) by specifying the start_point and end_point with string lists in the form 'x y z' executed at the end of a timestep.T
The user may specify the number of points to sample and LineValueSampler will interpolate between temperatures distributed on the mesh. The name of the LineValueSampler block must be used as the argument for the vectorpostprocessor parameter as shown in the input file example below. The argument for the r_dim parameter should correspond to the radial direction of the mesh geometry (this should be the same axis specified in sort_by).
The LineValueSampler is necessary to pull in the temperature data required to calculate the radial average fuel enthalpy at a particular axial position. The r_dim and sort_by parameters in RadialAverageEnthalpy and LineValueSampler input blocks, respectively, must both be the same axis (almost always x).
To suppress CSV output of the LineValueSampler, add a separate output of type CSV and set enable = 0.
Example Input Syntax
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[radial_average_enthalpy]
type = RadialAverageEnthalpy<<<{"description": "Uses radial temperature output from a NodalValueSampler VPP to calculate the peak radial average fuel enthalpyfor UO2 above 300 K", "href": "RadialAverageEnthalpy.html"}>>>
vector_postprocessor<<<{"description": "The NodalValueSampler vector postprocessor whose values are used to calculate radial average fuel enthalpy."}>>> = rad_temp
radial_direction<<<{"description": "The name of the radial position variable."}>>> = x
axial_direction<<<{"description": "The name of the axial position variable."}>>> = y
temperature_name<<<{"description": "The name of the temperature variable"}>>> = temp
[]
[](test/tests/radial_avg_fuel_enthalpy/radial_avg_enthalpy.i)A LineValueSampler vector postprocessor is required to use the RadialAverageEnthalpy postprocessor. Example syntax for the LineValueSampler associated with the previous RadialAverageEnthalpy syntax example follows.
[VectorPostprocessors<<<{"href": "../../syntax/VectorPostprocessors/index.html"}>>>]
[rad_temp]
type = NodalValueSampler<<<{"description": "Samples values of nodal variable(s).", "href": "../vectorpostprocessors/NodalValueSampler.html"}>>>
sort_by<<<{"description": "What to sort the samples by"}>>> = y
variable<<<{"description": "The names of the variables that this VectorPostprocessor operates on"}>>> = temp
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = dummy #this will prevent the VectorPostprocessor from outputing CSV files every timestep
[]
[](test/tests/radial_avg_fuel_enthalpy/radial_avg_enthalpy.i)Input Parameters
- axial_position-1The axial position at which to compute the radial average enthalpy
Default:-1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The axial position at which to compute the radial average enthalpy
- oxygen_to_metal_ratio2The ratio of oxygen to uranium in the fuel.
Default:2
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The ratio of oxygen to uranium in the fuel.
Optional 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/RIA_NSRR_FK/analysis/FK5/FK05.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK9/FK09.i)
- (assessment/LWR/benchmark/RIA_benchmark/analysis/RIA_benchmark.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02_action.i)
- (test/tests/radial_avg_fuel_enthalpy/radial_avg_enthalpy_specified.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK8/FK08.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01_action.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/RIA/REP_Na_4_RIA.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03_ccm.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK6/FK06.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_RIA.i)
- (test/tests/radial_avg_fuel_enthalpy/radial_avg_enthalpy.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/REP_Na_4.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK4/FK04.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK7/FK07.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_2D_Base_Irradiation_Option.i)
References
- J. F. Kerrisk and D. G. Clifton.
Smoothed values of the enthalpy and heat capacity of uo2.
Nuclear Technology, 16(3):531–535, 1972.[BibTeX]
@article{Kerrisk1972, author = "Kerrisk, J. F. and Clifton, D. G.", title = "Smoothed values of the enthalpy and heat capacity of UO2", journal = "Nuclear Technology", volume = "16", number = "3", year = "1972", pages = "531-535" }
(test/tests/radial_avg_fuel_enthalpy/radial_avg_enthalpy.i)
# Test to calculate the radial average fuel enthalpy (RAE) of UO2 fuel using a steady-state
# radial temperature solution with uniform heat generation.
# The mesh is a 31x1 RZ section of fuel with a radius of 5mm
# The uniform heat generation term is 192000000 W/m^3
# The thermal conductivity is 1 W/m/K
# Right boundary condition is 300K
# The analytical solution for this temperature profile is T(r)=((qdot*r0^2)/(4*k))*(1-r^2/r0^2)+T_r0
# With these parameters the temperture at the centerline is 1500K
#
# The enthalpy of UO2 is calculated using equation from
# Kerrisk, J. F., & Clifton, D. G. (1972). Smoothed values of the enthalpy and heat capacity of UO2. Nuclear Technology, 16(3), 531-535.
#
# H(T)=K1*Theta/(e^(Theta/T)-1)+(K2*T^2/2)+(Y*K3*e^(-E_d/(R*T))/2)
# H is fuel enthalpy in J/kg
# T is temperature in K
# Y is oxygen-to-metal ratio, usually 2.0
# R is universal gas constant = 8.3143 J/mol/K
# Theta = Einstein Temperature 535.285 K
# E_d = activation energy for Frenkel defects 1.577e5 J/mol
# K1=296.7 J/kg/K
# K2=2.43e-2 J/kg/K^2
# K3=8.745e7 J/kg
#
# Using 31 elements through the fuel the analytical and BISON simulation result in:
#
# Analytical: 208320.8 J/kg
# BISON: 208320.6 J/kg
[Mesh]
coord_type = RZ
[line]
type = GeneratedMeshGenerator
dim = 1
nx = 31
xmin = 0.0
xmax = 0.005
elem_type = EDGE2
[]
[]
[Variables]
[temp]
initial_condition = 300.0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_source_fuel]
type = HeatSource
variable = temp
block = '0'
value = 192000000
[]
[]
[BCs]
[temp_right]
type = DirichletBC
boundary = right
variable = temp
value = 300
[]
[]
[Materials]
[thermal]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '1.0'
[]
[]
[Executioner]
type = Steady
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-6
nl_max_its = 20
nl_rel_tol = 1e-8
[]
[Postprocessors]
[radial_average_enthalpy]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
temperature_name = temp
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
sort_by = y
variable = temp
outputs = dummy #this will prevent the VectorPostprocessor from outputing CSV files every timestep
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
csv = true
exodus = false
[dummy]
type = CSV
enable = 0
[]
[]
(test/tests/radial_avg_fuel_enthalpy/radial_avg_enthalpy.i)
# Test to calculate the radial average fuel enthalpy (RAE) of UO2 fuel using a steady-state
# radial temperature solution with uniform heat generation.
# The mesh is a 31x1 RZ section of fuel with a radius of 5mm
# The uniform heat generation term is 192000000 W/m^3
# The thermal conductivity is 1 W/m/K
# Right boundary condition is 300K
# The analytical solution for this temperature profile is T(r)=((qdot*r0^2)/(4*k))*(1-r^2/r0^2)+T_r0
# With these parameters the temperture at the centerline is 1500K
#
# The enthalpy of UO2 is calculated using equation from
# Kerrisk, J. F., & Clifton, D. G. (1972). Smoothed values of the enthalpy and heat capacity of UO2. Nuclear Technology, 16(3), 531-535.
#
# H(T)=K1*Theta/(e^(Theta/T)-1)+(K2*T^2/2)+(Y*K3*e^(-E_d/(R*T))/2)
# H is fuel enthalpy in J/kg
# T is temperature in K
# Y is oxygen-to-metal ratio, usually 2.0
# R is universal gas constant = 8.3143 J/mol/K
# Theta = Einstein Temperature 535.285 K
# E_d = activation energy for Frenkel defects 1.577e5 J/mol
# K1=296.7 J/kg/K
# K2=2.43e-2 J/kg/K^2
# K3=8.745e7 J/kg
#
# Using 31 elements through the fuel the analytical and BISON simulation result in:
#
# Analytical: 208320.8 J/kg
# BISON: 208320.6 J/kg
[Mesh]
coord_type = RZ
[line]
type = GeneratedMeshGenerator
dim = 1
nx = 31
xmin = 0.0
xmax = 0.005
elem_type = EDGE2
[]
[]
[Variables]
[temp]
initial_condition = 300.0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_source_fuel]
type = HeatSource
variable = temp
block = '0'
value = 192000000
[]
[]
[BCs]
[temp_right]
type = DirichletBC
boundary = right
variable = temp
value = 300
[]
[]
[Materials]
[thermal]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '1.0'
[]
[]
[Executioner]
type = Steady
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-6
nl_max_its = 20
nl_rel_tol = 1e-8
[]
[Postprocessors]
[radial_average_enthalpy]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
temperature_name = temp
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
sort_by = y
variable = temp
outputs = dummy #this will prevent the VectorPostprocessor from outputing CSV files every timestep
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
csv = true
exodus = false
[dummy]
type = CSV
enable = 0
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK5/FK05.i)
# This file was created using BIF with the following inputs:
# FK05/FK05.var - md5sum: 789d603cfbdaaeb2625ea98056214f6f
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.5e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.20e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02.i)
# This file was created using BIF with the following inputs:
# FK02.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.03481
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK9/FK09.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/benchmark/RIA_benchmark/analysis/RIA_benchmark.i)
# RIA Benchmark - Case 5 with full output in CSV
initial_fuel_density = 10531
[GlobalParams]
density = ${initial_fuel_density} # UO2 with 4% porosity
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_iterations = 20
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 10
ny_p = 40
ny_cu = 3
ny_c = 40
ny_cl = 3
nx_c = 5
clad_thickness = 5.7e-4
pellet_outer_radius = 4.13e-3
pellet_quantity = 10
pellet_height = 1e-2
clad_top_gap_height = 0.0186616493139897
clad_bot_gap_height = 0.0186616493139897
clad_gap_width = 0.0
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.15
[]
[]
[AuxVariables]
[plastic_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[clad_water_htc]
order = CONSTANT
family = MONOMIAL
[]
[clad_water_flux]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0
[]
[]
[Functions]
[power_history] # triangular pulse power history defined by benchmark
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 0
10 0
20 0
30 0
40 0
50 0
60 0
70 0
80 0
90 0
100 0
100.0003 0.01
100.0006 0.02
100.0009 0.03
100.030 1
100.060 0
100.081 0
100.082 0
100.083 0
100.084 0
100.085 0
100.086 0
100.087 0
100.088 0
100.089 0
100.090 0
100.091 0
100.092 0
100.093 0
100.094 0
100.095 0
100.096 0
100.097 0
100.098 0
100.099 0
100.100 0
100.105 0
100.110 0
100.115 0
100.120 0
100.125 0
100.130 0
100.135 0
100.140 0
100.145 0
100.150 0
100.155 0
100.160 0
100.165 0
100.170 0
100.175 0
100.180 0
100.185 0
100.190 0
100.195 0
100.200 0
100.210 0
100.220 0
100.230 0
100.240 0
100.250 0
100.260 0
100.270 0
100.280 0
100.290 0
100.300 0
100.310 0
100.320 0
100.330 0
100.340 0
100.350 0
100.360 0
100.370 0
100.380 0
100.390 0
100.400 0
100.410 0
100.420 0
100.430 0
100.440 0
100.450 0
100.460 0
100.470 0
100.480 0
100.490 0
100.500 0
100.510 0
100.520 0
100.530 0
100.540 0
100.550 0
100.560 0
100.570 0
100.580 0
100.590 0
100.600 0
100.610 0
100.620 0
100.630 0
100.640 0
100.650 0
100.660 0
100.670 0
100.680 0
100.690 0
100.700 0
100.710 0
100.720 0
100.730 0
100.740 0
100.750 0
100.760 0
100.770 0
100.780 0
100.790 0
100.800 0
100.810 0
100.820 0
100.830 0
100.840 0
100.850 0
100.860 0
100.870 0
100.880 0
100.890 0
100.900 0
100.910 0
100.920 0
100.930 0
100.940 0
100.950 0
100.960 0
100.970 0
100.980 0
100.990 0
101.000 0
101.100 0
101.200 0
101.300 0
101.400 0
101.500 0
101.600 0
101.700 0
101.800 0
101.900 0
102.000 0
102.100 0
102.200 0
102.300 0
102.400 0
102.500 0
102.600 0
102.700 0
102.800 0
102.900 0
103.000 0
103.100 0
103.200 0
103.300 0
103.400 0
103.500 0
103.600 0
103.700 0
103.800 0
103.900 0
104.000 0
104.100 0
104.200 0
104.300 0
104.400 0
104.500 0
104.600 0
104.700 0
104.800 0
104.900 0
105.000 0
105.100 0
105.200 0
105.300 0
105.400 0
105.500 0
105.600 0
105.700 0
105.800 0
105.900 0
106.000 0
106.100 0
106.200 0
106.300 0
106.400 0
106.500 0
106.600 0
106.700 0
106.800 0
106.900 0
107.000 0
107.100 0
107.200 0
107.300 0
107.400 0
107.500 0
107.600 0
107.700 0
107.800 0
107.900 0
108.000 0
108.100 0
108.200 0
108.300 0
108.400 0
108.500 0
108.600 0
108.700 0
108.800 0
108.900 0
109.000 0
109.100 0
109.200 0
109.300 0
109.400 0
109.500 0
109.600 0
109.700 0
109.800 0
109.900 0
110 0
111 0
112 0
113 0
114 0
115 0
116 0
117 0
118 0
119 0
120 0
130 0
140 0
150 0
160 0
170 0
180 0
190 0
200 0'
[]
[pressure_ramp] # inlet coolant pressure evolution
type = PiecewiseLinear
scale_factor = 1.0
xy_data = '0 1e5
50 1.55e7
200 1.55e7'
[]
[temp_ramp] # inlet coolant temperature evolution
type = PiecewiseLinear
scale_factor = 1.0
xy_data = '0 293.15
50 553.15
200 553.15'
[]
[Fuel_CTE_function] #Fuel CTE as a function of temp from MATPRO data
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 1.00005E-05
300 1.00005E-05
350 1.00005E-05
400 1.00015E-05
450 0.000010004
500 1.00091E-05
550 0.000010018
600 1.00321E-05
650 1.00522E-05
700 1.00791E-05
750 1.01131E-05
800 1.01544E-05
850 1.02028E-05
900 1.02577E-05
950 1.03187E-05
1000 0.000010385
1050 0.000010456
1100 1.05308E-05
1150 1.06087E-05
1200 1.06891E-05
1250 1.07712E-05
1300 1.08545E-05
1350 1.09384E-05
1400 1.10224E-05
1450 1.11061E-05
1500 1.11891E-05
1550 1.12712E-05
1600 1.13519E-05
1650 1.14311E-05
1700 1.15087E-05
1750 1.15844E-05
1800 0.000011658
1850 1.17297E-05
1900 1.17991E-05
1950 1.18664E-05
2000 1.19314E-05
2050 1.19942E-05
2100 1.20547E-05
2150 0.000012113
2200 1.21691E-05
2250 1.22229E-05
2300 1.22746E-05
2350 1.23242E-05
2400 1.23717E-05'
[]
[Clad_CTE_function] #Cladding CTE as a function of temp from MATPRO data
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 0.00000495
300 0.00000495
350 0.00000495
400 0.00000495
450 0.00000495
500 0.00000495
550 0.00000495
600 0.00000495
650 0.00000495
700 0.00000495
750 0.00000495
800 0.00000495
850 0.00000495
900 0.00000495
950 0.00000495
1000 0.00000495
1050 0.00000495
1083 0.00000495
1100 4.76997E-06
1150 3.60423E-06
1200 2.2888E-06
1244 1.77904E-06
1250 1.81579E-06
1300 0.00000221
1350 2.56667E-06
1400 2.89091E-06
1450 3.18696E-06
1500 3.45833E-06
1550 0.000003708
1600 3.93846E-06
1650 4.15185E-06
1700 0.00000435
1750 4.53448E-06
1800 4.70667E-06
1850 4.86774E-06
1900 5.01875E-06
1950 5.16061E-06
2000 5.29412E-06
2050 0.00000542
2098 5.53426E-06'
[]
[YS_function] #Yield Strength as a function of temp from PNNL report
#Cold work = 0.5, Average oxygen concentration = 0, fast neutron fluence = 0
#Assumed constant strain rate of 0.01
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 593425301.8
300 593425301.8
320 580674456.3
340 567078477.7
360 552695674.7
380 537584819.6
400 521805085.5
420 505428587.7
440 489716889.1
460 475582155.5
480 462727514.7
500 450878059.4
520 439778204.9
540 429188702.8
560 418888211.8
580 408677370.3
600 398362281.7
620 387769321.2
640 376741767.7
660 365140974.9
680 352847834.1
700 339764457.8
720 325816004.1
740 310952563.6
760 271786784.1
780 222194537.8
800 185377726.5
820 154173430.2
840 130199325.7
860 111396817.2
880 96362607.14
900 84120129.15
920 73977044.17
940 65434357.46
960 58127235.93
980 51785717.25
1000 46208150.84
1020 41242936.22
1040 36775756.82
1060 32720505.36
1080 29012718.16
1090 27273687.16
1100 26355024.23
1120 22442026.84
1140 18753365.2
1160 15296510.38
1180 12079785.07
1200 9113113.474
1220 6409493.205
1240 3988344.555
1250 2893569.671
1255 2377978.33
1260 2323366.884
1280 2116912.621
1300 1928475.009
1320 1756577.201
1340 1599841.384
1360 1456985.125
1380 1326817.541
1400 1208235.326'
[]
#############################
[cp_factor]
type = ConstantFunction
value = 1.0
[]
[total_energy] #total Joules of energy injected into fuel during the RIA pulse
type = ConstantFunction
value = 30000
[]
[FWMH] #Full Width at Mid Height of RIA pulse
type = ConstantFunction
value = 0.03
[]
[fuel_OR] #Fuel outer radius
type = ConstantFunction
value = 0.00413
[]
##########################
[heat_generation] #A factor to multiply the pulse history to get desired energy/gram into the fuel
type = ParsedFunction
expression = 'energy / (pi * fuelradius * fuelradius * height) / pulsewidth'
symbol_names = 'height energy pulsewidth fuelradius'
symbol_values = '0.1 zz_total_energy zz_FWMH zz_fuel_OR'
[]
[power_ramp] #Transient power pulse applied to the fuel as a uniform heat generation term (W/m^3)
type = CompositeFunction
functions = 'power_history heat_generation'
scale_factor = 1.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_eigenstrain'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_yy stress_zz vonmises_stress hoop_stress'
[]
[clad]
block = clad
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_yy stress_zz plastic_strain_yy plastic_strain_zz elastic_strain_yy elastic_strain_zz strain_yy strain_zz vonmises_stress hoop_stress axial_stress'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = HeatSource
variable = temp
block = 'pellet'
function = power_ramp
value = 1.0
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[plastic_strain_mag]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_mag
block = clad
execute_on = timestep_end
[]
[clad_water_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = clad_water_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[clad_water_flux]
type = MaterialRealAux
property = output_heat_flux
variable = clad_water_flux
boundary = 2
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
model = coulomb
friction_coefficient = 100
formulation = tangential_penalty
normalize_penalty = true
penalty = 1e12
normal_smoothing_distance = 0.1
tangential_tolerance = 1e-3
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
emissivity_primary = 0.797698
emissivity_secondary = 0.325
roughness_secondary = 0.1e-6 #roughness specified in benchmark
roughness_primary = 0.1e-6
roughness_coef = 3.2
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
contact_pressure = contact_pressure
normal_smoothing_distance = 0.1
quadrature = true
order = SECOND
[]
[]
[BCs]
[fixed_external_clad_temp]
type = FunctionDirichletBC
variable = temp
boundary = 1
function = temp_ramp
[]
[fixed_external_clad_temp_2]
type = FunctionDirichletBC
variable = temp
boundary = 3
function = temp_ramp
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_temperature = 293.15
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = representative_plenum_temperature_node
volume = plenum_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
chf_correlation_type = 1 # EPRI
htc_correlation_type = 1 # Thom or McDonough... or Groenveld
boundary = '2'
variable = temp
coolant_material = 'water'
inlet_massflux = 3057.2 #kg/(m^2 s)
inlet_temperature = temp_ramp
inlet_pressure = pressure_ramp
compute_enthalpy = true
flow_area = 1.0731681e-4 #m^2
heated_diameter = 1.4536170e-2 #m
hydraulic_diameter = 5.6e-3 #m
heated_perimeter = 2.9530971e-2 #m
heat_transfer_mode = 0
number_axial_zone = 50
htc_scalef = 1
[]
[]
[Materials]
[density_fuel]
type = StrainAdjustedDensity
block = 'pellet'
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet'
temperature = temp
burnup = burnup
initial_porosity = 0.04
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
temperature = temp
block = pellet
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeInstantaneousThermalExpansionFunctionEigenstrain
block = pellet
temperature = temp
thermal_expansion_function = Fuel_CTE_function
stress_free_temperature = 293.15
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[density_clad]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temp
[]
[clad_youngs_modulus]
type = PiecewiseLinearInterpolationMaterial
block = clad
xy_data = ' 0 79375000000
300 79375000000
320 78280000000
340 77185000000
360 76090000000
380 74995000000
400 73900000000
420 72805000000
440 71710000000
460 70615000000
480 69520000000
500 68425000000
520 67330000000
540 66235000000
560 65140000000
580 64045000000
600 62950000000
620 61855000000
640 60760000000
660 59665000000
680 58570000000
700 57475000000
720 56380000000
740 55285000000
760 54190000000
780 53095000000
800 52000000000
820 50905000000
840 49810000000
860 48715000000
880 47620000000
900 46525000000
920 45430000000
940 44335000000
960 43240000000
980 42145000000
1000 41050000000
1020 39955000000
1040 38860000000
1060 37765000000
1080 36670000000
1090 36122500000
1100 36434621212
1120 37058863636
1140 37683106061
1160 38307348485
1180 38931590909
1200 39555833333
1220 40180075758
1240 40804318182
1250 41116439394
1255 41272500000
1260 41070000000
1280 40260000000
1300 39450000000
1320 38640000000
1340 37830000000
1360 37020000000
1380 36210000000
1400 35400000000'
property = clad_youngs_modulus
variable = temp
[]
[clad_elasticity_tensor]
type = ComputeVariableIsotropicElasticityTensor
block = clad
args = temp
youngs_modulus = clad_youngs_modulus
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = 'plasticity'
tangent_operator = elastic
[]
[clad_thermal_expansion]
type = ComputeInstantaneousThermalExpansionFunctionEigenstrain
block = clad
temperature = temp
thermal_expansion_function = Clad_CTE_function
stress_free_temperature = 293.15
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = IsotropicPlasticityStressUpdate
block = clad
temperature = temp
hardening_constant = 2.5e9
yield_stress_function = YS_function
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[contact_slip]
type = ContactSlipDamper
primary = 5
secondary = 10
min_damping_factor = 0.05
[]
[]
[Executioner]
type = Transient
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 100
l_tol = 1e-4
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-8
start_time = 0
end_time = 200
dtmax = 10
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
dt = 10
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 0.03
optimal_iterations = 25
iteration_window = 5
linear_iteration_ratio = 1000
growth_factor = 1.2
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[representative_plenum_temperature_node] #Temperature used for plenum gas, using a node slightly above where the fuel contacts the cladding
type = NodalVariableValue
variable = temp
nodeid = 771
execute_on = 'initial linear'
[]
[2_input_rod_power]
type = FunctionValuePostprocessor
function = power_history
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[3_fuel_centerline_temp]
type = NodalVariableValue
variable = temp
nodeid = 1643
execute_on = 'initial timestep_end'
[]
[4_fuel_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[5_clad_inner_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 496
execute_on = 'initial timestep_end'
[]
[6_clad_outer_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 509
execute_on = 'initial timestep_end'
[]
[clad_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 900
execute_on = 'initial timestep_end'
[]
[fuel_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 2311
execute_on = 'initial timestep_end'
[]
[clad_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = 496
execute_on = 'initial timestep_end'
[]
[fuel_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[clad_hoop_stress]
type = ElementalVariableValue
variable = hoop_stress
elementid = 149
execute_on = 'initial timestep_end'
[]
[clad_axial_stress]
type = ElementalVariableValue
variable = axial_stress
elementid = 149
execute_on = 'initial timestep_end'
[]
[total_hoop_strain]
type = ElementalVariableValue
variable = strain_zz
elementid = 149
execute_on = 'initial timestep_end'
[]
[total_axial_strain]
type = ElementalVariableValue
variable = strain_yy
elementid = 149
execute_on = 'initial timestep_end'
[]
[plastic_hoop_strain]
type = ElementalVariableValue
variable = plastic_strain_zz
elementid = 149
execute_on = 'initial timestep_end'
[]
[plastic_axial_strain]
type = ElementalVariableValue
variable = plastic_strain_yy
elementid = 149
execute_on = 'initial timestep_end'
[]
[elastic_hoop_strain]
type = ElementalVariableValue
variable = elastic_strain_zz
elementid = 149
execute_on = 'initial timestep_end'
[]
[elastic_axial_strain]
type = ElementalVariableValue
variable = elastic_strain_yy
elementid = 149
execute_on = 'initial timestep_end'
[]
############################
[gap_cond]
type = ElementalVariableValue
variable = gap_cond
elementid = 499
execute_on = 'initial timestep_end'
[]
[coolant_temp]
type = ElementalVariableValue
variable = coolant_temp
elementid = 149
execute_on = 'initial timestep_end'
[]
[clad_water_flux]
type = ElementalVariableValue
variable = clad_water_flux
elementid = 149
execute_on = 'initial timestep_end'
[]
[clad_water_htc]
type = ElementalVariableValue
variable = clad_water_htc
elementid = 149
execute_on = 'initial timestep_end'
[]
[qpoint_penetration]
type = ElementalVariableValue
variable = qpoint_penetration
elementid = 499
execute_on = 'initial timestep_end'
[]
[penetration]
type = NodalVariableValue
variable = penetration
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[zz_fuel_OR]
type = FunctionValuePostprocessor
function = fuel_OR
execute_on = 'initial timestep_end'
[]
[zz_total_energy]
type = FunctionValuePostprocessor
function = total_energy
execute_on = 'initial timestep_end'
[]
[zz_FWMH]
type = FunctionValuePostprocessor
function = FWMH
execute_on = 'initial timestep_end'
[]
[zz_cp_factor]
type = FunctionValuePostprocessor
function = cp_factor
execute_on = 'initial timestep_end'
[]
[zzz_heat_generation]
type = FunctionValuePostprocessor
function = heat_generation
execute_on = 'initial timestep_end'
[]
[zzzz_power_ramp]
type = FunctionValuePostprocessor
function = power_ramp
execute_on = 'initial timestep_end'
[]
[zzzzz_RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0709016
temperature_name = temp
execute_on = 'initial timestep_end'
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = zzzzz_RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
outputs = dummy
execute_on = 'initial timestep_end'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
rod_component = CLAD ## Request only clad components because fission gas models are not used in this input file
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
csv = true
exodus = true
color = false
[console]
type = Console
output_linear = true
max_rows = 10
[]
[dummy]
type = CSV
enable = false
[]
[chkfile]
type = CSV
show = 'plenum_temperature average_interior_clad_temperature plenum_volume peak_RAE'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02_action.i)
# This file was created using BIF with the following inputs:
# FK02.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.085711070864
initial_grain_radius = 5.96e-6
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
total_densification = 0.006
temperature = temperature
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.03481
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temperature'
[]
[AuxVariables]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[pelletid]
type = PelletIdAux
block = 3
fuel_pin_geometry = pin_geometry
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
contact_pressure = mechanical_normal_lm
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temperature]
type = DirichletBC
boundary = '1 2 3'
variable = temperature
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[NuclearMaterials]
generate_output = 'elastic_strain_xx elastic_strain_yy elastic_strain_zz
stress_xx stress_yy '
'stress_zz strain_xx strain_yy strain_zz vonmises_stress'
fission_operation = 'RIA'
physics = 'Mechanics Thermal'
strain = FINITE
incremental = true
add_variables = true
initial_temperature = 293
stress_free_temperature = 293
extra_vector_tags = 'ref'
[UO2]
[fuel]
block = 3
uo2_models = 'Elastic Burnup Swelling ThermalExpansion'
isotopes = 'U238 U235'
isotope_fractions = '0.961 0.039'
fuel_pin_geometry = pin_geometry
rod_ave_lin_pow = linear_heat_rate_profile
rpf_input = radial_power_profile
fuel_volume_ratio = 1
num_radial = 80
num_axial = 49
RIA_initial_burnup = initial_burnup
axial_power_profile = axial_peaking_factors
additional_generate_output = 'hydrostatic_stress'
[]
[]
[ZirconiumAlloy]
[clad]
block = 1
cladding_models = 'Elastic Creep Plasticity ThermalExpansion'
initial_fast_fluence = 8.40e25
flux_function = axial_flux
zircaloy_alloy_type = 4
cold_work_factor = 0.01
plasticity_model_type = MATPRO
matpro_poissons_ratio = true
matpro_youngs_modulus = true
material_output_properties = yield_stress
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
[]
[]
[]
[Materials]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temperature
fuel_pin_geometry = pin_geometry
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temperature
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temperature
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage '
'peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/radial_avg_fuel_enthalpy/radial_avg_enthalpy_specified.i)
# Test to calculate the radial average fuel enthalpy (RAE) of UO2 fuel using a steady-state
# radial temperature solution with uniform heat generation.
# The mesh is a 31x2 RZ section of fuel with a radius of 5mm and height of 10 mm
# The uniform heat generation term is 192000000 W/m^3
# The thermal conductivity is 1 W/m/K
# Right boundary condition is 300K
# The analytical solution for this temperature profile is T(r)=((qdot*r0^2)/(4*k))*(1-r^2/r0^2)+T_r0
# With these parameters the temperture at the centerline is 1500K
#
# The enthalpy of UO2 is calculated using equation from
# Kerrisk, J. F., & Clifton, D. G. (1972). Smoothed values of the enthalpy and heat capacity of UO2. Nuclear Technology, 16(3), 531-535.
#
# H(T)=K1*Theta/(e^(Theta/T)-1)+(K2*T^2/2)+(Y*K3*e^(-E_d/(R*T))/2)
# H is fuel enthalpy in J/kg
# T is temperature in K
# Y is oxygen-to-metal ratio, usually 2.0
# R is universal gas constant = 8.3143 J/mol/K
# Theta = Einstein Temperature 535.285 K
# E_d = activation energy for Frenkel defects 1.577e5 J/mol
# K1=296.7 J/kg/K
# K2=2.43e-2 J/kg/K^2
# K3=8.745e7 J/kg
#
# Using 31 elements through the radius of the fuel and a specified
# axial location of 5 mm the analytical and BISON simulation result in:
#
# Analytical: 208320.8 J/kg
# BISON: 208320.6 J/kg
[Mesh]
coord_type = RZ
[line]
type = GeneratedMeshGenerator
dim = 2
nx = 31
xmin = 0.0
xmax = 0.005
ymax = 0.01
elem_type = QUAD4
[]
[]
[Variables]
[temp]
initial_condition = 300.0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_source_fuel]
type = HeatSource
variable = temp
block = '0'
value = 192000000
[]
[]
[BCs]
[temp_right]
type = DirichletBC
boundary = right
variable = temp
value = 300
[]
[]
[Materials]
[thermal]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '1.0'
[]
[]
[Executioner]
type = Steady
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-6
nl_max_its = 20
nl_rel_tol = 1e-8
[]
[Postprocessors]
[radial_average_enthalpy]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.005
temperature_name = temp
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
sort_by = y
variable = temp
outputs = dummy #this will prevent the VectorPostprocessor from outputing CSV files every timestep
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
csv = true
exodus = false
[dummy]
type = CSV
enable = 0
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK8/FK08.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy '
'elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy '
'strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz '
'stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz '
'creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage '
'peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01_action.i)
# This file was created using BIF with the following inputs:
# FK01.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.085711070864
initial_grain_radius = 5.96e-6
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
volumetric_locking_correction = false
total_densification = 0.006
temperature = temperature
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.04298
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temperature'
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Kernels]
[gravity]
type = Gravity
block = '1 3'
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temperature]
type = DirichletBC
boundary = '1 2 3'
variable = temperature
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[NuclearMaterials]
generate_output = 'elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz vonmises_stress'
fission_operation = 'RIA'
incremental = true
physics = 'Mechanics Thermal'
initial_temperature = 293
stress_free_temperature = 293
extra_vector_tags = 'ref'
strain = FINITE
[UO2]
[fuel]
block = 3
uo2_models = 'Burnup Elastic Swelling ThermalExpansion'
isotopes = 'U238 U235'
isotope_fractions = '0.961 0.039'
fuel_pin_geometry = pin_geometry
rod_ave_lin_pow = linear_heat_rate_profile
rpf_input = radial_power_profile
fuel_volume_ratio = 1
num_radial = 80
num_axial = 49
axial_power_profile = axial_peaking_factors
additional_generate_output = 'hydrostatic_stress'
[]
[]
[ZirconiumAlloy]
[clad]
block = 1
cladding_models = 'Elastic Creep Plasticity ThermalExpansion'
initial_fast_fluence = 8.40e25
zircaloy_alloy_type = 4
cold_work_factor = 0.01
plasticity_model_type = MATPRO
matpro_poissons_ratio = true
matpro_youngs_modulus = true
material_output_properties = yield_stress
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
[]
[]
[]
[Materials]
[strain_energy_density]
type = StrainEnergyDensity
block = 1
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temperature
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temperature
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temperature
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/RIA/REP_Na_4_RIA.i)
# REP Na 4 RIA
initial_fuel_density = 10476.35
[GlobalParams]
density = ${initial_fuel_density} # assumed TD = 10970
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
coord_type = RZ
type = AugmentedLagrangianContactProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
maximum_lagrangian_update_iterations = 200
acceptable_iterations = 30
acceptable_multiplier = 10
[]
[Mesh]
patch_size = 40
#patch_update_strategy = auto
#partitioner = centroid
#centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = REP_Na4.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[fuel_cond]
order = CONSTANT
family = MONOMIAL
[]
[swelling_strain]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_axial_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_flux]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_hmode]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htype]
order = CONSTANT
family = MONOMIAL
[]
[critical_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_mag]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[SED]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = REPNa4_power_history_Full.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = REPNa4_axial_peaking_Full.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # inlet coolant pressure evolution
type = PiecewiseLinear
format = columns
scale_factor = 1.0
xy_data = '0 101325
8640 15499970
124675200 15499970
124718400 101325
125193600 101325
125193610 101325
125193650 500008
125193700 500008
125193900 500008
125194000 101325
125194100 101325'
[]
[temp_ramp] # inlet coolant temp evolution
type = PiecewiseLinear
format = columns
scale_factor = 1.0
xy_data = '0 293.15
8640 591
20476800 591
21859200 600
47692800 600
51840000 593
72144000 593
73440000 586
96940800 586
99360000 583
124675200.0 583
124761600.0 293.150
125193600.0 293.150
125193650.0 553.150
125193900.0 553.150
125194000.0 293.150
125194100.0 293.150'
[]
[burnup_GWd]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz axial_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 'clad'
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz plastic_strain_xx plastic_strain_yy plastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx
elastic_strain_yy elastic_strain_zz hoop_stress axial_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.5678974
a_lower = 0.0045
fuel_inner_radius = 0
fuel_outer_radius = 0.0040959
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0449 0.9551 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_profile
factor = 3e13 #n/m2-s
block = 'clad'
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
block = 'clad'
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[fuel_conductance]
type = MaterialRealAux
property = thermal_conductivity
variable = fuel_cond
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[swelling_strain]
type = MaterialRealAux
property = volumetric_swelling_strain
variable = swelling_strain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = axial_creep_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = hoop_plastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = axial_plastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[total_axial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_axial_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = axial_elastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[plastic_strain_mag]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_mag
block = clad
execute_on = timestep_end
[]
[clad_coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = clad_coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[clad_coolant_flux]
type = MaterialRealAux
property = output_heat_flux
variable = clad_coolant_flux
boundary = 2
[]
[coolant_channel_hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = coolant_channel_hmode
boundary = 2
[]
[coolant_channel_htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = coolant_channel_htype
boundary = 2
[]
[critical_heat_flux]
type = MaterialRealAux
property = critical_heat_flux
variable = critical_heat_flux
boundary = 2
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[]
[ofract_total]
type = MaterialRealAux
property = current_oxygen_weight_frac_total
variable = oxywtfract_total
execute_on = timestep_end
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
property = oxygen_weight_frac_gained_total
variable = oxywtfgain_total
execute_on = timestep_end
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
property = fract_beta_phase
variable = fract_beta_phase
block = 'clad'
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 210 #10
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.3
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[pellet_clad_mechanical_2]
primary = 5
secondary = 410
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 0.1e-6 #2.0e-6
roughness_secondary = 0.1e-6 #0.5e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
emissivity_primary = 0.800 #Emissivity for fuel
emissivity_secondary = 0.325 #Emissivity for clad
refab_time = 125107200
refab_gas_types = He
refab_fractions = 1
contact_coef = 20 #10 default
[]
[]
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_temperature = 293.15
initial_pressure = 2.60e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior #plenumTemp
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
# extra_vector_tags = 'ref'
refab_time = 125107200
refab_pressure = 0.301e6
refab_temperature = 293.15
refab_volume = 2.0e-6
[]
[]
[]
[CoolantChannel]
# [convective_clad_surface_water] # apply convective boundary to clad outer surface
# boundary = '1 2 3'
# variable = temp
# inlet_temperature = temp_ramp # K
# inlet_pressure = pressure_ramp # Pa
# inlet_massflux = 3244.044104 # kg/m^2-sec
# rod_diameter = 0.00951 # m
# rod_pitch = 1.26e-2 # m
# coolant_material = 'water'
# compute_enthalpy = true
# oxide_thickness = oxide_thickness # coupled oxide_thickness
# number_axial_zone = 50
# []
#
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp # K
inlet_pressure = pressure_ramp # Pa
inlet_massflux = 3533 # kg/m^2-sec Based on flow rate provided and flow area and estimated density of 885.1 kg/m^3
flow_area = 8.74855e-5 #m^2
heated_diameter = 1.172526e-2 #m
hydraulic_diameter = 4.7e-3 #m
heated_perimeter = 2.984513e-2 #m
coolant_material = 'sodium'
compute_enthalpy = true
heat_transfer_mode = 0
oxide_thickness = oxide_thickness # coupled oxide_thickness
number_axial_zone = 50
rod_diameter = 0.0095 # m
htc_correlation_type = 2
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
#density = 10476.35
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.045
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
matpro_poissons_ratio = 1
matpro_youngs_modulus = 1
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.0 #0.0208
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = 'pin_geometry'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
initial_fuel_density = 10476.35
total_densification = 0.00675
initial_porosity = 0.045
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
fission_rate = fission_rate
burnup_function = burnup
initial_porosity = 0.045
grain_radius_const = 5.0e-6
gbs_model = false
transient_option = MICROCRACKING_BURNUP
[]
[clad_density]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6550
[]
[clad_thermal]
type = ZryThermal
block = 'clad'
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
temperature = temp
matpro_poissons_ratio = true
matpro_youngs_modulus = true
cold_work_factor = 0.5
fast_neutron_fluence = fast_neutron_fluence
block = 'clad'
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
#inelastic_models = 'clad_zrycreep clad_zryplasticity'
inelastic_models = 'clad_zryplasticity'
block = 'clad'
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
#creeprate_scale_factor = 1
model_irradiation_creep = 1
model_primary_creep = 1
model_thermal_creep = 1
max_inelastic_increment = 0.0001
creeprate_scale_factor = 0
enable = 0
[]
[clad_zryplasticity]
type = ZryPlasticityUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.5
plasticity_model_type = MATPRO
zircaloy_alloy_type = 4
max_inelastic_increment = 0.0001
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
compute = 0
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00417789
clad_outer_radius = 0.00475615
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
oxygen_weight_fraction_initial = 0.0012
[]
[phase]
type = ZrPhase
block = 'clad'
numerical_method = 2
temperature = temp
[]
[StrainEnergyDensity]
type = StrainEnergyDensity
block = 'clad'
incremental = 1
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200 # The maximum permissible iterative value for the variable.
min_value = 200 # The minimum permissible iterative value for the variable.
variable = temp # The name of the variable that this damper operates on
[]
[contact_slip]
type = ContactSlipDamper
primary = 5
secondary = 10
min_damping_factor = 0.05
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'contact'
contact_line_search_allowed_lambda_cuts = 0
contact_line_search_ltol = 0.5
verbose = true
l_max_its = 100
l_tol = 1e-3
nl_max_its = 40
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0
end_time = 125194100 #125193600 #125194100 is the end time for the RIA
dtmax = 10
dtmin = 1e-7
[TimeStepper]
type = IterationAdaptiveDT
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = power_profile
max_function_change = 5e5
force_step_every_function_point = true
timestep_limiting_postprocessor = material_timestep
time_t = '125193610 125193620 125193630 125193640 125193650 125193660 125193670 125193680'
time_dt = '10 10 10 10 10 10 10 10'
[]
[Quadrature]
order = FIFTH #SEVENTH
side_order = SEVENTH #Comment out if order = SEVENTH
[]
[]
[Postprocessors]
# [ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
# type = SideAverageValue
# boundary = 9 #For RIA the node number is ##***8479***##
# variable = temp
# execute_on = 'initial linear'
# []
[ave_temp_interior]
type = NodalVariableValue
variable = temp
nodeid = 8479
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[1_rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[3_burnup_GWd]
type = FunctionValuePostprocessor
function = burnup_GWd
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = 'clad'
variable = vonmises_stress
[]
[z_average_RPF]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = RPF
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = 'clad'
[]
## Nodal values
[FCT] #fuel centerline temperature
type = NodalVariableValue
variable = temp
nodeid = 3866 #(0, 0.303375, 0)
[]
[FST] #fuel surface temperature
type = NodalVariableValue
variable = temp
nodeid = 3823 #(0.0040959, 0.303375, 0)
[]
[CIST] #clad inner surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9557 #(0.0041779, 0.305106, 0)
[]
[COST] #clad outer surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9547 #(0.00475615, 0.305106, 0)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 3823 #(0.0040959, 0.303375, 0)
use_displaced_mesh = true
[]
#######################################
[qpoint_penetration] #FOCE
type = ElementalVariableValue
variable = qpoint_penetration
elementid = 1200
use_displaced_mesh = 1
[]
[penetration] #FOCN
type = NodalVariableValue
variable = penetration
nodeid = 3823
use_displaced_mesh = 1
[]
[contact_pressure] #FOCN
type = NodalVariableValue
variable = contact_pressure
nodeid = 3823
use_displaced_mesh = 1
[]
[gap_cond] #FOCE
type = ElementalVariableValue
variable = gap_cond
elementid = 1200
use_displaced_mesh = 1
[]
[creep_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_creep_strain
elementid = 2981
use_displaced_mesh = 1
[]
[elastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_elastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[plastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_plastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[total_hoop_strain] #COCE
type = ElementalVariableValue
variable = total_hoop_strain
elementid = 2981
use_displaced_mesh = 1
[]
[clad_hoop_stress] #COCE
type = ElementalVariableValue
variable = hoop_stress
elementid = 2981
use_displaced_mesh = 1
[]
[clad_axial_elongation] #COTN
type = NodalVariableValue
variable = disp_y
nodeid = 10755
use_displaced_mesh = 1
[]
[clad_oxide_thickness] #COCE
type = ElementalVariableValue
variable = oxide_thickness
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_htc] #COCE
type = ElementalVariableValue
variable = clad_coolant_htc
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_temp] #COCE
type = ElementalVariableValue
variable = coolant_temp
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_flux] #COCE
type = ElementalVariableValue
variable = clad_coolant_flux
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_hmode] #COCE
type = ElementalVariableValue
variable = coolant_channel_hmode
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_htype] #COCE
type = ElementalVariableValue
variable = coolant_channel_htype
elementid = 2981
use_displaced_mesh = 1
[]
[critical_heat_flux] #COCE
type = ElementalVariableValue
variable = critical_heat_flux
elementid = 2981
use_displaced_mesh = 1
[]
[fuel_centerline_temp] #FICN
type = NodalVariableValue
variable = temp
nodeid = 3866
[]
[fuel_surface_temp] #FOCN
type = NodalVariableValue
variable = temp
nodeid = 3823
[]
[clad_inner_surface_temp] #CICN
type = NodalVariableValue
variable = temp
nodeid = 9557
[]
[clad_outer_surface_temp] #COCN
type = NodalVariableValue
variable = temp
nodeid = 9547
[]
[fuel_axial_elongation] #FOTN
type = NodalVariableValue
variable = disp_y
nodeid = 7739
[]
[clad_radial_elongation] #COCN
type = NodalVariableValue
variable = disp_x
nodeid = 9547
[]
[fuel_radial_elongation] #FOCN
type = NodalVariableValue
variable = disp_x
nodeid = 3823
[]
[SED_PPN_O] #COCE
type = ElementalVariableValue
variable = SED
elementid = 2981
use_displaced_mesh = 1
[]
[SED_PPN_I] #CICE
type = ElementalVariableValue
variable = SED
elementid = 2984
use_displaced_mesh = 1
[]
[zz_OFract_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfract_total
elementid = 2981
use_displaced_mesh = 1
[]
[zz_OGain_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfgain_total
elementid = 2981
use_displaced_mesh = 1
[]
#######################################
[max_clad_SED]
type = ElementExtremeValue
block = 'clad'
variable = SED
value_type = max
[]
#Post processor to calculate radial average enthalpy. This postprocessor isnt available yet in BISON
[z_RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.3
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = z_RAE
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_diameter'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_pellet_diameter'
[]
#Location of peak power node at appoximately 0.3 m in mesh
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = 'outfile_radial_temp'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
csv = true
#exodus = true
color = false
[outfile_clad_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_pellet_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_radial_temp]
type = CSV
end_time = -100000
[]
[console]
type = Console
output_linear = true
max_rows = 10
[]
[checkpoint]
type = Checkpoint
num_files = 2
file_base = recover_files
[]
[chkfile]
type = CSV
show = 'ave_temp_interior fis_gas_released FCT average_burnup peak_RAE'
execute_on = 'FINAL'
[]
[exodus]
type = Exodus
time_step_interval = 4
end_time = 125193700
[]
[exodus_RIA]
type = Exodus
time_step_interval = 3
start_time = 125193695
[]
[checkpoint_RIA]
type = Checkpoint
file_base = recover_files_RIA
sync_times = '124761600 125107200 125193600 125193650 125193700 125193700.06 125193700.07 125193700.08 125193700.09 125193700.10 125193700.20 125193700.30 125193700.40 125193700.50 125193700.60 125193700.70 125193700.80 125193700.90 125193701.00 125193701.25 125193701.50 125193701.75 125193702.00 125193702.25 125193702.50 125193702.75 125193703.00 125193704.00 125193705.00'
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
show_material_props = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03_ccm.i)
# This file was created using BIF with the following inputs:
# FK03/FK03.var - md5sum: 63fb064f9380e246b80d3fb7762c0b71
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_hmode]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htype]
order = CONSTANT
family = MONOMIAL
[]
[critical_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[coolant_channel_htc]
type = MaterialRealAux
variable = coolant_channel_htc
property = coolant_channel_htc
boundary = 2
[]
[coolant_channel_hmode]
type = MaterialRealAux
variable = coolant_channel_hmode
property = coolant_channel_hmode
boundary = 2
[]
[coolant_channel_htype]
type = MaterialRealAux
variable = coolant_channel_htype
property = coolant_channel_htype
boundary = 2
[]
[critical_heat_flux]
type = MaterialRealAux
variable = critical_heat_flux
property = critical_heat_flux
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[CoolantChannel]
[clad_outer_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 295
inlet_pressure = 0.1E6 # Pa
inlet_massflux = 100.0 # kg/m^2-sec
rod_diameter = 1.10e-2 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
chf_scalef = 5.0
htc_correlation_type = 9
chf_correlation_type = 5
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 550000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK6/FK06.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy '
'elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy '
'strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz '
'stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz '
'creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage '
'peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_RIA.i)
# REP RIA Base input
clad_block_name = 1
fuel_block_name = 3
# GlobalParams parameters
displacements_option = 'disp_x disp_y'
# Mesh parameters
nx_p = 11
ny_cu = 3
ny_cl = 3
nx_c = 4
clad_bot_gap_height = 0.003 # m
bottom_clad_height = 0.0015 # m
top_clad_height = 0.0015 # m
patch_size = 40
# Cladding geometry
clad_inner_radius = 0.0041178 # m
clad_outer_radius = 0.0047549 # m
# Contact
contact_penalty = 1e10 # (-)
normalize_contact_penalty_option = false
normal_smoothing_distance = 0.1 # m
# Relocation
burnup_relocation_stop = 0.0 # FIMA
# BC boundary names
coolantPressure_boundary = '1 2 3'
convective_clad_surface_boundary = '1 2 3'
PP_temperature = plenum_temperature
PP_volume = plenum_volume
# Coolant channel parameters
inlet_massflux = 3533 # kg/m^2-sec Based on flow rate provided and flow area and estimated density of 885.1 kg/m^3
flow_area = 8.74855e-5 # m^2
heated_diameter = 1.172526e-2 # m
hydraulic_diameter = 4.7e-3 # m
heated_perimeter = 2.984513e-2 # m
coolant_material = 'sodium'
heat_transfer_mode = 0
CC_number_axial_zone = 50
rod_pitch = 1.26e-2 # m
rod_diameter = 0.0095 # m
# Eigenstrain names
fuel_volumetric_swelling_eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
fuel_thermal_expansion_eigenstrain_name = 'fuel_thermal_eigenstrain'
fuel_relocation_eigenstrain_name = 'fuel_relocation_eigenstrain'
clad_irradiation_swelling_eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
clad_thermal_expansion_eigenstrain_name = 'clad_thermal_eigenstrain'
# Materials parameters
fuel_elasticity_tensor_type = UO2ElasticityTensor
gbs_model_option = false
grain_radius_const = 5.0e-6 # m
clad_inelastic_models_type = 'clad_zryplasticity' #only use plasticity
cold_work_factor = 0.5 # (-)
oxygen_concentration2 = 0.0
# Numerical options
damper_max_temperature_value = 3200 # K
damper_min_temperature_value = 200 # K
nl_abs_tol = 1e-10
dtmax = 10 # s
TimeStepper_dt = 10 # s
TimeStepper_optimal_iterations = 20
TimeStepper_max_function_change = 1e5
# Postprocessor parameters
fis_gas_grain_type = ElementIntegralFisGasGrainSifgrs
fis_gas_boundary_type = ElementIntegralFisGasBoundarySifgrs
# Outputs options
color_option = true
chkfile_show = 'plenum_temperature fission_gas_released_percentage average_centerline_fuel_temperature average_burnup peak_RAE'
[GlobalParams]
density = ${initial_fuel_density}
volumetric_locking_correction = false
[]
[Problem]
restart_file_base = '${id_recover}_recover_files_cp/LATEST'
[]
[Mesh]
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = ${nx_p}
ny_p = ${ny_p}
ny_cu = ${ny_cu}
ny_c = ${ny_c}
ny_cl = ${ny_cl}
nx_c = ${nx_c}
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_quantity = ${pellet_quantity}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_bot_gap_height = ${clad_bot_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${bottom_clad_height}
top_clad_height = ${top_clad_height}
elem_type = QUAD8
[]
patch_size = ${patch_size}
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[SED]
order = CONSTANT
family = MONOMIAL
block = ${clad_block_name}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = ${fuel_block_name}
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
[]
[clad]
block = ${clad_block_name}
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz plastic_strain_xx plastic_strain_yy plastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx
elastic_strain_yy elastic_strain_zz hoop_stress'
[]
[]
[AuxKernels]
[total_hoop_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_hoop_strain
scalar_type = HoopStress
execute_on = timestep_end
block = ${clad_block_name}
[]
[total_axial_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_axial_strain
scalar_type = AxialStress
execute_on = timestep_end
block = ${clad_block_name}
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
normal_smoothing_distance = ${normal_smoothing_distance}
[]
[]
[ThermalContact]
[thermal_contact]
normal_smoothing_distance = ${normal_smoothing_distance}
[]
[]
[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
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
inlet_massflux = ${inlet_massflux}
flow_area = ${flow_area}
heated_diameter = ${heated_diameter}
hydraulic_diameter = ${hydraulic_diameter}
heated_perimeter = ${heated_perimeter}
heat_transfer_mode = ${heat_transfer_mode}
# oxide_thickness = oxide_thickness # coupled oxide_thickness
number_axial_zone = ${CC_number_axial_zone}
rod_pitch = ${rod_pitch}
rod_diameter = ${rod_diameter}
[]
[]
[Materials]
[fuel_volumetric_swelling]
include_solid_swelling = true
include_densification = true
[]
[fission_gas_release]
grain_radius_const = ${grain_radius_const}
transient_option = MICROCRACKING_BURNUP
[]
[clad_zrycreep]
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
cold_work_factor = ${cold_work_factor}
oxygen_concentration = ${oxygen_concentration}
matpro_poissons_ratio = true
matpro_youngs_modulus = true
[]
[clad_zryplasticity]
oxygen_concentration = ${oxygen_concentration2}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = ${damper_max_temperature_value}
min_value = ${damper_min_temperature_value}
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[gap_cond]
type = ElementalVariableValue
variable = gap_cond
elementid = ${gap_cond_elementid}
use_displaced_mesh = 1
[]
[creep_hoop_strain]
type = ElementalVariableValue
variable = creep_strain_zz
elementid = ${creep_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[elastic_hoop_strain]
type = ElementalVariableValue
variable = elastic_strain_zz
elementid = ${elastic_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[plastic_hoop_strain]
type = ElementalVariableValue
variable = plastic_strain_zz
elementid = ${plastic_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[total_hoop_strain]
type = ElementalVariableValue
variable = total_hoop_strain
elementid = ${total_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[clad_hoop_stress]
type = ElementalVariableValue
variable = hoop_stress
elementid = ${clad_hoop_stress_elementid}
use_displaced_mesh = 1
[]
[clad_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${clad_axial_elongation_nodeid}
use_displaced_mesh = 1
[]
[clad_oxide_thickness]
type = ElementalVariableValue
variable = oxide_thickness
elementid = ${clad_oxide_thickness_elementid}
use_displaced_mesh = 1
[]
[clad_coolant_htc]
type = ElementalVariableValue
variable = clad_coolant_htc
elementid = ${clad_coolant_htc_elementid}
use_displaced_mesh = 1
[]
[coolant_temperature]
type = ElementalVariableValue
variable = coolant_temperature
elementid = ${coolant_temperature_elementid}
use_displaced_mesh = 1
[]
[fuel_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${fuel_axial_elongation_nodeid}
[]
[clad_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = ${clad_radial_elongation_nodeid}
[]
[fuel_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = ${fuel_radial_elongation_nodeid}
[]
[SED_PPN_O]
type = ElementalVariableValue
variable = SED
elementid = ${SED_PPN_O_elementid}
use_displaced_mesh = 1
[]
[SED_PPN_I]
type = ElementalVariableValue
variable = SED
elementid = ${SED_PPN_I_elementid}
use_displaced_mesh = 1
[]
[OFract_PPN_O]
type = ElementalVariableValue
variable = oxywtfract_total
elementid = ${OFract_PPN_O_elementid}
use_displaced_mesh = 1
[]
[OGain_PPN_O]
type = ElementalVariableValue
variable = oxywtfgain_total
elementid = ${OGain_PPN_O_elementid}
use_displaced_mesh = 1
[]
[max_clad_SED]
type = ElementExtremeValue
block = ${clad_block_name}
variable = SED
value_type = max
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temperature
radial_direction = x
axial_direction = y
axial_position = ${RAE_axial_position}
temperature_name = temperature
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temperature]
type = NodalValueSampler
block = ${fuel_block_name}
sort_by = y
variable = temperature
execute_on = timestep_end
outputs = 'outfile_radial_temperature'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
[outfile_oxide_thickness]
type = CSV
file_base = '${id}_oxide_thickness_csv'
sync_times = ${outfile_oxide_thickness_sync_times}
sync_only = true
[]
[outfile_radial_temperature]
type = CSV
file_base = '${id}_radial_temperature_csv'
enable = false
[]
[exodus]
end_time = ${exodus_end_time}
[]
[exodus_RIA]
type = Exodus
file_base = '${id}_exodus_RIA'
time_step_interval = 2
start_time = ${RIA_start_time}
[]
[]
(test/tests/radial_avg_fuel_enthalpy/radial_avg_enthalpy.i)
# Test to calculate the radial average fuel enthalpy (RAE) of UO2 fuel using a steady-state
# radial temperature solution with uniform heat generation.
# The mesh is a 31x1 RZ section of fuel with a radius of 5mm
# The uniform heat generation term is 192000000 W/m^3
# The thermal conductivity is 1 W/m/K
# Right boundary condition is 300K
# The analytical solution for this temperature profile is T(r)=((qdot*r0^2)/(4*k))*(1-r^2/r0^2)+T_r0
# With these parameters the temperture at the centerline is 1500K
#
# The enthalpy of UO2 is calculated using equation from
# Kerrisk, J. F., & Clifton, D. G. (1972). Smoothed values of the enthalpy and heat capacity of UO2. Nuclear Technology, 16(3), 531-535.
#
# H(T)=K1*Theta/(e^(Theta/T)-1)+(K2*T^2/2)+(Y*K3*e^(-E_d/(R*T))/2)
# H is fuel enthalpy in J/kg
# T is temperature in K
# Y is oxygen-to-metal ratio, usually 2.0
# R is universal gas constant = 8.3143 J/mol/K
# Theta = Einstein Temperature 535.285 K
# E_d = activation energy for Frenkel defects 1.577e5 J/mol
# K1=296.7 J/kg/K
# K2=2.43e-2 J/kg/K^2
# K3=8.745e7 J/kg
#
# Using 31 elements through the fuel the analytical and BISON simulation result in:
#
# Analytical: 208320.8 J/kg
# BISON: 208320.6 J/kg
[Mesh]
coord_type = RZ
[line]
type = GeneratedMeshGenerator
dim = 1
nx = 31
xmin = 0.0
xmax = 0.005
elem_type = EDGE2
[]
[]
[Variables]
[temp]
initial_condition = 300.0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_source_fuel]
type = HeatSource
variable = temp
block = '0'
value = 192000000
[]
[]
[BCs]
[temp_right]
type = DirichletBC
boundary = right
variable = temp
value = 300
[]
[]
[Materials]
[thermal]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '1.0'
[]
[]
[Executioner]
type = Steady
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-6
nl_max_its = 20
nl_rel_tol = 1e-8
[]
[Postprocessors]
[radial_average_enthalpy]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
temperature_name = temp
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
sort_by = y
variable = temp
outputs = dummy #this will prevent the VectorPostprocessor from outputing CSV files every timestep
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
csv = true
exodus = false
[dummy]
type = CSV
enable = 0
[]
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/REP_Na_4.i)
# REP Na 4 Rodlet Base Irradiation
initial_fuel_density = 10476.35
[GlobalParams]
density = ${initial_fuel_density} # assumed TD = 10970
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = AugmentedLagrangianContactProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
maximum_lagrangian_update_iterations = 200
acceptable_iterations = 30
acceptable_multiplier = 5
[]
[Mesh]
coord_type = RZ
patch_size = 40
#patch_update_strategy = auto
#partitioner = centroid
#centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = REP_Na4.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.15
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
initial_condition = 5.0e-6 # Assume Grain size 10 microns
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[fuel_cond]
order = CONSTANT
family = MONOMIAL
[]
[swelling_strain]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_axial_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_flux]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_hmode]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htype]
order = CONSTANT
family = MONOMIAL
[]
[critical_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_mag]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[SED]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = REPNa4_power_history_Full.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = REPNa4_axial_peaking_Full.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # inlet coolant pressure evolution
type = PiecewiseLinear
scale_factor = 1.0
xy_data = '0 101325
8640 15499970
124675200 15499970
124718400 101325
125193600 101325
125193610 101325
125193650 500008
125193700 500008
125193900 500008
125194000 101325
125194100 101325'
[]
[temp_ramp] # inlet coolant temp evolution
type = PiecewiseLinear
scale_factor = 0.985
xy_data = '0 293.15
8640 591
20476800 591
21859200 600
47692800 600
51840000 593
72144000 593
73440000 586
96940800 586
99360000 583
124675200 583
124761600 293.15
125193600 293.15
125193650 553.15
125193900.0 553.150
125194000.0 293.150
125194100.0 293.150'
[]
[burnup_GWd]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz axial_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 'clad'
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz plastic_strain_xx plastic_strain_yy plastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx
elastic_strain_yy elastic_strain_zz hoop_stress axial_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.5678974
a_lower = 0.0045
fuel_inner_radius = 0
fuel_outer_radius = 0.0040959
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0449 0.9551 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_profile
factor = 3e13 #n/m2-s
block = 'clad'
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
block = 'clad'
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[fuel_conductance]
type = MaterialRealAux
property = thermal_conductivity
variable = fuel_cond
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[swelling_strain]
type = MaterialRealAux
property = volumetric_swelling_strain
variable = swelling_strain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = axial_creep_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = hoop_plastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = axial_plastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[total_axial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_axial_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = axial_elastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[plastic_strain_mag]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_mag
block = clad
execute_on = timestep_end
[]
[clad_coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = clad_coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[clad_coolant_flux]
type = MaterialRealAux
property = output_heat_flux
variable = clad_coolant_flux
boundary = 2
[]
[coolant_channel_hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = coolant_channel_hmode
boundary = 2
[]
[coolant_channel_htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = coolant_channel_htype
boundary = 2
[]
[critical_heat_flux]
type = MaterialRealAux
property = critical_heat_flux
variable = critical_heat_flux
boundary = 2
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[]
[ofract_total]
type = MaterialRealAux
property = current_oxygen_weight_frac_total
variable = oxywtfract_total
execute_on = timestep_end
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
property = oxygen_weight_frac_gained_total
variable = oxywtfgain_total
execute_on = timestep_end
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
property = fract_beta_phase
variable = fract_beta_phase
block = 'clad'
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 210 #10
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 10.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[pellet_clad_mechanical_2]
primary = 5
secondary = 410
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2.0e-6
roughness_secondary = 0.5e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
emissivity_primary = 0.800 #Emissivity for fuel
emissivity_secondary = 0.325 #Emissivity for clad
refab_time = 125107200
refab_gas_types = He
refab_fractions = 1
contact_coef = 20 #10 default
[]
[]
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_temperature = 293.15
initial_pressure = 2.60e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior #plenumTemp
volume = gas_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
# extra_vector_tags = 'ref'
refab_time = 125107200
refab_pressure = 0.301e6
refab_temperature = 293.15
refab_volume = 2.0e-6
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp # K
inlet_pressure = pressure_ramp # Pa
inlet_massflux = 3244.044104 # kg/m^2-sec
rod_diameter = 0.00951 # m
rod_pitch = 1.26e-2 # m
coolant_material = 'water'
compute_enthalpy = true
oxide_thickness = oxide_thickness # coupled oxide_thickness
number_axial_zone = 50
[]
#
# [convective_clad_surface_sodium] # apply convective boundary to clad outer surface
# boundary = '1 2 3'
# variable = temp
# inlet_temperature = temp_ramp # K
# inlet_pressure = pressure_ramp # Pa
# inlet_massflux = 3533 # kg/m^2-sec Based on flow rate provided and flow area and estimated density of 885.1 kg/m^3
# flow_area = 8.74855e-5 #m^2
# heated_diameter = 1.172526e-2 #m
# hydraulic_diameter = 4.7e-3 #m
# heated_perimeter = 2.984513e-2 #m
# coolant_material = 'sodium'
# compute_enthalpy = true
# heat_transfer_mode = 0
# oxide_thickness = oxide_thickness # coupled oxide_thickness
# number_axial_zone = 50
# rod_diameter = 0.0095 # m
# htc_correlation_type = 2
# []
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
strain_free_density = ${initial_fuel_density}
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.045
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
matpro_poissons_ratio = 1
matpro_youngs_modulus = 1
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.0208
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = 'pin_geometry'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
initial_fuel_density = 10476.35
total_densification = 0.00675
initial_porosity = 0.045
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
fission_rate = fission_rate
initial_porosity = 0.045
grain_radius = grain_radius
gbs_model = true
transient_option = NO_TRANSIENT
[]
[clad_density]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6550
[]
[clad_thermal]
type = ZryThermal
block = 'clad'
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
temperature = temp
matpro_poissons_ratio = true
matpro_youngs_modulus = true
cold_work_factor = 0.5
fast_neutron_fluence = fast_neutron_fluence
block = 'clad'
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep clad_zryplasticity'
block = 'clad'
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
creeprate_scale_factor = 1
model_irradiation_creep = 1
model_primary_creep = 1
model_thermal_creep = 1
max_inelastic_increment = 0.0002
[]
[clad_zryplasticity]
type = ZryPlasticityUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.5
plasticity_model_type = MATPRO
zircaloy_alloy_type = 4
max_inelastic_increment = 0.0002
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00417789
clad_outer_radius = 0.00475615
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
oxygen_weight_fraction_initial = 0.0012
[]
[phase]
type = ZrPhase
block = 'clad'
numerical_method = 2
temperature = temp
[]
[StrainEnergyDensity]
type = StrainEnergyDensity
block = 'clad'
incremental = 1
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200 # The maximum permissible iterative value for the variable.
min_value = 200 # The minimum permissible iterative value for the variable.
variable = temp # The name of the variable that this damper operates on
[]
[contact_slip]
type = ContactSlipDamper
primary = 5
secondary = 10
min_damping_factor = 0.05
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'contact'
contact_line_search_allowed_lambda_cuts = 0
contact_line_search_ltol = 0.5
verbose = true
l_max_its = 100
l_tol = 1e-3
nl_max_its = 40
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0
end_time = 125193600 #125194100 is the end time for the RIA
dtmax = 1e6
dtmin = 1e-7
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e3
optimal_iterations = 100
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = power_profile
max_function_change = 1e6
force_step_every_function_point = true
timestep_limiting_postprocessor = material_timestep
time_t = '125193610 125193620 125193630 125193640 125193650 125193660 125193670 125193680'
time_dt = '10 10 10 10 10 10 10 10'
growth_factor = 5
[]
[Quadrature]
order = FIFTH #SEVENTH
side_order = SEVENTH #Comment out if order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9 #For RIA the node number is ##***8479***##
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[1_rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[3_burnup_GWd]
type = FunctionValuePostprocessor
function = burnup_GWd
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = 'clad'
variable = vonmises_stress
[]
[z_average_RPF]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = RPF
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = 'clad'
[]
## Nodal values
[FCT] #fuel centerline temperature
type = NodalVariableValue
variable = temp
nodeid = 3866 #(0, 0.303375, 0)
[]
[FST] #fuel surface temperature
type = NodalVariableValue
variable = temp
nodeid = 3823 #(0.0040959, 0.303375, 0)
[]
[CIST] #clad inner surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9557 #(0.0041779, 0.305106, 0)
[]
[COST] #clad outer surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9547 #(0.00475615, 0.305106, 0)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 3823 #(0.0040959, 0.303375, 0)
use_displaced_mesh = true
[]
#######################################
[qpoint_penetration] #FOCE
type = ElementalVariableValue
variable = qpoint_penetration
elementid = 1200
use_displaced_mesh = 1
[]
[penetration] #FOCN
type = NodalVariableValue
variable = penetration
nodeid = 3823
use_displaced_mesh = 1
[]
[contact_pressure] #FOCN
type = NodalVariableValue
variable = contact_pressure
nodeid = 3823
use_displaced_mesh = 1
[]
[gap_cond] #FOCE
type = ElementalVariableValue
variable = gap_cond
elementid = 1200
use_displaced_mesh = 1
[]
[creep_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_creep_strain
elementid = 2981
use_displaced_mesh = 1
[]
[elastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_elastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[plastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_plastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[total_hoop_strain] #COCE
type = ElementalVariableValue
variable = total_hoop_strain
elementid = 2981
use_displaced_mesh = 1
[]
[clad_hoop_stress] #COCE
type = ElementalVariableValue
variable = hoop_stress
elementid = 2981
use_displaced_mesh = 1
[]
[clad_axial_elongation] #COTN
type = NodalVariableValue
variable = disp_y
nodeid = 10755
use_displaced_mesh = 1
[]
[clad_oxide_thickness] #COCE
type = ElementalVariableValue
variable = oxide_thickness
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_htc] #COCE
type = ElementalVariableValue
variable = clad_coolant_htc
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_temp] #COCE
type = ElementalVariableValue
variable = coolant_temp
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_flux] #COCE
type = ElementalVariableValue
variable = clad_coolant_flux
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_hmode] #COCE
type = ElementalVariableValue
variable = coolant_channel_hmode
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_htype] #COCE
type = ElementalVariableValue
variable = coolant_channel_htype
elementid = 2981
use_displaced_mesh = 1
[]
[critical_heat_flux] #COCE
type = ElementalVariableValue
variable = critical_heat_flux
elementid = 2981
use_displaced_mesh = 1
[]
[fuel_centerline_temp] #FICN
type = NodalVariableValue
variable = temp
nodeid = 3866
[]
[fuel_surface_temp] #FOCN
type = NodalVariableValue
variable = temp
nodeid = 3823
[]
[clad_inner_surface_temp] #CICN
type = NodalVariableValue
variable = temp
nodeid = 9557
[]
[clad_outer_surface_temp] #COCN
type = NodalVariableValue
variable = temp
nodeid = 9547
[]
[fuel_axial_elongation] #FOTN
type = NodalVariableValue
variable = disp_y
nodeid = 7739
[]
[clad_radial_elongation] #COCN
type = NodalVariableValue
variable = disp_x
nodeid = 9547
[]
[fuel_radial_elongation] #FOCN
type = NodalVariableValue
variable = disp_x
nodeid = 3823
[]
[SED_PPN_O] #COCE
type = ElementalVariableValue
variable = SED
elementid = 2981
use_displaced_mesh = 1
[]
[SED_PPN_I] #CICE
type = ElementalVariableValue
variable = SED
elementid = 2984
use_displaced_mesh = 1
[]
[zz_OFract_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfract_total
elementid = 2981
use_displaced_mesh = 1
[]
[zz_OGain_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfgain_total
elementid = 2981
use_displaced_mesh = 1
[]
#######################################
[max_clad_SED]
type = ElementExtremeValue
block = 'clad'
variable = SED
value_type = max
[]
#Post processor to calculate radial average enthalpy. This postprocessor isnt available yet in BISON
[z_RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.3
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = z_RAE
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_diameter'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_pellet_diameter'
[]
#Location of peak power node at appoximately 0.3 m in mesh
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = 'outfile_radial_temp'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
csv = true
#exodus = true
color = false
[outfile_clad_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_pellet_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_radial_temp]
type = CSV
end_time = -100000
[]
[console]
type = Console
output_linear = true
max_rows = 10
[]
[chkfile]
type = CSV
show = 'ave_temp_interior fission_gas_released FCT average_burnup peak_RAE'
execute_on = 'FINAL'
[]
[exodus]
type = Exodus
time_step_interval = 4
end_time = 125193700
[]
[exodus_RIA]
type = Exodus
time_step_interval = 3
start_time = 125193695
[]
[checkpoint_RIA]
type = Checkpoint
file_base = recover_files_RIA
sync_times = '124761600 125107200 125193600 125193650 125193700 125193700.06 125193700.07 125193700.08 125193700.09 125193700.10 125193700.20 125193700.30 125193700.40 125193700.50 125193700.60 125193700.70 125193700.80 125193700.90 125193701.00 125193701.25 125193701.50 125193701.75 125193702.00 125193702.25 125193702.50 125193702.75 125193703.00 125193704.00 125193705.00'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
show_material_props = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK4/FK04.i)
# This file was created using BIF with the following inputs:
# FK04/FK04.var - md5sum: 789d603cfbdaaeb2625ea98056214f6f
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.053182
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
block = '1 3'
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.5e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.20e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03.i)
# This file was created using BIF with the following inputs:
# FK03/FK03.var - md5sum: 63fb064f9380e246b80d3fb7762c0b71
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
block = '1 3'
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
initial_moles = initial_moles
gas_released = fission_gas_released
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
block = '1 3'
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 550000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01.i)
# This file was created using BIF with the following inputs:
# FK01.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.04298
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = 1
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK7/FK07.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
# Other changes were added after that process.
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_2D_Base_Irradiation_Option.i)
# REP Base irradiation 2D option file
clad_block_name = 1
fuel_block_name = 3
# GlobalParams options
displacements_option = 'disp_x disp_y'
# Mesh parameters
nx_p = 11
ny_cu = 3
ny_cl = 3
nx_c = 4
clad_bot_gap_height = 0.003 # m
bottom_clad_height = 0.0015 # m
top_clad_height = 0.0015 # m
patch_size = 40
# Cladding material properties
cold_work_factor = 0.5 # (-)
oxygen_concentration = 0.0
# Contact
normalize_contact_penalty_option = false
contact_penalty = 1e10 # (-)
normal_smoothing_distance = 0.1 # m
# BC parameters
coolantPressure_boundary = '1 2 3'
convective_clad_surface_boundary = '1 2 3'
PP_temperature = plenum_temperature
PP_volume = plenum_volume
# Eigenstrain names
fuel_volumetric_swelling_eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
fuel_thermal_expansion_eigenstrain_name = 'fuel_thermal_eigenstrain'
fuel_relocation_eigenstrain_name = 'fuel_relocation_eigenstrain'
clad_irradiation_swelling_eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
clad_thermal_expansion_eigenstrain_name = 'clad_thermal_eigenstrain'
# Materials parameters
fuel_elasticity_tensor_type = UO2ElasticityTensor
# Numerical options
damper_max_temperature_value = 3200 # K
damper_min_temperature_value = 200 # K
nl_abs_tol = 1e-10
TimeStepper_optimal_iterations = 100
TimeStepper_max_function_change = 1e6
# Postprocessor parameters
fis_gas_grain_type = ElementIntegralFisGasGrainSifgrs
fis_gas_boundary_type = ElementIntegralFisGasBoundarySifgrs
# Outputs options
color_option = true
chkfile_show = 'plenum_temperature fission_gas_released_percentage average_centerline_fuel_temperature average_burnup peak_RAE'
[GlobalParams]
density = ${initial_fuel_density}
volumetric_locking_correction = false
[]
[Mesh]
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = ${nx_p}
ny_p = ${ny_p}
ny_cu = ${ny_cu}
ny_c = ${ny_c}
ny_cl = ${ny_cl}
nx_c = ${nx_c}
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_quantity = ${pellet_quantity}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_bot_gap_height = ${clad_bot_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${bottom_clad_height}
top_clad_height = ${top_clad_height}
elem_type = QUAD8
[]
patch_size = ${patch_size}
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[SED]
order = CONSTANT
family = MONOMIAL
block = ${clad_block_name}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = ${fuel_block_name}
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
[]
[clad]
block = ${clad_block_name}
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz plastic_strain_xx plastic_strain_yy plastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx
elastic_strain_yy elastic_strain_zz hoop_stress'
[]
[]
[AuxKernels]
[total_hoop_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_hoop_strain
scalar_type = HoopStress
execute_on = timestep_end
block = ${clad_block_name}
[]
[total_axial_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_axial_strain
scalar_type = AxialStress
execute_on = timestep_end
block = ${clad_block_name}
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
normal_smoothing_distance = ${normal_smoothing_distance}
[]
[]
[ThermalContact]
[thermal_contact]
normal_smoothing_distance = ${normal_smoothing_distance}
[]
[]
[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
[]
[]
[Materials]
[fuel_volumetric_swelling]
include_solid_swelling = true
include_densification = true
[]
[fission_gas_release]
transient_option = NO_TRANSIENT
[]
[clad_zrycreep]
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
cold_work_factor = ${cold_work_factor}
oxygen_concentration = ${oxygen_concentration}
matpro_poissons_ratio = false
matpro_youngs_modulus = true
[]
[clad_zryplasticity]
oxygen_concentration = ${oxygen_concentration}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = ${damper_max_temperature_value}
min_value = ${damper_min_temperature_value}
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[gap_cond]
type = ElementalVariableValue
variable = gap_cond
elementid = ${gap_cond_elementid}
use_displaced_mesh = 1
[]
[creep_hoop_strain]
type = ElementalVariableValue
variable = creep_strain_zz
elementid = ${creep_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[elastic_hoop_strain]
type = ElementalVariableValue
variable = elastic_strain_zz
elementid = ${elastic_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[plastic_hoop_strain]
type = ElementalVariableValue
variable = plastic_strain_zz
elementid = ${plastic_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[total_hoop_strain]
type = ElementalVariableValue
variable = total_hoop_strain
elementid = ${total_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[clad_hoop_stress]
type = ElementalVariableValue
variable = hoop_stress
elementid = ${clad_hoop_stress_elementid}
use_displaced_mesh = 1
[]
[clad_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${clad_axial_elongation_nodeid}
use_displaced_mesh = 1
[]
[clad_oxide_thickness]
type = ElementalVariableValue
variable = oxide_thickness
elementid = ${clad_oxide_thickness_elementid}
use_displaced_mesh = 1
[]
[clad_coolant_htc]
type = ElementalVariableValue
variable = clad_coolant_htc
elementid = ${clad_coolant_htc_elementid}
use_displaced_mesh = 1
[]
[coolant_temperature]
type = ElementalVariableValue
variable = coolant_temperature
elementid = ${coolant_temperature_elementid}
use_displaced_mesh = 1
[]
[fuel_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${fuel_axial_elongation_nodeid}
[]
[clad_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = ${clad_radial_elongation_nodeid}
[]
[fuel_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = ${fuel_radial_elongation_nodeid}
[]
[SED_PPN_O]
type = ElementalVariableValue
variable = SED
elementid = ${SED_PPN_O_elementid}
use_displaced_mesh = 1
[]
[SED_PPN_I]
type = ElementalVariableValue
variable = SED
elementid = ${SED_PPN_I_elementid}
use_displaced_mesh = 1
[]
[OFract_PPN_O]
type = ElementalVariableValue
variable = oxywtfract_total
elementid = ${OFract_PPN_O_elementid}
use_displaced_mesh = 1
[]
[OGain_PPN_O]
type = ElementalVariableValue
variable = oxywtfgain_total
elementid = ${OGain_PPN_O_elementid}
use_displaced_mesh = 1
[]
#######################################
[max_clad_SED]
type = ElementExtremeValue
block = ${clad_block_name}
variable = SED
value_type = max
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temperature
radial_direction = x
axial_direction = y
axial_position = ${RAE_axial_position}
temperature_name = temperature
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temperature]
type = NodalValueSampler
block = ${fuel_block_name}
sort_by = y
variable = temperature
execute_on = timestep_end
outputs = 'outfile_radial_temperature'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
[outfile_oxide_thickness]
type = CSV
file_base = '${id}_oxide_thickness_csv'
sync_times = ${outfile_oxide_thickness_sync_times}
sync_only = true
[]
[outfile_radial_temperature]
type = CSV
file_base = '${id}_radial_temperature_csv'
enable = false
[]
[checkpoint]
type = Checkpoint
num_files = 2
file_base = '${id}_recover_files'
sync_times = ${checkpoint_sync_times}
sync_only = true
[]
[exodus]
end_time = ${exodus_end_time}
[]
[exodus_RIA]
type = Exodus
file_base = '${id}_exodus_RIA'
time_step_interval = 2
start_time = ${RIA_start_time}
[]
[]