- burnup_functionBurnup function
C++ Type:BurnupFunctionName
Unit:(no unit assumed)
Controllable:No
Description:Burnup function
- heightHeight at which to compute the radial profile.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Height at which to compute the radial profile.
- quantityOne or more quantities to report: N155 N157 N235 N236 N238 N239 N240 N241 N242 fission_rate RPF burnup
C++ Type:MultiMooseEnum
Controllable:No
Description:One or more quantities to report: N155 N157 N235 N236 N238 N239 N240 N241 N242 fission_rate RPF burnup
RadialProfile
Reports spatially-varying information computed by BurnupFunction.
Description
Radial Profile reports radially-varying quantities as computed by BurnupFunction. For a given height, this VectorPostprocessor expects a list of quantities to report. These quantities are N235, N236, N238, N239, N239, N240, N241, N242, fission_rate, RPF, and burnup, which are U, U, Pu, Pu, Pu, Pu, Pu, the fission rate, the radial power factor, and the burnup, respectively.
Example Input Syntax
[VectorPostprocessors<<<{"href": "../../syntax/VectorPostprocessors/index.html"}>>>]
[radialProfile]
type = RadialProfile<<<{"description": "Reports spatially-varying information computed by BurnupFunction.", "href": "RadialProfile.html"}>>>
burnup_function<<<{"description": "Burnup function"}>>> = burnup
quantity<<<{"description": "One or more quantities to report: N155 N157 N235 N236 N238 N239 N240 N241 N242 fission_rate RPF burnup"}>>> = 'N235 N236 N238 N239 N240 N241 N242 fission_rate RPF burnup'
height<<<{"description": "Height at which to compute the radial profile."}>>> = 0.0041
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = timestep_end
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'radialProfile'
[]
[](test/tests/radial_power_factor/radial_profile.i)Input Parameters
- contains_complete_historyFalseSet this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation
Default:False
C++ Type:bool
Controllable:No
Description:Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation
- parallel_typeREPLICATEDSet how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is performed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function.
Default:REPLICATED
C++ Type:MooseEnum
Options:DISTRIBUTED, REPLICATED
Controllable:No
Description:Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is performed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function.
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
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/IFA_681/analysis/rod3/IFA_681_rod3.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2a/27_2a.i)
- (test/tests/radial_power_factor/offset.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2b/27_2b.i)
- (examples/Burnup_profile_displaced_mesh/RadialProfileSampler.i)
- (test/tests/radial_power_factor/radial_profile.i)
- (assessment/LWR/validation/HBEP/analysis/BK365/HBEP_BK365.i)
(test/tests/radial_power_factor/radial_profile.i)
#
# This tests the RadialProfile VectorPostprocessor. Isotope concentrations,
# fission_rate, radial power factor, and burnup are output. No analytic
# solution is known. This test demonstrates functionality and serves as
# a regression test.
#
[GlobalParams]
density = 10421.5
energy_per_fission = 3.2e-11 # J/fission
[]
[Mesh]
coord_type = RZ
[mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 4
xmin = 0.0
xmax = 0.0041
ymin = 0.0
ymax = 0.0082
[]
[]
[Variables]
[temp]
initial_condition = 293.15
[]
[]
[Functions]
[power_profile]
type = ParsedFunction
expression = 20674.327326148894
[]
[axial_peaking_factors]
type = PiecewiseLinear
x = '0.0 0.00205 0.0041 0.00615 0.0082'
y = '0.25 1.25 1.25 1.25 0.25' # Averages out to 1.0
axis = y
[]
[temp_ramp]
type = ParsedFunction
expression = 't+293.15'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = 0
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 5
a_upper = 0.0082
a_lower = 0.0
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1
isotopes = 'U235 U238'
isotope_fractions = '0.045 0.955'
RPF = RPF
[]
[]
# Define boundary conditions
[BCs]
[temp_top]
type = FunctionDirichletBC
boundary = top
variable = temp
function = temp_ramp
[]
[temp_bottom]
type = DirichletBC
boundary = bottom
variable = temp
value = 293.15
[]
[]
# Define material behavior models and input material property data
[Materials]
[thermal]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '1.0'
[]
[]
[Executioner]
type = Transient
# PETSC options
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = ' lu superlu_dist 51'
line_search = 'none'
# controls for linear iterations
l_max_its = 50
l_tol = 1e-3
# controls for nonlinear iterations
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-6
# time control
start_time = 0
end_time = 1e8
dtmax = 1e6
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
[]
[]
[VectorPostprocessors]
[radialProfile]
type = RadialProfile
burnup_function = burnup
quantity = 'N235 N236 N238 N239 N240 N241 N242 fission_rate RPF burnup'
height = 0.0041
execute_on = timestep_end
outputs = 'radialProfile'
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
output_linear = true
max_rows = 10
[]
[radialProfile]
type = CSV
execute_on = final
[]
[]
(assessment/LWR/validation/IFA_681/analysis/rod3/IFA_681_rod3.i)
# Halden test IFA-681, rod 3
initial_fuel_density = 10522
[GlobalParams]
density = ${initial_fuel_density}. # 96.0% 10960
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = 'mesh_ifa681r3_093_quad4.e'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.
[]
[]
[Functions]
[average_lhr]
type = PiecewiseLinear
data_file = 'alhr_history_ifa681r3.csv'
scale_factor = 1.e+03
format = columns
[]
[axial_scaling_lhr]
type = PiecewiseBilinear
data_file = 'peakfact_lhr_ifa681r3.csv'
axis = 1
[]
[coolant_inlet_temp]
type = PiecewiseLinear
data_file = 'coolant_inlet_temp_ifa681r3.csv'
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = 'fast_nflux_ifa681r3.csv'
scale_factor = 1.e+17
format = columns
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200. 0.'
y = ' 0. 1.'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
initial_condition = 6.55e-06
[]
[porosity]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
initial_condition = 0.039
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = 'clad'
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_3 pellet_type_4'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel_pellets]
add_variables = false
block = 'pellet_type_3 pellet_type_4'
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress strain_zz'
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain fuel_thermal_eigenstrain fuel_relocation_eigenstrain'
extra_vector_tags = 'ref'
[]
[clad]
add_variables = false
block = 'clad'
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_xx creep_strain_zz'
eigenstrain_names = 'clad_irradiation_growth_eigenstrain clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[uo2nat]
add_variables = false
block = 'pellet_type_2 pellet_type_5'
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
eigenstrain_names = 'uo2nat_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[al2o3]
add_variables = false
block = 'pellet_type_1 pellet_type_6'
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
eigenstrain_names = 'al2o3_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_]
type = NeutronHeatSource
variable = temp
block = 'pellet_type_3 pellet_type_4'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_3 pellet_type_4'
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
num_radial = 40
bias = 0.95
num_axial = 20
a_lower = 120.3e-03
a_upper = 520.5e-03
fuel_inner_radius = 0.
fuel_outer_radius = 4.095e-03
fuel_volume_ratio = 1.
isotopes = 'Gd155 Gd157 U235 U238'
isotope_fractions = '0.04 0.04 0.028 0.892 '
N155 = N155
N157 = N157
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.0e+7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
thermal_accommodation_model = TOPTAN
gas_thermal_conductivity_model = ADVANCED
kennard_coefficient = 0.2173
jump_distance_model = TOPTAN
roughness_primary = 1.0e-6
roughness_secondary = 2.0e-6
gap_conductance_model = TOPTAN
quadrature = true
normal_smoothing_distance = 0.1
[]
[pellet_to_pellet1]
type = GapHeatTransfer
variable = temp
primary = 21
secondary = 22
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet2]
type = GapHeatTransfer
variable = temp
primary = 23
secondary = 24
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet3]
type = GapHeatTransfer
variable = temp
primary = 25
secondary = 26
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet4]
type = GapHeatTransfer
variable = temp
primary = 27
secondary = 28
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet5]
type = GapHeatTransfer
variable = temp
primary = 29
secondary = 30
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[CoolantChannel]
# Halden HBWR under natural circulation (v=0.4m/s)
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_inlet_temp
inlet_pressure = 3.5e+06 # Pa
inlet_massflux = 360. # kg/m^2-s
flow_area = 0.000195
heated_diameter = 0.0261
heated_perimeter = 0.0298
hydraulic_diameter = 0.0261
htc_correlation_type = 2 # Jens-Lottes (recommended for Halden HBWR)
compute_enthalpy = true
linear_heat_rate = average_lhr
axial_power_profile = axial_scaling_lhr
oxide_thickness = oxide_thickness
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.5e+06
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.e+06
startup_time = 0.
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
## fuel ##
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_3 pellet_type_4'
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_3 pellet_type_4'
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_3 pellet_type_4'
temperature = temp
thermal_expansion_coeff = 10.0e-06
stress_free_temperature = 295.0
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
burnup_function = burnup
temperature = temp
gas_swelling_model_type = SIFGRS
block = 'pellet_type_3 pellet_type_4'
initial_fuel_density = 10522. # 96.0% 10960
initial_porosity = 0.040
total_densification = 0.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_3 pellet_type_4'
burnup_function = burnup
diameter = 8.19e-03
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
diametral_gap = 170.e-06
burnup_relocation_stop = 1e20
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
block = 'pellet_type_3 pellet_type_4'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.040
diff_coeff_option = TURNBULL_D1_D2
transient_option = NO_TRANSIENT
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_3 pellet_type_4'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = TOPTAN
Gd_content = 0.08
initial_porosity = 0.040
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_3 pellet_type_4'
strain_free_density = ${initial_fuel_density}
[]
## uo2nat ##
[uo2nat_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_2 pellet_type_5'
youngs_modulus = 2.0e+11
poissons_ratio = 0.345
[]
[uo2nat_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_2 pellet_type_5'
[]
[uo2nat_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_2 pellet_type_5'
temperature = temp
thermal_expansion_coeff = 10.e-06
stress_free_temperature = 295.0
eigenstrain_name = 'uo2nat_thermal_eigenstrain'
[]
[uo2nat_thermal]
type = HeatConductionMaterial
block = 'pellet_type_2 pellet_type_5'
thermal_conductivity = 3.
specific_heat = 300.
[]
[uo2nat_density]
type = StrainAdjustedDensity
block = 'pellet_type_2 pellet_type_5'
strain_free_density = ${initial_fuel_density}
[]
## al2o3 ##
[al2o3_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_1 pellet_type_6'
youngs_modulus = 3.0e+11
poissons_ratio = 0.21
[]
[al2o3_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_6'
[]
[al2o3_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1 pellet_type_6'
temperature = temp
thermal_expansion_coeff = 8.1e-06
stress_free_temperature = 295.0
eigenstrain_name = 'al2o3_thermal_eigenstrain'
[]
[al2o3_thermal]
type = HeatConductionMaterial
block = 'pellet_type_1 pellet_type_6'
thermal_conductivity = 18.
specific_heat = 880.
[]
[al2o3_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_6'
strain_free_density = 3800.
[]
## clad ##
[clad_elasticity]
type = ComputeIsotropicElasticityTensor
block = 'clad'
youngs_modulus = 7.5e+10
poissons_ratio = 0.3
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 'clad'
tangent_operator = elastic
inelastic_models = 'clad_creep'
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
temperature = temp
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
stress_free_temperature = 295
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_growth_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
use_coolant_channel = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
min_value = 295
max_value = 3000
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = ' lu superlu_dist 100'
l_tol = 1.e-02 # <--- l_tol is ignored when EW is used.
line_search = 'none'
l_max_its = 200
nl_max_its = 30
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
start_time = -200.
n_startup_steps = 1
end_time = 223062317.
#num_steps = 20000
dtmax = 5.e+05
dtmin = 1.
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.e+02
optimal_iterations = 25
iteration_window = 5
timestep_limiting_function = average_lhr
force_step_every_function_point = true
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = average_lhr
[]
[fuel_volume]
type = InternalVolume
boundary = 8
outputs = exodus
[]
[avg_gap_conductance]
type = SideAverageValue
boundary = 10
variable = gap_cond
[]
[TC_temp]
type = NodalVariableValue
variable = temp
nodeid = 797 # !! Mesh dependent
[]
[TCHoleBot_temp]
type = NodalVariableValue
variable = temp
nodeid = 50
[]
[TC_temp_node1]
type = NodalVariableValue
variable = temp
nodeid = 666
[]
[TC_temp_node2]
type = NodalVariableValue
variable = temp
nodeid = 665
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_3 pellet_type_4'
value_type = max
variable = temp
[]
[midplane_hoop_strain_outer]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = strain_zz
[]
[midplane_hoop_stress_outer]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = stress_zz
[]
[midplane_contact_pressure]
type = ElementalVariableValue
elementid = 189 # !! Mesh dependent
variable = contact_pressure
[]
[midplane_oxide_thickness]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = oxide_thickness
[]
[midplane_clad_outer_temp]
type = NodalVariableValue
nodeid = 1086 # !! Mesh dependent
variable = temp
[]
[midplane_clad_inner_temp]
type = NodalVariableValue
nodeid = 1088 # !! Mesh dependent
variable = temp
[]
[max_clad_outer_temp]
type = NodalExtremeValue
boundary = '1 2 3'
value_type = max
variable = temp
[]
[max_fuel_outer_temp]
type = NodalExtremeValue
boundary = 10
value_type = max
variable = temp
[]
[midplane_coolant_htc]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = coolant_htc
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_3 pellet_type_4'
temperature = temp
[]
[VectorPostprocessors]
[Concentrations]
type = RadialProfileSampler
variable = 'disp_x'
sort_by = 'id'
burnup_function = burnup
quantity = 'N155 N157 N235 N236 N238 N239 N240 N241 N242 RPF fission_rate ntot_hm burnup'
height = 0.2
execute_on = timestep_end
outputs = 'Concentrations'
[]
[True]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242 N155 N157'
height = 0.2
burnup_function = burnup
outputs = 'True'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 5
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage max_fuel_temp'
execute_on = 'FINAL'
[]
[Concentrations]
type = CSV
file_base = 'Concentrations/'
[]
[True]
type = CSV
file_base = 'True/'
[]
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2a/27_2a.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (200 MeV)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 9.5e-4
pellet_mesh_density = customize
ny_p = 8
nx_c = 4
nx_p = 12
pellet_outer_radius = 0.005305
ny_cu = 3
ny_c = 8
clad_bot_gap_height = 1e-3
pellet_quantity = 1
pellet_height = 0.0127
ny_cl = 3
plenum_fuel_ratio = 0.45
clad_gap_width = 9.5e-5
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 7.5e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0'
y = '0.02914 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
# Note: The U235 should be 13% but the model does not currently work above 12%
[Burnup]
[burnup]
block = 3
order = CONSTANT
family = MONOMIAL
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01594
a_lower = 0.00324
fuel_inner_radius = 0.0
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.12 0.88 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = 3
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
execute_on = timestep_begin
factor = 1.6e12 # (n/m2-s per W/m) used HALDEN fast flux
block = 1
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = 1
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = 1
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
roughness_coef = 3.2
roughness_primary = 2.0e-6
roughness_secondary = 1.0e-6
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_bc]
type = DirichletBC
variable = temp
boundary = '1 2 3'
value = 516.2 # Clad wall temp = 240+.4162*(LHR)^.75, where temp is C and LHR is kW/m
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.447e6 # Halden coolant pressure
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 5.0e5 # FUMEXII => 500 kPa pressure (He fill)
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
diameter = 10.61e-3
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =0.19e-3
relocation_activation1 = 5000
burnup_relocation_stop = 0.044
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 4.74e8
[TimeSteppers]
[ts1]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
outputs = exodus
[]
[intg_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[intg_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[fuel_center_temperature]
type = NodalVariableValue
nodeid = 467 # GlobalNodeID 468
variable = temp
execute_on = 'initial timestep_end'
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = '3'
[]
[]
[VectorPostprocessors]
[True]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242 RPF'
height =0.00635
burnup_function = burnup
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fuel_center_temperature rod_total_power'
execute_on = 'FINAL'
[]
[]
(test/tests/radial_power_factor/offset.i)
[Mesh]
[mesh]
type = Layered2DMeshGenerator
num_sectors = 10
slices_per_block = '2'
pellet_bottom_coor = 0.0
#pellet_mesh_density = medium
include_plenum = false
include_clad = false
fuel_height = 10e-3
pellet_outer_radius = 0.0041
axial_direction = z
[]
[translate]
type = TransformGenerator
input = mesh
transform = translate
vector_value = '0.0041 0.00205 0'
[]
[]
[Problem]
solve = false
[]
[Functions]
[power_profile]
type = ParsedFunction
expression = 20674.327326148894
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1.0
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 10e-3
a_lower = 0.0
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
axial_direction = z
offset = '0.0041 0.00205 0'
RPF = RPF
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
density = 10421.5
[]
[]
[Executioner]
type = Transient
# time control
start_time = 0
end_time = 1e8
dtmax = 1e6
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
[]
[]
[VectorPostprocessors]
[radialProfile]
type = RadialProfile
burnup_function = burnup
quantity = 'fission_rate RPF burnup'
height = 10e-3
execute_on = timestep_end
outputs = 'radialProfile'
[]
[]
[Outputs]
[radialProfile]
type = CSV
execute_on = final
[]
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2b/27_2b.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} # 95% TD assuming TD=10980
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 9.5e-4
pellet_mesh_density = customize
ny_p = 8
nx_c = 4
nx_p = 12
pellet_outer_radius = 0.005305
ny_cu = 3
ny_c = 8
clad_bot_gap_height = 1e-3
pellet_quantity = 1
pellet_height = 0.0127
ny_cl = 3
plenum_fuel_ratio = 0.45
clad_gap_width = 9.5e-5
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[disp_x]
initial_condition = 0.0
[]
[disp_y]
initial_condition = 0.0
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[grain_radius]
block = pellet
initial_condition = 7.5e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 43200 5e8'
y = '0 15000 15000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellet]
block = pellet
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
# Note: The U235 should be 13% but the model does not currently work above 12%
[Burnup]
[burnup]
block = 3
order = CONSTANT
family = MONOMIAL
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.12 0.88 0 0 0 0'
RPF = RPF
fuel_volume_ratio = 1
fuel_pin_geometry = fuel_pin_geometry
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
execute_on = timestep_begin
factor = 1.6e12 # (n/m2-s per W/m) used HALDEN fast flux
block = clad
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = clad
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
roughness_coef = 3.2
roughness_primary = 2.0e-6
roughness_secondary = 1.0e-6
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[clad_bc]
type = DirichletBC
variable = temp
boundary = '1 2 3'
value = 516.2 # Clad wall temp = 240+.4162*(LHR)^.75, where temp is C and LHR is kW/m
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.447e6 # Halden coolant pressure
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 5.0e5 # FUMEXII => 500 kPa pressure (He fill)
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.065
relocation_activation1 = 5000
fuel_pin_geometry = fuel_pin_geometry
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
creeprate_scale_factor = 1
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 409638200
[TimeSteppers]
[ts1]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[intg_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[intg_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[fuel_center_temperature]
type = NodalVariableValue
nodeid = 467 # GlobalNodeID 468
variable = temp
[]
[average_fissionrate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.0127 # rod height
[]
[]
[VectorPostprocessors]
[True]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242 RPF'
height =0.00635
burnup_function = burnup
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_total_power'
execute_on = 'FINAL'
[]
[checkpoint]
type = Checkpoint
num_files = 2
file_base = recover_files
sync_times = '409638200'
sync_only = true
[]
[]
[Debug]
show_var_residual_norms = true
[]
(examples/Burnup_profile_displaced_mesh/RadialProfileSampler.i)
initial_fuel_density = 10233
[GlobalParams]
density = ${initial_fuel_density} #93.2% of TD (TD assumed to be 10980)
initial_porosity = 0.068
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = mesh.e
[]
[]
[Variables]
[temp]
initial_condition = 300
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 10.53e-6 # = 13.5e-6 experimental dia * 1.56 /2
[]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[]
[Functions]
[power_history]
# reads and interpolates an input file containing rod average linear power vs time
type = PiecewiseLinear
data_file = linear_power.csv
format = columns
[]
[axial_peaking_factors]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = power_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
#Ambient for initial build @ 0.101353 MPa, PWR @ 13.73 MPa and PIE @ 0.101353 MPa
x = '-100 0 5064768'
y = '0.007382 1 0.007382'
[]
[flux]
type = PiecewiseLinear
data_file = fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = clad_temp_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
add_variables = true
block = pellet_type_1
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
[]
[clad]
add_variables = true
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_yy creep_strain_xy'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1 # fission rate applied to the fuel only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = 0.00324
a_upper = 1.02024
fuel_outer_radius = 4.095e-3
fuel_inner_radius = 1.24e-3
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0707 0.9293 0 0 0 0'
num_radial = 80
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = '1'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
penalty = 1e7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = .955e-6
roughness_primary = 1.5e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 13.73e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.88e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10233
[]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
temperature = temp
stress_free_temperature = 300
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = .00819
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 1.7e-4 #diameteral gap
relocation_activation1 = 5000 # intial relocation activation power set to 5kW/m
burnup_relocation_stop = .04
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
diff_coeff_option = 'TURNBULL_D1_D2'
transient_option = 'MICROCRACKING'
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0
dtmax = 1e6
dtmin = 100
end_time = 5064768
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 6
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 4784
[]
[]
[VectorPostprocessors]
[Concentrations_on_displaced_mesh]
type = RadialProfileSampler
variable = 'disp_x'
sort_by = 'id'
burnup_function = burnup
quantity = 'N235 N236 N238 N239 N240 N241 N242 ntot_hm'
height = 0.46324
execute_on = timestep_end
outputs = 'ConcentrationsDisplaced'
[]
[Concentrations_on_undisplaced_mesh]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242'
height = 0.46324
burnup_function = burnup
outputs = 'ConcentrationsUnDisplaced'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
csv = true
exodus = false
color = false
[ConcentrationsDisplaced]
type = CSV
file_base = ConcentrationsDisplaced/'
[]
[ConcentrationsUnDisplaced]
type = CSV
file_base = 'ConcentrationsUnDisplaced/'
[]
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]
(test/tests/radial_power_factor/radial_profile.i)
#
# This tests the RadialProfile VectorPostprocessor. Isotope concentrations,
# fission_rate, radial power factor, and burnup are output. No analytic
# solution is known. This test demonstrates functionality and serves as
# a regression test.
#
[GlobalParams]
density = 10421.5
energy_per_fission = 3.2e-11 # J/fission
[]
[Mesh]
coord_type = RZ
[mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 4
xmin = 0.0
xmax = 0.0041
ymin = 0.0
ymax = 0.0082
[]
[]
[Variables]
[temp]
initial_condition = 293.15
[]
[]
[Functions]
[power_profile]
type = ParsedFunction
expression = 20674.327326148894
[]
[axial_peaking_factors]
type = PiecewiseLinear
x = '0.0 0.00205 0.0041 0.00615 0.0082'
y = '0.25 1.25 1.25 1.25 0.25' # Averages out to 1.0
axis = y
[]
[temp_ramp]
type = ParsedFunction
expression = 't+293.15'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = 0
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 5
a_upper = 0.0082
a_lower = 0.0
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1
isotopes = 'U235 U238'
isotope_fractions = '0.045 0.955'
RPF = RPF
[]
[]
# Define boundary conditions
[BCs]
[temp_top]
type = FunctionDirichletBC
boundary = top
variable = temp
function = temp_ramp
[]
[temp_bottom]
type = DirichletBC
boundary = bottom
variable = temp
value = 293.15
[]
[]
# Define material behavior models and input material property data
[Materials]
[thermal]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '1.0'
[]
[]
[Executioner]
type = Transient
# PETSC options
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = ' lu superlu_dist 51'
line_search = 'none'
# controls for linear iterations
l_max_its = 50
l_tol = 1e-3
# controls for nonlinear iterations
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-6
# time control
start_time = 0
end_time = 1e8
dtmax = 1e6
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
[]
[]
[VectorPostprocessors]
[radialProfile]
type = RadialProfile
burnup_function = burnup
quantity = 'N235 N236 N238 N239 N240 N241 N242 fission_rate RPF burnup'
height = 0.0041
execute_on = timestep_end
outputs = 'radialProfile'
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
output_linear = true
max_rows = 10
[]
[radialProfile]
type = CSV
execute_on = final
[]
[]
(assessment/LWR/validation/HBEP/analysis/BK365/HBEP_BK365.i)
initial_fuel_density = 10233
[GlobalParams]
density = ${initial_fuel_density} #93.2% of TD (TD assumed to be 10980)
initial_porosity = 0.068
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = HBEP.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 10.53e-6 # = 13.5e-6 experimental dia * 1.56 /2
[]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[disp_r]
[]
[]
[Functions]
[power_history]
# reads and interpolates an input file containing rod average linear power vs time
type = PiecewiseLinear
data_file = BK365_linear_power.csv
format = columns
[]
[axial_peaking_factors]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK365_power_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
#Ambient for initial build @ 0.101353 MPa, PWR @ 13.73 MPa and PIE @ 0.101353 MPa
x = '-100 0 137115360 137118960'
y = '0.007382 1 1 0.007382'
[]
[flux]
type = PiecewiseLinear
data_file = BK365_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = BK365_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK365_clad_temp_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_yy creep_strain_xy'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1 # fission rate applied to the fuel only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = 0.00324
a_upper = 1.02024
fuel_outer_radius = 4.095e-3
fuel_inner_radius = 1.24e-3
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0707 0.9293 0 0 0 0'
num_radial = 80
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = '1'
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = '1'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_hoop]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
index_i = 2
index_j = 2
execute_on = timestep_end
block = 1
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
block = 1
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
penalty = 1e7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = .955e-6
roughness_primary = 1.5e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 13.73e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.88e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10233
[]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
temperature = temp
stress_free_temperature = 300
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = .00819
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =1.7e-4 #diameteral gap
relocation_activation1 = 5000 # initial relocation activation power set to 5kW/m
burnup_relocation_stop = .04
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 50
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 137118960
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 2e6
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.017 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet_type_1
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 4784
[]
[maxFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
variable = penetration
[]
[minFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
value_type = min
variable = penetration
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[]
[VectorPostprocessors]
[Concentrations]
type = RadialProfileSampler
variable = 'disp_x'
sort_by = 'id'
burnup_function = burnup
quantity = 'N235 N236 N238 N239 N240 N241 N242 ntot_hm'
height = 0.46324
execute_on = timestep_end
outputs = 'Concentrations'
[]
[True]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242'
height = 0.46324
burnup_function = burnup
outputs = 'True'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[Concentrations]
type = CSV
file_base = 'Concentrations/'
[]
[True]
type = CSV
file_base = 'True/'
[]
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]