- temperatureThe coupled temperature (K)
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The coupled temperature (K)
FgrUPuZrLM
Fission gas release model for UPuZr metal fuel transplanted from the LIFE-METAL code
Description
FgrUPuZrLM is a fission gas release model for UPuZr metallic fuel based on the current porosity of the fuel, the current retained fission gas concentration in the fuel, and the fuel temperature (automatic differentiation version). This fission gas release model was originally established and parameterized for the LIFE-METAL fuel performance code (Yacout and Billone, 2015). The model was developed, parameterized, and implemented into the BISON code by Argonne National Laboratory (an implementation report will be cited in a future version).
In this fission gas release model, the fission gas release rate ( in mol/m-s) is calculated at every time step as the product of the fission gas amount retained in the fuel ( in mol/m) and a fission gas release factor ( in s): (1) The gas release factor is calculated using the following equation: (2) (3) where is the atomic percent burnup, () is a pre-exponential coefficient, (J/mol) is the activation energy for gas released from non-interconnected bubbles, (J/mol-K) is the gas constant, () is the temperature, is a dimensionless constant to account for the porosity effect on gas release before interconnection, is the porosity of the fuel, is the gas swelling strain, is the threshold gas swelling strain for bubble interconnetion, and () is a constant determining the enhanced gas release rate after bubble interconnection.
Example Input Syntax
[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
[fission_gas_behavior]
type = FgrUPuZrLM<<<{"description": "Fission gas release model for UPuZr metal fuel transplanted from the LIFE-METAL code", "href": "FgrUPuZrLM.html"}>>>
temperature<<<{"description": "The coupled temperature (K)"}>>> = temp
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
output_properties<<<{"description": "List of material properties, from this material, to output (outputs must also be defined to an output type)"}>>> = 'fis_gas_prod fis_gas_rel fis_gas_ret'
[]
[](test/tests/solid_mechanics/upuzr_gas_LM/calc_rad.i)Input Parameters
- Qg_R10200Activation energy of gas release rate expression
Default:10200
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Activation energy of gas release rate expression
- 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
- burnupburnupBurnup material property name
Default:burnup
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Burnup material property name
- c_g7Porosity factor coefficient
Default:7
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Porosity factor coefficient
- 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.
- epsilon_c0.33Gas release threshold strain
Default:0.33
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Gas release threshold strain
- f_coeff0.05Swelling strain coefficient
Default:0.05
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Swelling strain coefficient
- fission_ratefission_rateFission rate material property name
Default:fission_rate
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Fission rate material property name
- fractional_yield0.3017fraction yield of fission gas atoms per fission
Default:0.3017
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:fraction yield of fission gas atoms per fission
- fuel_melting_functionThe optional fuel melting function that is used for transient simulations (1.0 fully solid; 0.0 fully melting).
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:The optional fuel melting function that is used for transient simulations (1.0 fully solid; 0.0 fully melting).
- gas_release_scale_factor1Fission gas release rate scale factor
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Fission gas release rate scale factor
- porosityporosityPorosity material property name
Default:porosity
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Porosity material property name
- porosity_threshold0.1Porosity threshold related to porosity factor before interconnection
Default:0.1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Porosity threshold related to porosity factor before interconnection
- preexponential_coeff2.7Pre-exponetional coefficient of gas release rate expression
Default:2.7
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Pre-exponetional coefficient of gas release rate expression
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/solid_mechanics/adupuzr_gas_LM/calc_rad.i)
- (assessment/metallic_fuel/EBRII/X447/analysis/legacy/x447_base.i)
- (test/tests/solid_mechanics/adupuzr_gas_LM/preset_rad.i)
- (test/tests/solid_mechanics/upuzr_gas_LM/calc_rad.i)
- (assessment/metallic_fuel/EBRII/X423/analysis/x423_lm_base.i)
- (test/tests/solid_mechanics/upuzr_gas_LM/preset_rad.i)
References
- AM Yacout and MC Billone.
Current status of the life fast reactors fuel performance codes.
In Fast Reactors and Related Fuel Cycles: Safe Technologies and Sustainable Scenarios (FR13). COMPANION CD-ROM. Proceedings of an International Conference. 2015.[BibTeX]
@inproceedings{yacout2015current, author = "Yacout, AM and Billone, MC", title = "Current Status of the LIFE Fast Reactors Fuel Performance Codes", booktitle = "Fast Reactors and Related Fuel Cycles: Safe Technologies and Sustainable Scenarios (FR13). COMPANION CD-ROM. Proceedings of an International Conference", year = "2015" }
(test/tests/solid_mechanics/upuzr_gas_LM/calc_rad.i)
# This test is to verify the calculation in UPuZrVolumetricSwellingEigenstrainLM and
# FgrUPuZrLM (the real-time calculated bubble radius)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
eigenstrain_names = 'gas_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy'
[]
[]
[AuxVariables]
[temp]
initial_condition = 1000
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[temp]
type = ConstantAux
variable = temp
value = 1000
[]
[volumetric_strain]
type = RankTwoScalarAux
variable = volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[]
[Functions]
[fission_rate_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 2.5e19'
[]
[pressure_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 1e6'
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[Pressure]
[Side]
boundary = 'right top front'
function = pressure_func
[]
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
[]
[fission_rate]
type = GenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = 'fission_rate_func'
outputs = all
[]
[burnup]
type = UPuZrBurnup
density = 16000
initial_X_Pu = 0.0
initial_X_Zr = 0.225
outputs = all
[]
[gas_swelling]
type = UPuZrVolumetricSwellingEigenstrainLM
temperature = temp
use_plenum_pressure = false
use_preset_bubble_size = false
initial_porosity = 0.1
outputs = all
output_properties = 'porosity gaseous_porosity gas_swelling_vdw gas_swelling_ideal gas_swelling gas_bubble_radius gas_bubble_density'
eigenstrain_name = gas_swelling_eigenstrain
anisotropic_factor = 1.25
[]
[fission_gas_behavior]
type = FgrUPuZrLM
temperature = temp
outputs = all
output_properties = 'fis_gas_prod fis_gas_rel fis_gas_ret'
[]
[]
[Executioner]
type = Transient
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-4
l_tol = 1e-5
num_steps = 70
dt = 1e6
[]
[Postprocessors]
[gas_produced]
type = ElementAverageValue
variable = fis_gas_prod
[]
[gas_released]
type = ElementAverageValue
variable = fis_gas_rel
[]
[gas_retained]
type = ElementAverageValue
variable = fis_gas_ret
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
[]
[gas_swell]
type = ElementAverageValue
variable = gas_swelling
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[gas_swelling_vdw]
type = ElementAverageValue
variable = gas_swelling_vdw
[]
[gas_swelling_ideal]
type = ElementAverageValue
variable = gas_swelling_ideal
[]
[gas_bubble_radius]
type = ElementAverageValue
variable = gas_bubble_radius
[]
[gas_bubble_density]
type = ElementAverageValue
variable = gas_bubble_density
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
csv = true
[]
(test/tests/solid_mechanics/adupuzr_gas_LM/calc_rad.i)
# This test is to verify the calculation in ADUPuZrVolumetricSwellingEigenstrainLM and
# ADFgrUPuZrLM (the real-time calculated bubble radius)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
eigenstrain_names = 'gas_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[temp]
initial_condition = 1000
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[temp]
type = ConstantAux
variable = temp
value = 1000
[]
[volumetric_strain]
type = ADRankTwoScalarAux
variable = volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[gas_swell_aux]
type = ADMaterialRealAux
variable = gas_swell
property = gas_swelling
[]
[]
[Functions]
[fission_rate_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 2.5e19'
[]
[pressure_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 1e6'
[]
[]
[BCs]
[no_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[]
[no_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[no_z]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[]
[Pressure]
[Side]
boundary = 'right top front'
function = pressure_func
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeVariableIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
[]
[fission_rate]
type = ADGenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = 'fission_rate_func'
outputs = all
[]
[burnup]
type = ADUPuZrBurnup
density = 16000
initial_X_Pu = 0.0
initial_X_Zr = 0.225
outputs = all
[]
[gas_swelling]
type = ADUPuZrVolumetricSwellingEigenstrainLM
temperature = temp
use_plenum_pressure = false
use_preset_bubble_size = false
initial_porosity = 0.1
outputs = all
output_properties = 'porosity gaseous_porosity gas_swelling_vdw gas_swelling_ideal gas_swelling gas_bubble_radius gas_bubble_density'
eigenstrain_name = gas_swelling_eigenstrain
anisotropic_factor = 1.25
[]
[fission_gas_behavior]
type = ADFgrUPuZrLM
temperature = temp
outputs = all
output_properties = 'fis_gas_prod fis_gas_rel fis_gas_ret'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-4
l_tol = 1e-5
num_steps = 70
dt = 1e6
dtmin = 1e6
[]
[Postprocessors]
[gas_produced]
type = ElementAverageValue
variable = fis_gas_prod
[]
[gas_released]
type = ElementAverageValue
variable = fis_gas_rel
[]
[gas_retained]
type = ElementAverageValue
variable = fis_gas_ret
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
[]
[gas_swell]
type = ElementAverageValue
variable = gas_swelling
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[gas_swelling_vdw]
type = ElementAverageValue
variable = gas_swelling_vdw
[]
[gas_swelling_ideal]
type = ElementAverageValue
variable = gas_swelling_ideal
[]
[gas_bubble_radius]
type = ElementAverageValue
variable = gas_bubble_radius
[]
[gas_bubble_density]
type = ElementAverageValue
variable = gas_bubble_density
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
csv = true
[]
(assessment/metallic_fuel/EBRII/X447/analysis/legacy/x447_base.i)
[GlobalParams]
density = ${fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y' # RZ-2D
X_Pu = ${fuel_pu}
X_Zr = ${fuel_zr}
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Pin design parameters from FIPD database
[gen]
type = FIPDRodletMeshGenerator
fipd_geom_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} / ${pin_id} _design.csv'}
gap_bottom_length = 0.31e-3 # arbitrary
cladding_bottom_plug_length = 2.24e-3 # arbitrary
cladding_top_plug_length = 2.24e-3 # arbitrary
cladding_sidewall_radial_elements = 10
cladding_sidewall_axial_element_numbers = '2 150 150'
cladding_top_plug_radial_elements = 10
cladding_top_plug_axial_elements = 5
cladding_bottom_plug_radial_elements = 10
cladding_bottom_plug_axial_elements = 5
fuel_radial_elements = 6
fuel_axial_element_intervals = '0 1'
fuel_axial_element_numbers = '150'
use_default_cladding_sidewall_axial_element_intervals = true
elem_type = QUAD4
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[func_val1] # Just for visualization
[]
[func_val2] # Just for visualization
[]
# AuxVariables used for thermal expansion correction
[fuel_thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thm_exp]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[clad_thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[clad_thm_exp]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[]
[Functions]
[clad_od_temp] # Time-dependent cladding OD temperature from FIPD database
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /clad_od_temp_history_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
[]
[power_history] # Time-dependent pin average power from FIPD database
type = PiecewiseLinear
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /power_history_ ${pin_id} .csv'}
[]
[pwr_axial_peaking_factors] # Power peaking factor from FIPD database; used for fuel related simulations
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
[]
[pwr_axial_peaking_factors_elongate] # Power peaking factor from FIPD database; used for cladding related simulations
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
fuel_elongation_pp = max_fuel_elongation # pp used to track fuel elongation
[]
[fflux_axial_peaking_factors] # Fast flux peaking factor from FIPD database; used for fuel related simulations
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
[]
[fflux_axial_peaking_factors_elongate] # Fast flux peaking factor from FIPD database; used for cladding related simulations
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
fuel_elongation_pp = max_fuel_elongation # pp used to track fuel elongation
[]
[flux_history] # Time-dependent pin average fast flux from FIPD database
type = PiecewiseLinear
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /flux_history_ ${pin_id} .csv'}
[]
[flow_rate_history] # Time-dependent flow mass flux from FIPD database; no longer needed if FIPD temperature is used as BC.
type = PiecewiseLinear
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /flow_history_ ${pin_id} .csv'}
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 ${time_last}'
y = '0.151e6 0.151e6'
[]
[id_vpp_func] # vpp_function used to track FCCI-related cladding degradation.
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_wastage
argument_column = y
wastage_type = ID
value_column = wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[od_vpp_func] # vpp_function used to track CCCI-related cladding degradation.
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = od_wastage
argument_column = y
wastage_type = OD
value_column = cc_wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[ci_temp] # vpp_function used to track cladding ID temperature.
type = PiecewiseLinearFromVectorPostprocessor
argument_column = y
component = y
value_column = temp
vectorpostprocessor_name = clad_inn_temp
[]
[na_vol] # Get sodium volume from mesh generator
type = MeshPropertyFunction
mesh_generator = gen
mesh_property_name = sodium_volume
scale_factor = -1.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
temperature = temp
add_variables = true
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz volumetric_strain'
extra_vector_tags = 'ref'
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz hoop_stress hoop_creep_strain hoop_elastic_strain'
extra_vector_tags = 'ref'
block = cladding
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[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_f]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = fuel
[]
[heat_ie_c]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = cladding
[]
[heat_source]
type = FissionRateHeatSource
variable = temp
fission_rate = fission_rate
block = fuel
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = fuel_outer_radial_surface
[]
[cdf_amount]
block = cladding
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
block = cladding
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = cladding
[]
[func_val1]
type = FunctionAux
function = id_vpp_func
variable = func_val1
block = cladding
[]
[func_val2]
type = FunctionAux
function = od_vpp_func
variable = func_val2
block = cladding
[]
# AuxKernels used to correct thermal expansion
[fuel_thermal_strain_xx]
type = RankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thm_exp]
type = SpatialUserObjectAux
variable = fuel_thm_exp
execute_on = 'initial timestep_end'
user_object = fuel_thm_exp
block = fuel
[]
[clad_thermal_eigenstrain_xx]
type = RankTwoAux
rank_two_tensor = clad_thermal_eigenstrain
variable = clad_thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = cladding
[]
[clad_thm_exp]
type = SpatialUserObjectAux
variable = clad_thm_exp
execute_on = 'initial timestep_end'
user_object = clad_thm_exp
block = cladding
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
penalty = 1e12
model = frictionless
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
quadrature = true
gap_conductivity = 61.0
min_gap = 0.5e-03 # Adjustable
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = fuel_bottom
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = cladding_outside_bottom
value = 0.0
[]
[fuel_top_temp] # Artificially set fuel top temperature; this could also be a Robin BC. Helps to avoid superhigh fuel top temperature in some extreme cases
type = FunctionDirichletBC
boundary = fuel_top
variable = temp
function = ci_temp
[]
[surf] # Setting temperature BC base on FIPD data
type = FunctionDirichletBC
variable = temp
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = clad_od_temp
[]
[Pressure]
[coolantPressure]
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 'fuel_outside_all cladding_inside_all'
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
block = fuel
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors
use_metadata = true
mesh_generator = gen
outputs = all
[]
[fission_rate_elongate]
type = UPuZrFissionRate
block = cladding
fission_rate_name = fission_rate
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors_elongate
use_metadata = true
mesh_generator = gen
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Pu = ${fuel_pu}
initial_X_Zr = ${fuel_zr}
outputs = all
block = fuel
[]
[burnup_elongate]
type = UPuZrBurnup
initial_X_Pu = ${fuel_pu}
initial_X_Zr = ${fuel_zr}
outputs = all
block = cladding
burnup_name = burnup
[]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
rod_ave_lin_pow = flux_history
axial_power_profile = fflux_axial_peaking_factors
block = fuel
factor = 1.0
outputs = all
[]
[fast_neutron_flux_elongate]
type = FastNeutronFlux
calculate_fluence = true
rod_ave_lin_pow = flux_history
axial_power_profile = fflux_axial_peaking_factors_elongate
block = cladding
factor = 1.0
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = fuel
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
outputs = all
[]
[fuel_volumetric_swelling] # Use LIFE-METAL Empirical model
type = UPuZrVolumetricSwellingEigenstrainLM
block = fuel
use_preset_bubble_size = true
anisotropic_factor = 1.26
temperature = temp
fission_rate = fission_rate
burnup = burnup
fis_gas_ret = fis_gas_ret
hydrostatic_stress = hydrostatic_stress
eigenstrain_name = fuel_volumetric_strain
gas_swelling_scale_factor = 1.0
outputs = all
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
displacements = 'disp_x disp_y'
block = fuel
strain_free_density = ${fuel_density}
[]
[fission_gas_behavior]
type = FgrUPuZrLM
block = fuel
temperature = temp
fission_rate = fission_rate
epsilon_c = 0.36
[]
[clad_elasticity_tensor]
type = HT9ElasticityTensor
temperature = temp
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
block = cladding
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = cladding
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = cladding
temperature = temp
fast_neutron_flux = fast_neutron_flux
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = cladding
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
outputs = all
[]
[clad_thermal]
type = HT9Thermal
block = cladding
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
block = cladding
method = cdf_long
temperature = temp
outputs = all
hoop_stress = stress_zz # Since 2D-RZ
[]
[wastage_thickness]
type = MetallicFuelWastage
method = burnup_ht9_opt
burnup = burnup
temperature = temp
scale_factor = 1
boundary = cladding_inside_right
outputs = all
[]
[cc_wastage_thickness]
type = MetallicFuelCoolantWastage
clad_material = HT9
use_effective_method = true
temperature = temp
scale_factor = 1
boundary = cladding_outside_right
outputs = all
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50
variable = temp
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 101' #51
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
end_time = ${time_last}
dtmin = 1
dtmax = ${max_dt}
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_function = power_history
max_function_change = 300
timestep_limiting_postprocessor = creep_timestep
dt = 100
time_t = '0 9300'
time_dt = '100 100'
iteration_window = 2
optimal_iterations = 10
force_step_every_function_point = true
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = cladding_inside_top
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = centerline
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = fuel_outer_radial_surface
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = cladding_inside_right
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = cladding
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = cladding
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_inner_vol]
type = InternalVolume
boundary = cladding_inside_all
[]
[pellet_volume]
type = InternalVolume
boundary = fuel_outside_all
[]
[gas_volume]
type = InternalVolume
boundary = 'fuel_outside_all cladding_inside_all'
execute_on = 'initial timestep_end'
addition = na_vol
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = fuel_outer_radial_surface
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = fuel_outer_radial_surface
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = cladding_inside_right
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = fuel_outer_radial_surface
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = fuel
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = fuel
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = fuel
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = cladding
variable = hoop_creep_strain
[]
[max_clad_creep_strain_mag]
type = ElementExtremeValue
value_type = max
block = cladding
variable = creep_strain_mag
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = cladding
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = fuel_outside_all
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'cladding_outside_top cladding_outside_right'
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = wastage_thickness
outputs = 'console'
[]
[avg_fuel_temp]
type = ElementAverageValue
variable = temp
block = fuel
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = cladding_outside_right
sort_by = y
outputs = none
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = centerline
sort_by = y
outputs = none
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = fuel_outer_radial_surface
sort_by = y
outputs = none
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = cladding_inside_right
sort_by = y
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = cladding_outside_right
sort_by = y
outputs = none
[]
[id_wastage]
type = FuelRodLineValueSampler
variable = wastage_thickness
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = csv_wst_a
[]
[od_wastage]
type = FuelRodLineValueSampler
variable = cc_wastage_thickness
material = 'clad'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[nrad_comparison_a]
type = FIPDAxialPIEComparison
boundary = cladding_outside_right
sort_by = y
csv_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /X447A_ ${pin_id} _PR.csv'}
variable = disp_x
thermal_strain_variable = clad_thm_exp
involved_component = cladding
mesh_generator = gen
series_type_to_read = 'Cladding O.D. (mils)'
outputs = csv_vpp_a
enable = ${enable_a}
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_bottom = cladding_outside_bottom
clad_inner_wall = cladding_inside_right
clad_outer_wall = cladding_outside_right
clad_top = cladding_outside_top
pellet_exteriors = fuel_outside_all
[]
[fuel_thm_exp]
type = LayeredAverage
variable = fuel_thermal_strain_xx
direction = y
num_layers = 1000
block = fuel
[]
[clad_thm_exp]
type = LayeredAverage
variable = clad_thermal_eigenstrain_xx
direction = y
num_layers = 1000
block = cladding
[]
[]
[Outputs]
perf_graph = true
checkpoint = false
color = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
sync_times = ${time_spots}
[]
[csv_vpp_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
execute_postprocessors_on = none
create_latest_symlink = true
[]
[csv_wst_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
execute_postprocessors_on = none
create_latest_symlink = true
[]
[csv_general]
type = CSV
sync_only = true
sync_times = ${time_spots}
enable = true
[]
[exodus]
type = Exodus
time_step_interval = 20
sync_times = ${time_spots}
enable = false
[]
[]
(test/tests/solid_mechanics/adupuzr_gas_LM/preset_rad.i)
# This test is to verify the calculation in ADUPuZrVolumetricSwellingEigenstrainLM and
# ADFgrUPuZrLM (the preset bubble radius)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
eigenstrain_names = 'gas_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[temp]
initial_condition = 1000
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[temp]
type = ConstantAux
variable = temp
value = 1000
[]
[volumetric_strain]
type = ADRankTwoScalarAux
variable = volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[gas_swell_aux]
type = ADMaterialRealAux
variable = gas_swell
property = gas_swelling
[]
[]
[Functions]
[fission_rate_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 2.5e19'
[]
[pressure_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 1e6'
[]
[fuel_melting_func]
type = PiecewiseLinear
x = '0 3e7 5e7 7e7'
y = '1 1 0 0'
[]
[]
[BCs]
[no_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[]
[no_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[no_z]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[]
[Pressure]
[Side]
boundary = 'right top front'
function = pressure_func
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeVariableIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
[]
[fission_rate]
type = ADGenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = 'fission_rate_func'
outputs = all
[]
[burnup]
type = ADUPuZrBurnup
density = 16000
initial_X_Pu = 0.0
initial_X_Zr = 0.225
outputs = all
[]
[gas_swelling]
type = ADUPuZrVolumetricSwellingEigenstrainLM
temperature = temp
use_plenum_pressure = false
use_preset_bubble_size = true
initial_porosity = 0.1
outputs = all
output_properties = 'porosity gaseous_porosity gas_swelling_vdw gas_swelling_ideal gas_swelling gas_bubble_radius gas_bubble_density'
eigenstrain_name = gas_swelling_eigenstrain
anisotropic_factor = 1.25
[]
[fission_gas_behavior]
type = ADFgrUPuZrLM
temperature = temp
outputs = all
output_properties = 'fis_gas_prod fis_gas_rel fis_gas_ret'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-4
l_tol = 1e-5
num_steps = 70
dt = 1e6
dtmin = 1e6
[]
[Postprocessors]
[gas_produced]
type = ElementAverageValue
variable = fis_gas_prod
[]
[gas_released]
type = ElementAverageValue
variable = fis_gas_rel
[]
[gas_retained]
type = ElementAverageValue
variable = fis_gas_ret
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
[]
[gas_swell]
type = ElementAverageValue
variable = gas_swelling
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[gas_swelling_vdw]
type = ElementAverageValue
variable = gas_swelling_vdw
[]
[gas_swelling_ideal]
type = ElementAverageValue
variable = gas_swelling_ideal
[]
[gas_bubble_radius]
type = ElementAverageValue
variable = gas_bubble_radius
[]
[gas_bubble_density]
type = ElementAverageValue
variable = gas_bubble_density
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
csv = true
[]
(test/tests/solid_mechanics/upuzr_gas_LM/calc_rad.i)
# This test is to verify the calculation in UPuZrVolumetricSwellingEigenstrainLM and
# FgrUPuZrLM (the real-time calculated bubble radius)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
eigenstrain_names = 'gas_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy'
[]
[]
[AuxVariables]
[temp]
initial_condition = 1000
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[temp]
type = ConstantAux
variable = temp
value = 1000
[]
[volumetric_strain]
type = RankTwoScalarAux
variable = volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[]
[Functions]
[fission_rate_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 2.5e19'
[]
[pressure_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 1e6'
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[Pressure]
[Side]
boundary = 'right top front'
function = pressure_func
[]
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
[]
[fission_rate]
type = GenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = 'fission_rate_func'
outputs = all
[]
[burnup]
type = UPuZrBurnup
density = 16000
initial_X_Pu = 0.0
initial_X_Zr = 0.225
outputs = all
[]
[gas_swelling]
type = UPuZrVolumetricSwellingEigenstrainLM
temperature = temp
use_plenum_pressure = false
use_preset_bubble_size = false
initial_porosity = 0.1
outputs = all
output_properties = 'porosity gaseous_porosity gas_swelling_vdw gas_swelling_ideal gas_swelling gas_bubble_radius gas_bubble_density'
eigenstrain_name = gas_swelling_eigenstrain
anisotropic_factor = 1.25
[]
[fission_gas_behavior]
type = FgrUPuZrLM
temperature = temp
outputs = all
output_properties = 'fis_gas_prod fis_gas_rel fis_gas_ret'
[]
[]
[Executioner]
type = Transient
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-4
l_tol = 1e-5
num_steps = 70
dt = 1e6
[]
[Postprocessors]
[gas_produced]
type = ElementAverageValue
variable = fis_gas_prod
[]
[gas_released]
type = ElementAverageValue
variable = fis_gas_rel
[]
[gas_retained]
type = ElementAverageValue
variable = fis_gas_ret
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
[]
[gas_swell]
type = ElementAverageValue
variable = gas_swelling
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[gas_swelling_vdw]
type = ElementAverageValue
variable = gas_swelling_vdw
[]
[gas_swelling_ideal]
type = ElementAverageValue
variable = gas_swelling_ideal
[]
[gas_bubble_radius]
type = ElementAverageValue
variable = gas_bubble_radius
[]
[gas_bubble_density]
type = ElementAverageValue
variable = gas_bubble_density
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
csv = true
[]
(assessment/metallic_fuel/EBRII/X423/analysis/x423_lm_base.i)
[GlobalParams]
density = ${fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
X_Pu = ${fuel_pu}
X_Zr = ${fuel_zr}
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[gen]
type = FIPDRodletMeshGenerator
fipd_geom_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} / ${pin_id} _design.csv'}
fipd_as_fabricated_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} / ${pin_id} _as_fabricated.csv'}
gap_bottom_length = 0.31e-3 # arbitrary
cladding_bottom_plug_length = 2.24e-3 # arbitrary
cladding_top_plug_length = 2.24e-3 # arbitrary
cladding_sidewall_radial_elements = 10
cladding_sidewall_axial_element_numbers = '2 150 150'
cladding_top_plug_radial_elements = 10
cladding_top_plug_axial_elements = 5
cladding_bottom_plug_radial_elements = 10
cladding_bottom_plug_axial_elements = 5
fuel_radial_elements = 6
fuel_axial_element_intervals = '0 1'
fuel_axial_element_numbers = '150'
use_default_cladding_sidewall_axial_element_intervals = true
elem_type = QUAD4
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[func_val1]
[]
[func_val2]
[]
# AuxVariables used for thermal expansion correction
[fuel_thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thermal_strain_yy]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thm_exp]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[clad_thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[clad_thm_exp]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[]
[Functions] #copied from fipd-tdep
[clad_od_temp]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /clad_od_temp_history_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
[]
[power_history]
type = PiecewiseLinear
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /power_history_ ${pin_id} .csv'}
[]
[pwr_axial_peaking_factors]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
[]
[pwr_axial_peaking_factors_elongate]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
fuel_elongation_pp = max_fuel_elongation
[]
[fflux_axial_peaking_factors]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
[]
[fflux_axial_peaking_factors_elongate]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
fuel_elongation_pp = max_fuel_elongation
[]
[flux_history]
type = PiecewiseLinear
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /flux_history_ ${pin_id} .csv'}
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 56465640'
y = '0.151e6 0.151e6'
[]
[id_vpp_func]
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_wastage
argument_column = y
wastage_type = ID
value_column = wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[od_vpp_func]
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = od_wastage
argument_column = y
wastage_type = OD
value_column = cc_wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[ci_temp]
type = PiecewiseLinearFromVectorPostprocessor
argument_column = y
component = y
value_column = temp
vectorpostprocessor_name = clad_inn_temp
[]
[na_vol]
type = MeshPropertyFunction
mesh_generator = gen
mesh_property_name = sodium_volume
scale_factor = -1.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
temperature = temp
[fuel]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
[]
[clad]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = cladding
eigenstrain_names = 'clad_swelling clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_f]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = fuel
density_name = density
[]
[heat_ie_c]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = cladding
density_name = density
[]
[heat_source]
type = FissionRateHeatSource
variable = temp
fission_rate = fission_rate
block = fuel
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = fuel_outer_radial_surface
[]
[cdf_amount]
block = cladding
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 'cladding_outside_right'
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = cladding
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = cladding
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = cladding
[]
[func_val1]
type = FunctionAux
function = id_vpp_func
variable = func_val1
block = cladding
[]
[func_val2]
type = FunctionAux
function = od_vpp_func
variable = func_val2
block = cladding
[]
# AuxKernels used to correct thermal expansion
[fuel_thermal_strain_xx]
type = RankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thermal_strain_yy]
type = RankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_yy
index_j = 1
index_i = 1
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thm_exp]
type = SpatialUserObjectAux
variable = fuel_thm_exp
execute_on = 'initial timestep_end'
user_object = fuel_thm_exp
block = fuel
[]
[clad_thermal_eigenstrain_xx]
type = RankTwoAux
rank_two_tensor = clad_thermal_eigenstrain
variable = clad_thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = cladding
[]
[clad_thm_exp]
type = SpatialUserObjectAux
variable = clad_thm_exp
execute_on = 'initial timestep_end'
user_object = clad_thm_exp
block = cladding
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
penalty = 1e12
model = frictionless
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
quadrature = true
gap_conductivity = 61.0
min_gap = 0.5e-03
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = fuel_bottom
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = cladding_outside_bottom
value = 0.0
[]
[fuel_top_temp]
type = FunctionDirichletBC
boundary = fuel_top
variable = temp
function = ci_temp
[]
[surf] #copied from fipd-tdep
type = FunctionDirichletBC
variable = temp
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = clad_od_temp
[]
[Pressure]
[coolantPressure]
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 'fuel_outside_all cladding_inside_all'
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
block = fuel
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors
use_metadata = true
mesh_generator = gen
outputs = all
[]
[fission_rate_elongate]
type = UPuZrFissionRate
block = cladding
fission_rate_name = fission_rate
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors_elongate
use_metadata = true
mesh_generator = gen
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Pu = ${fuel_pu}
initial_X_Zr = ${fuel_zr}
density = ${fuel_density}
outputs = all
block = fuel
[]
[burnup_elongate]
type = UPuZrBurnup
initial_X_Pu = ${fuel_pu}
initial_X_Zr = ${fuel_zr}
density = ${fuel_density}
outputs = all
block = cladding
burnup_name = burnup
[]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
rod_ave_lin_pow = flux_history
axial_power_profile = fflux_axial_peaking_factors
block = fuel
factor = 1.0
outputs = all
[]
[fast_neutron_flux_elongate]
type = FastNeutronFlux
calculate_fluence = true
rod_ave_lin_pow = flux_history
axial_power_profile = fflux_axial_peaking_factors_elongate
block = cladding
factor = 1.0
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = fuel
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrainLM
block = fuel
use_preset_bubble_size = true
anisotropic_factor = 1.26
temperature = temp
fission_rate = fission_rate
burnup = burnup
fis_gas_ret = fis_gas_ret
hydrostatic_stress = hydrostatic_stress
eigenstrain_name = fuel_volumetric_strain
gas_swelling_scale_factor = 1.0
outputs = all
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
displacements = 'disp_x disp_y'
block = fuel
strain_free_density = ${fuel_density}
[]
[fission_gas_behavior]
type = FgrUPuZrLM
block = fuel
temperature = temp
fission_rate = fission_rate
epsilon_c = 0.36
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
temperature = temp
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
block = cladding
elastic_constants_model = legacy_ifr
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ss316creep'
block = cladding
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = cladding
temperature = temp
fast_neutron_flux = fast_neutron_flux
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
[]
[clad_swelling]
type = SS316VolumetricSwellingEigenstrain
eigenstrain_name = clad_swelling
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
temperature = temp
outputs = all
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = cladding
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = SS316Thermal
block = cladding
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 7874.0
[]
[longSS316_failure]
type = D9FailureClad
block = cladding
method = steady_state
temperature = temp
outputs = all
hoop_stress = stress_zz # Since 2D-RZ
[]
[wastage_thickness]
type = MetallicFuelWastage
method = flux_ss316
temperature = temp
scale_factor = 1
boundary = cladding_inside_right
outputs = all
[]
[cc_wastage_thickness]
type = MetallicFuelCoolantWastage
clad_material = SS316
use_effective_method = true
temperature = temp
scale_factor = 1
boundary = cladding_outside_right
outputs = all
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50
variable = temp
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
end_time = ${time_last}
dtmin = 1
dtmax = ${max_dt}
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_function = power_history
#max_function_change = 300 # Removed to decrease run time
timestep_limiting_postprocessor = creep_timestep
dt = 100
iteration_window = 2
optimal_iterations = 10
force_step_every_function_point = true
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
outputs = 'csv_general console'
[]
[num_lin_it]
type = NumLinearIterations
outputs = csv_general
[]
[num_nonlin_it]
type = NumNonlinearIterations
outputs = csv_general
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
outputs = csv_general
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
outputs = csv_general
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
outputs = csv_general
[]
[ave_temp_interior]
type = SideAverageValue
boundary = cladding_inside_top
variable = temp
execute_on = 'initial linear'
outputs = csv_general
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = centerline
variable = temp
outputs = csv_general
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
outputs = csv_general
[]
[ave_FST]
type = SideAverageValue
boundary = fuel_outer_radial_surface
variable = temp
outputs = csv_general
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
outputs = csv_general
[]
[ave_CIT]
type = SideAverageValue
boundary = cladding_inside_right
variable = temp
outputs = csv_general
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
outputs = csv_general
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = cladding
outputs = csv_general
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = cladding
outputs = csv_general
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
outputs = csv_general
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
outputs = csv_general
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
outputs = csv_general
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = fuel
outputs = csv_general
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
outputs = csv_general
[]
[clad_inner_vol]
type = InternalVolume
boundary = cladding_inside_all
outputs = csv_general
[]
[pellet_volume]
type = InternalVolume
boundary = fuel_outside_all
outputs = csv_general
[]
[gas_volume]
type = InternalVolume
boundary = 'fuel_outside_all cladding_inside_all'
execute_on = 'initial timestep_end'
addition = na_vol
outputs = csv_general
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = fuel_outer_radial_surface
outputs = csv_general
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = fuel_outer_radial_surface
outputs = csv_general
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = cladding_inside_right
diffusivity = thermal_conductivity
outputs = csv_general
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = fuel_outer_radial_surface
diffusivity = thermal_conductivity
outputs = csv_general
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = fuel
outputs = csv_general
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
outputs = csv_general
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
outputs = csv_general
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
outputs = csv_general
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = fuel
outputs = csv_general
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = fuel
execute_on = 'initial timestep_end'
outputs = csv_general
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
outputs = 'csv_general console'
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
outputs = csv_general
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
outputs = csv_general
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
outputs = csv_general
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
outputs = csv_general
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
outputs = csv_general
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
outputs = csv_general
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
outputs = csv_general
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
outputs = csv_general
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = cladding
variable = hoop_creep_strain
outputs = csv_general
[]
[max_clad_creep_strain_mag]
type = ElementExtremeValue
value_type = max
block = cladding
variable = creep_strain_mag
outputs = csv_general
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = cladding
variable = total_hoop_strain
outputs = csv_general
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = fuel_top
outputs = csv_general
[]
[avg_fuel_ax_thm_str]
type = AxisymmetricCenterlineAverageValue
variable = fuel_thermal_strain_yy
boundary = fuel_inner_radial_surface
outputs = csv_general
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'cladding_outside_top cladding_outside_right'
outputs = csv_general
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = wastage_thickness
outputs = 'console'
[]
[avg_fuel_temp]
type = ElementAverageValue
variable = temp
block = fuel
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = csv_general
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = cladding_outside_right
sort_by = y
outputs = none
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = centerline
sort_by = y
outputs = none
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = fuel_outer_radial_surface
sort_by = y
outputs = none
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = cladding_inside_right
sort_by = y
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = cladding_outside_right
sort_by = y
outputs = none
[]
[id_wastage]
type = FuelRodLineValueSampler
variable = wastage_thickness
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[od_wastage]
type = FuelRodLineValueSampler
variable = cc_wastage_thickness
material = 'clad'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
# PIE Comparison VPPs
[nrad_comparison_0]
type = FIPDAxialPIEComparison
boundary = fuel_outer_radial_surface
sort_by = y
csv_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /X423_ ${pin_id} _NRAD.csv'}
variable = disp_x
thermal_strain_variable = fuel_thm_exp
involved_component = fuel
mesh_generator = gen
series_type_to_read = 'Fuel O.D. (mils)'
outputs = csv_vpp_0
enable = ${enable_0}
execute_on = 'initial timestep_end'
extra_pp_output_name = 'extra_csv extra_csv_0'
max_fuel_elongation_pp_name = max_fuel_elongation
avg_fuel_ax_thm_str_pp_name = avg_fuel_ax_thm_str
gas_swelling_pp_name = gas_swelling
solid_swelling_pp_name = solid_swelling
[]
[nrad_comparison_a]
type = FIPDAxialPIEComparison
boundary = fuel_outer_radial_surface
sort_by = y
csv_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /X423A_ ${pin_id} _NRAD.csv'}
variable = disp_x
thermal_strain_variable = fuel_thm_exp
involved_component = fuel
mesh_generator = gen
series_type_to_read = 'Fuel O.D. (mils)'
outputs = csv_vpp_a
enable = ${enable_a}
execute_on = 'initial timestep_end'
extra_pp_output_name = 'extra_csv extra_csv_a'
max_fuel_elongation_pp_name = max_fuel_elongation
avg_fuel_ax_thm_str_pp_name = avg_fuel_ax_thm_str
gas_swelling_pp_name = gas_swelling
solid_swelling_pp_name = solid_swelling
[]
[nrad_comparison_b]
type = FIPDAxialPIEComparison
boundary = fuel_outer_radial_surface
sort_by = y
csv_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /X423B_ ${pin_id} _NRAD.csv'}
variable = disp_x
thermal_strain_variable = fuel_thm_exp
involved_component = fuel
mesh_generator = gen
series_type_to_read = 'Fuel O.D. (mils)'
outputs = csv_vpp_b
enable = ${enable_b}
execute_on = 'initial timestep_end'
extra_pp_output_name = 'extra_csv extra_csv_b'
max_fuel_elongation_pp_name = max_fuel_elongation
avg_fuel_ax_thm_str_pp_name = avg_fuel_ax_thm_str
gas_swelling_pp_name = gas_swelling
solid_swelling_pp_name = solid_swelling
[]
[nrad_comparison_c]
type = FIPDAxialPIEComparison
boundary = fuel_outer_radial_surface
sort_by = y
csv_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /X423C_ ${pin_id} _NRAD.csv'}
variable = disp_x
thermal_strain_variable = fuel_thm_exp
involved_component = fuel
mesh_generator = gen
series_type_to_read = 'Fuel O.D. (mils)'
outputs = csv_vpp_c
enable = ${enable_c}
execute_on = 'initial timestep_end'
extra_pp_output_name = 'extra_csv extra_csv_c'
max_fuel_elongation_pp_name = max_fuel_elongation
avg_fuel_ax_thm_str_pp_name = avg_fuel_ax_thm_str
gas_swelling_pp_name = gas_swelling
solid_swelling_pp_name = solid_swelling
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_bottom = cladding_outside_bottom
clad_inner_wall = cladding_inside_right
clad_outer_wall = cladding_outside_right
clad_top = cladding_outside_top
pellet_exteriors = fuel_outside_all
[]
[fuel_thm_exp]
type = LayeredAverage
variable = fuel_thermal_strain_xx
direction = y
num_layers = 1000
block = fuel
[]
[clad_thm_exp]
type = LayeredAverage
variable = clad_thermal_eigenstrain_xx
direction = y
num_layers = 1000
block = cladding
[]
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
sync_times = ${time_spots}
[]
[csv_vpp_0]
type = CSV
sync_only = true
sync_times = ${time_spots_0}
enable = ${enable_0}
create_latest_symlink = true
[]
[csv_vpp_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
create_latest_symlink = true
[]
[csv_vpp_b]
type = CSV
sync_only = true
sync_times = ${time_spots_b}
enable = ${enable_b}
create_latest_symlink = true
[]
[csv_vpp_c]
type = CSV
sync_only = true
sync_times = ${time_spots_c}
enable = ${enable_c}
create_latest_symlink = true
[]
[csv_general]
type = CSV
sync_times = ${time_spots}
[]
[extra_csv]
type = CSV
sync_only = true
sync_times = ${time_spots_extra}
[]
[extra_csv_0]
type = CSV
sync_only = true
sync_times = ${time_spots_0}
enable = ${enable_0}
[]
[extra_csv_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
[]
[extra_csv_b]
type = CSV
sync_only = true
sync_times = ${time_spots_b}
enable = ${enable_b}
[]
[extra_csv_c]
type = CSV
sync_only = true
sync_times = ${time_spots_c}
enable = ${enable_c}
[]
[exodus]
type = Exodus
sync_only = true
sync_times = ${time_spots}
[]
[]
(test/tests/solid_mechanics/upuzr_gas_LM/preset_rad.i)
# This test is to verify the calculation in UPuZrVolumetricSwellingEigenstrainLM and
# FgrUPuZrLM (the preset bubble radius)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
eigenstrain_names = 'gas_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy'
[]
[]
[AuxVariables]
[temp]
initial_condition = 1000
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[temp]
type = ConstantAux
variable = temp
value = 1000
[]
[volumetric_strain]
type = RankTwoScalarAux
variable = volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[]
[Functions]
[fission_rate_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 2.5e19'
[]
[pressure_func]
type = PiecewiseLinear
x = '0 7e7'
y = '0 1e6'
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[Pressure]
[Side]
boundary = 'right top front'
function = pressure_func
[]
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
[]
[fission_rate]
type = GenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = 'fission_rate_func'
outputs = all
[]
[burnup]
type = UPuZrBurnup
density = 16000
initial_X_Pu = 0.0
initial_X_Zr = 0.225
outputs = all
[]
[gas_swelling]
type = UPuZrVolumetricSwellingEigenstrainLM
temperature = temp
use_plenum_pressure = false
use_preset_bubble_size = true
initial_porosity = 0.1
outputs = all
output_properties = 'porosity gaseous_porosity gas_swelling_vdw gas_swelling_ideal gas_swelling gas_bubble_radius gas_bubble_density'
eigenstrain_name = gas_swelling_eigenstrain
anisotropic_factor = 1.25
[]
[fission_gas_behavior]
type = FgrUPuZrLM
temperature = temp
outputs = all
output_properties = 'fis_gas_prod fis_gas_rel fis_gas_ret'
[]
[]
[Executioner]
type = Transient
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-4
l_tol = 1e-5
num_steps = 70
dt = 1e6
[]
[Postprocessors]
[gas_produced]
type = ElementAverageValue
variable = fis_gas_prod
[]
[gas_released]
type = ElementAverageValue
variable = fis_gas_rel
[]
[gas_retained]
type = ElementAverageValue
variable = fis_gas_ret
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
[]
[gas_swell]
type = ElementAverageValue
variable = gas_swelling
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[gas_swelling_vdw]
type = ElementAverageValue
variable = gas_swelling_vdw
[]
[gas_swelling_ideal]
type = ElementAverageValue
variable = gas_swelling_ideal
[]
[gas_bubble_radius]
type = ElementAverageValue
variable = gas_bubble_radius
[]
[gas_bubble_density]
type = ElementAverageValue
variable = gas_bubble_density
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
csv = true
[]