- eigenstrain_nameMaterial property name for the eigenstrain tensor computed by this model. IMPORTANT: The name of this property must also be provided to the strain calculator.
C++ Type:std::string
Controllable:No
Description:Material property name for the eigenstrain tensor computed by this model. IMPORTANT: The name of this property must also be provided to the strain calculator.
- stress_free_temperatureReference temperature at which there is no thermal expansion for thermal eigenstrain calculation
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Reference temperature at which there is no thermal expansion for thermal eigenstrain calculation
UO2ThermalExpansionMartinEigenstrain
Computes an eigenstrain due to thermal expansion for UO2 using the temperature-dependent instantaneous thermal expansion function given by Martin (1988).
Description
The UO2ThermalExpansionMartinEigenstrain class calculates the strain due to thermal expansion for UO fuel using the correlation given in Martin (1988) and later by Fink (2000). This correlation uses two separate equations for , the instantaneous coefficient of thermal expansion (CTE), for different ranges of the temperature, .
In addition to the instantaneous functions, Martin (1988) also provides equations for the mean thermal expansion for these two temperature ranges. However, these are not used in the BISON implementation of this model because the coefficients for the higher-temperature correlation (Equation 1b in that paper) appear to be incorrect because there is a discontinuity in the function at the transition point between the correlations.
At lower temperatures, the Martin correlation produces results very similar to the MATPRO model, implemented in BISON as UO2ThermalExpansionMATPROEigenstrain. The Martin model predicts higher thermal strains at higher temperatures (above about 2200 K). Figure 1 shows a comparison of the free thermal expansion predicted by the two models.

Figure 1: Comparison of linear free expansion of UO as a function of temperature as represented by the MATPRO and Martin correlations. This is consistent with a similar comparison shown in Figure 6 of Martin (1988).
Example Input Syntax
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[thermal_strain]
type = UO2ThermalExpansionMartinEigenstrain<<<{"description": "Computes an eigenstrain due to thermal expansion for UO2 using the temperature-dependent instantaneous thermal expansion function given by Martin (1988).", "href": "UO2ThermalExpansionMartinEigenstrain.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 0
temperature<<<{"description": "Coupled temperature"}>>> = temperature
stress_free_temperature<<<{"description": "Reference temperature at which there is no thermal expansion for thermal eigenstrain calculation"}>>> = 300
eigenstrain_name<<<{"description": "Material property name for the eigenstrain tensor computed by this model. IMPORTANT: The name of this property must also be provided to the strain calculator."}>>> = thermal_eigenstrain
[]
[](test/tests/solid_mechanics/uo2_eigenstrains/uo2_martin_cte.i)The eigenstrain name must also be passed to the strain calculator, and an example of this is shown below:
[Physics<<<{"href": "../../../syntax/Physics/index.html"}>>>]
[SolidMechanics<<<{"href": "../../../syntax/Physics/SolidMechanics/index.html"}>>>]
[QuasiStatic<<<{"href": "../../../syntax/Physics/SolidMechanics/QuasiStatic/index.html"}>>>]
[all]
strain<<<{"description": "Strain formulation"}>>> = FINITE
eigenstrain_names<<<{"description": "List of eigenstrains to be applied in this strain calculation"}>>> = thermal_eigenstrain
[]
[]
[]
[](test/tests/solid_mechanics/uo2_eigenstrains/uo2_martin_cte.i)Input Parameters
- base_nameOptional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
C++ Type:std::string
Controllable:No
Description:Optional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Options:NONE, ELEMENT, SUBDOMAIN
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- declare_suffixAn optional suffix parameter that can be appended to any declared 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 declared properties. The suffix will be prepended with a '_' character.
- mean_thermal_expansion_coefficient_nameName of the mean coefficient of thermal expansion.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Name of the mean coefficient of thermal expansion.
- temperatureCoupled temperature
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled temperature
- use_old_temperatureFalseFlag to optionally use the temperature value from the previous timestep.
Default:False
C++ Type:bool
Controllable:No
Description:Flag to optionally use the temperature value from the previous timestep.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
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
Outputs Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Material Property Retrieval Parameters
Input Files
- (test/tests/fuelrodlinevaluesampler/example_problem_smeared_test2.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK8/FK08.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK5/FK05.i)
- (test/tests/example_problem_test/example_problem_test.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK4/FK04.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_NSRR_FK/analysis/FK9/FK09.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_martin_cte.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK7/FK07.i)
- (test/tests/fuelrodlinevaluesampler/example_problem_smeared_test.i)
References
- J. K. Fink.
Thermophysical properties of uranium dioxide.
Journal of Nuclear Materials, 279(1):1–18, 2000.[BibTeX]
@ARTICLE{fink00, author = "Fink, J. K.", title = "Thermophysical properties of uranium dioxide", journal = "Journal of Nuclear Materials", year = "2000", volume = "279", pages = "1-18", number = "1", issn = "0022-3115" } - D. G. Martin.
The thermal expansion of solid UO$_2$ and (U, Pu) mixed oxides - A review and recommendations.
Journal of Nuclear Materials, 152(2):94–101, 1988.[BibTeX]
@ARTICLE{martin88, author = "Martin, D. G.", title = "The Thermal Expansion of Solid {UO}$\_2$ and ({U}, {Pu}) Mixed Oxides - {A} Review and Recommendations", journal = "Journal of Nuclear Materials", year = "1988", volume = "152", pages = "94-101", number = "2" }
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_martin_cte.i)
#--------------------------------------------------------------------------------
#
# This test case is designed to test thermal expansion of UO2 fuel using the
# UO2ThermalExpansionMartinEigenstrain model, which is based of the model of
# Martin (1988).
#
# The Martin paper provides mean and instantaneous thermal expansion functions.
# The BISON implementation of this model uses the instantaneous version because
# there are errros in the mean equation for the higher temperature regime. This
# makes it difficult to compare the model against an analytic solution. The
# generated plot of the function qualitatively matches the function plotted in the
# original paper.
[GlobalParams]
displacements = 'disp_x disp_y' # disp_z'
volumetric_locking_correction = true
[]
[Mesh]
coord_type = RZ
[mesh]
type = GeneratedMeshGenerator
dim = 2
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
[]
[thermal_eigenstrain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 300.0
[]
[]
[Functions]
[temperaturefcn]
type = ParsedFunction
expression = 300+6.0e2*t
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
eigenstrain_names = thermal_eigenstrain
[]
[]
[AuxKernels]
[fuel_thermal_strain_xx]
type = RankTwoAux
rank_two_tensor = thermal_eigenstrain
variable = thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fuel_thermal_strain_yy]
type = RankTwoAux
rank_two_tensor = thermal_eigenstrain
variable = thermal_eigenstrain_yy
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[total_strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[temperature]
type = FunctionAux
variable = temperature
function = temperaturefcn
execute_on = timestep_begin
[]
[]
[BCs]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[u_left_fix]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[thermal_strain]
type = UO2ThermalExpansionMartinEigenstrain
block = 0
temperature = temperature
stress_free_temperature = 300
eigenstrain_name = thermal_eigenstrain
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 0
[]
[]
[Postprocessors]
[temperature]
type = AverageNodalVariableValue
variable = temperature
[]
[total_strain_xx]
type = ElementAverageValue
variable = total_strain_xx
[]
[]
[Executioner]
type = Transient
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
l_tol = 1e-6
start_time = 0.0
end_time = 4.6
dt = 0.1
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_martin_cte.i)
#--------------------------------------------------------------------------------
#
# This test case is designed to test thermal expansion of UO2 fuel using the
# UO2ThermalExpansionMartinEigenstrain model, which is based of the model of
# Martin (1988).
#
# The Martin paper provides mean and instantaneous thermal expansion functions.
# The BISON implementation of this model uses the instantaneous version because
# there are errros in the mean equation for the higher temperature regime. This
# makes it difficult to compare the model against an analytic solution. The
# generated plot of the function qualitatively matches the function plotted in the
# original paper.
[GlobalParams]
displacements = 'disp_x disp_y' # disp_z'
volumetric_locking_correction = true
[]
[Mesh]
coord_type = RZ
[mesh]
type = GeneratedMeshGenerator
dim = 2
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
[]
[thermal_eigenstrain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 300.0
[]
[]
[Functions]
[temperaturefcn]
type = ParsedFunction
expression = 300+6.0e2*t
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
eigenstrain_names = thermal_eigenstrain
[]
[]
[AuxKernels]
[fuel_thermal_strain_xx]
type = RankTwoAux
rank_two_tensor = thermal_eigenstrain
variable = thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fuel_thermal_strain_yy]
type = RankTwoAux
rank_two_tensor = thermal_eigenstrain
variable = thermal_eigenstrain_yy
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[total_strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[temperature]
type = FunctionAux
variable = temperature
function = temperaturefcn
execute_on = timestep_begin
[]
[]
[BCs]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[u_left_fix]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[thermal_strain]
type = UO2ThermalExpansionMartinEigenstrain
block = 0
temperature = temperature
stress_free_temperature = 300
eigenstrain_name = thermal_eigenstrain
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 0
[]
[]
[Postprocessors]
[temperature]
type = AverageNodalVariableValue
variable = temperature
[]
[total_strain_xx]
type = ElementAverageValue
variable = total_strain_xx
[]
[]
[Executioner]
type = Transient
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
l_tol = 1e-6
start_time = 0.0
end_time = 4.6
dt = 0.1
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(test/tests/fuelrodlinevaluesampler/example_problem_smeared_test2.i)
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = SmearedTwoPelletOneType2D.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain
fuel_relocation_eigenstrain fuel_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'initial timestep_end'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
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.0e6
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
initial_porosity = 0.0
temperature = temp
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = pellet_type_1
stress_free_temperature = 295
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[hotpressing]
type = UO2HotPressingCreepUpdate
block = pellet_type_1
burnup_function = burnup
initial_grain_radius = 10.0e-6
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'hotpressing'
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000 #TM default value
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 1.e20
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 300
[]
[]
[Preconditioning]
[SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-pc_type_asm'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-5 #8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
start_time = -200
num_steps = 2
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 6
iteration_window = 2
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
component = 1
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[nonlinear_its] # number of nonlinear iterations at each timestep
type = NumNonlinearIterations
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372 # rod height
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[fuel_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'fuel'
fraction = 0.51
num_points = 20
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[clad_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'clad'
fraction = 0.51
num_points = 20
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[]
[Outputs]
exodus = true
color = false
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = 'FINAL'
[]
[]
(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/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
[]
[]
(test/tests/example_problem_test/example_problem_test.i)
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = 2_pellet_discrete.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain
fuel_relocation_eigenstrain fuel_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 0.987775
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'initial timestep_end'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
initial_porosity = 0.0
temperature = temp
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = pellet_type_1
stress_free_temperature = 295
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[hotpressing]
type = UO2HotPressingCreepUpdate
block = pellet_type_1
burnup_function = burnup
initial_grain_radius = 10.0e-6
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = ' hotpressing'
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = 'pin_geometry'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000 #TM default value
burnup_relocation_stop = 1.e20
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 300
[]
[]
[Preconditioning]
[SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-pc_type_asm'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-5 #8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
start_time = -200
num_steps = 2
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 6
iteration_window = 2
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
component = 1
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[nonlinear_its] # number of nonlinear iterations at each timestep
type = NumNonlinearIterations
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372 # rod height
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
exodus = true
color = false
[console]
type = Console
output_linear = true
max_rows = 25
[]
[]
(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/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_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_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/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
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_martin_cte.i)
#--------------------------------------------------------------------------------
#
# This test case is designed to test thermal expansion of UO2 fuel using the
# UO2ThermalExpansionMartinEigenstrain model, which is based of the model of
# Martin (1988).
#
# The Martin paper provides mean and instantaneous thermal expansion functions.
# The BISON implementation of this model uses the instantaneous version because
# there are errros in the mean equation for the higher temperature regime. This
# makes it difficult to compare the model against an analytic solution. The
# generated plot of the function qualitatively matches the function plotted in the
# original paper.
[GlobalParams]
displacements = 'disp_x disp_y' # disp_z'
volumetric_locking_correction = true
[]
[Mesh]
coord_type = RZ
[mesh]
type = GeneratedMeshGenerator
dim = 2
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
[]
[thermal_eigenstrain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 300.0
[]
[]
[Functions]
[temperaturefcn]
type = ParsedFunction
expression = 300+6.0e2*t
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
eigenstrain_names = thermal_eigenstrain
[]
[]
[AuxKernels]
[fuel_thermal_strain_xx]
type = RankTwoAux
rank_two_tensor = thermal_eigenstrain
variable = thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fuel_thermal_strain_yy]
type = RankTwoAux
rank_two_tensor = thermal_eigenstrain
variable = thermal_eigenstrain_yy
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[total_strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[temperature]
type = FunctionAux
variable = temperature
function = temperaturefcn
execute_on = timestep_begin
[]
[]
[BCs]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[u_left_fix]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[thermal_strain]
type = UO2ThermalExpansionMartinEigenstrain
block = 0
temperature = temperature
stress_free_temperature = 300
eigenstrain_name = thermal_eigenstrain
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 0
[]
[]
[Postprocessors]
[temperature]
type = AverageNodalVariableValue
variable = temperature
[]
[total_strain_xx]
type = ElementAverageValue
variable = total_strain_xx
[]
[]
[Executioner]
type = Transient
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
l_tol = 1e-6
start_time = 0.0
end_time = 4.6
dt = 0.1
[]
[Outputs]
csv = true
execute_on = timestep_end
[]
(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
[]
[]
(test/tests/fuelrodlinevaluesampler/example_problem_smeared_test.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
displacements = 'disp_x disp_y'
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = SmearedTwoPelletOneType2D.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain
fuel_relocation_eigenstrain fuel_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'initial timestep_end'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
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.0e6
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
initial_porosity = 0.0
temperature = temp
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = pellet_type_1
stress_free_temperature = 295
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[hotpressing]
type = UO2HotPressingCreepUpdate
block = pellet_type_1
burnup_function = burnup
initial_grain_radius = 10.0e-6
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'hotpressing'
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000 #TM default value
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 1.e20
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 300
[]
[]
[Preconditioning]
[SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-pc_type_asm'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-5 #8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
start_time = -200
num_steps = 2
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 6
iteration_window = 2
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
component = 1
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[nonlinear_its] # number of nonlinear iterations at each timestep
type = NumNonlinearIterations
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372 # rod height
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[fuel_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'fuel'
fraction = 0.51
num_points = 20
orientation = 'horizontal'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[clad_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'clad'
fraction = 0.51
num_points = 9
orientation = 'horizontal'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[]
[Outputs]
exodus = true
color = false
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = 'FINAL'
[]
[]