- ss316_modelsType(s) of physics models used on this block. The choices are: Elastic Creep ThermalExpansion ThermalProperties
C++ Type:MultiMooseEnum
Controllable:No
Description:Type(s) of physics models used on this block. The choices are: Elastic Creep ThermalExpansion ThermalProperties
Nuclear Material SS316
Reduces the Material block length for SS316 cladding within input files.
Description
This NuclearMaterialSS316 action reduces BISON input file length by internally generating the Materials required for simulating metallic nuclear cladding, specifically SS316.
The user may elect to use the nuclear_material_SS316_table action to generate the necessary material classes for common metallic fuel simulations. All of the material blocks, generated with the default parameter settings, are shown in Table 1.
Fission Operation
This required parameter describes the characteristic type of fission study that will occur. For metallic fuel type simulations, this is simply labeled as fission_operation = Normal. This must be placed under the NuclearMaterials block heading and cannot be placed under sub-blocks such as SS316.
Table 1: Material classes created by the NuclearMaterialSS316 action
| Created Classes | Pre-Set Parameters | Block Name | SS316 models |
|---|---|---|---|
| ComputeIsotropicElasticityTensor | poissons_ratio = 0.265 | clad_elasticity_tensor | Elastic (No Creep) |
| youngs_modulus = 190e9 | |||
| SS316ElasticityTensor | clad_elasticity_tensor | Elastic + Creep | |
| ComputeLinearElasticStress | strain = SMALL | clad_stress | Elastic (No Creep) |
| ComputeFiniteStrainElasticStress | strain = FINITE | clad_stress | Elastic (No Creep) |
| ComputeMultipleInelasticStress | clad stress | Elastic + Creep | |
| StrainAdjustedDensity | strain_free_density = 8000.0 | clad_density | |
| DerivativeParsedMaterial | density_expression = {user_input} | clad_density | |
| SS316Thermal | clad_thermal | Thermal(Properties/Expansion) | |
| Elastic | |||
| SS316ThermalExpansionEigenstrain | clad_thermal_expansion | ThermalExpansion | |
| FastNeutronFlux | fast_neutron_flux | Creep | |
| SS316CreepUpdate | clad_creep | Creep |
Example Input Syntax
Expanded Cladding Block
[Materials]
density = 13630.0
A_U = 0.238
A_Pu = 0.239
A_N = 0.014
X_Pu = 0.1
X_N = 0.5
avo = 6.0221408e23
M_avg = '${fparse X_N * A_N + X_Pu * A_Pu + (1.0 - X_N - X_Pu) * A_U}'
atoms = '${fparse density / M_avg * (1.0 - X_N) * avo}'
[GlobalParams]
density = ${density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
use_displaced_mesh = false
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.51e-3
pellet_outer_radius = 3.1e-3
pellet_height = 343e-3
clad_top_gap_height = 43.5e-3
clad_gap_width = 0.325e-3
bottom_clad_height = 8e-3
top_clad_height = 8e-3
clad_bot_gap_height = 0.2e-3 # unknown
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
elem_type = QUAD8
[]
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 350
[]
[]
[AuxVariables]
[pellet_wall_temp]
order = CONSTANT
family = MONOMIAL
[]
[radial_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[clad_inner_wall_temp]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 35e6 35100000' # unknown, final burnup was 9.6 %
y = '0 1 1 0'
[]
[axial_peaking_factors]
type = PiecewiseLinear
axis = y
x = '0 46e-3 111e-3 200e-3 248e-3 313e-3 352e-3'
y = '73e3 73e3 82e3 85e3 82e3 74e3 74e3'
[]
[fission_func]
type = ParsedFunction
symbol_names = 'axial_peaking_factors power_history'
symbol_values = 'axial_peaking_factors power_history'
expression = 'linear_heating_rate := axial_peaking_factors * power_history;
pellet_cross_sectional_area := 3.14159 * pow( 3.1e-3, 2 );
volumetric_power := linear_heating_rate / pellet_cross_sectional_area;
energy_per_fission := 3.2e-11;
volumetric_power / energy_per_fission'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 35100000'
y = '0.151e6 0.151e6' # unknown, Na coolant
[]
[coolant_inlet_temp]
type = PiecewiseLinear
x = '0 1e5 35e6 35100000'
y = '350 644 644 350'
[]
[coolant_outlet_temp]
type = PiecewiseLinear
x = '0 1e5 35e6 35100000'
y = '350 746 746 350'
[]
[coolant_wall_temp]
type = ParsedFunction
symbol_values = 'coolant_inlet_temp coolant_outlet_temp'
symbol_names = 'coolant_inlet_temp coolant_outlet_temp'
expression = 'rod_length := 343e-3 + 43.5e-3 + 2 * 8e-3;
delta_temp := coolant_outlet_temp - coolant_inlet_temp;
interpolated_temp := coolant_inlet_temp + y * delta_temp / rod_length;
max( min( interpolated_temp, coolant_outlet_temp ), coolant_inlet_temp )'
[]
[radial_heat_flux]
type = ParsedFunction
symbol_values = 'coolant_wall_temp power_history axial_peaking_factors'
symbol_names = 'coolant_wall_temp power_history axial_peaking_factors'
expression = 'linear_heating_rate := axial_peaking_factors * power_history;
pellet_radius := 3.1e-3;
pellet_circumference := 3.14159 * pellet_radius * 2;
linear_heating_rate / pellet_circumference'
[]
[clad_inner_wall_temp]
type = ParsedFunction
symbol_values = 'radial_heat_flux coolant_wall_temp'
symbol_names = 'radial_heat_flux coolant_wall_temp'
expression = 'conductivity_316ss := 22;
clad_thickness := 0.51e-3;
coolant_wall_temp + radial_heat_flux / conductivity_316ss * clad_thickness'
[]
[pellet_wall_temp]
type = ParsedFunction
symbol_values = 'radial_heat_flux coolant_wall_temp clad_inner_wall_temp'
symbol_names = 'radial_heat_flux coolant_wall_temp clad_inner_wall_temp'
expression = 'conductivity_gap := 100;
gap_thickness := 0.325e-3;
clad_inner_wall_temp + radial_heat_flux / conductivity_gap * gap_thickness'
[]
[plenum_pressure]
type = ConstantFunction
value = 12.4e6 # initial fill
[]
[porosity_ramp]
type = PiecewiseLinear
x = '0 1e5 35e6 35100000'
y = '0.03 0.03 0.05 0.05' # Pellets start at 96.8% TD, but no data on final porosity.
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
strain = SMALL
incremental = true
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_expansion fuel_swelling'
use_automatic_differentiation = true
[]
[clad]
block = clad
strain = SMALL
incremental = true
extra_vector_tags = 'ref'
use_automatic_differentiation = true
[]
[]
[Kernels]
[gravity]
type = ADGravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[pellet_wall_temp]
type = FunctionAux
variable = pellet_wall_temp
function = pellet_wall_temp
[]
[radial_heat_flux]
type = FunctionAux
variable = radial_heat_flux
function = radial_heat_flux
[]
[clad_inner_wall_temp]
type = FunctionAux
variable = clad_inner_wall_temp
function = clad_inner_wall_temp
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[plenumPressure]
boundary = 9
function = plenum_pressure
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
function = coolant_wall_temp
variable = temp
[]
[pellet_to_clad_cooling]
type = FunctionDirichletBC
boundary = 10
function = pellet_wall_temp
variable = temp
[]
[]
[Materials]
[fission]
type = ADGenericFunctionMaterial
prop_names = fission_rate
prop_values = fission_func
outputs = all
[]
[fuel_thermal]
block = pellet
type = ADMNThermal
temperature = temp
porosity = porosity
outputs = all
[]
[fuel_porosity]
block = pellet
type = ADGenericFunctionMaterial
prop_names = porosity
prop_values = porosity_ramp
outputs = all
[]
[fuel_elasticity_tensor]
block = pellet
type = ADMNElasticityTensor
temperature = temp
porosity = porosity
output_properties = 'youngs_modulus poissons_ratio'
outputs = all
[]
[fuel_thermal_expansion]
block = pellet
type = ADMNThermalExpansionEigenstrain
eigenstrain_name = fuel_thermal_expansion
stress_free_temperature = 350
temperature = temp
[]
[fuel_creep]
block = pellet
type = ADMNCreepUpdate
temperature = temp
porosity = porosity
fission_rate = fission_rate
outputs = all
[]
[burnup]
type = ADBurnup
block = pellet
atoms_heavy_metal_per_volume = ${atoms}
outputs = all
[]
[fuel_swelling]
block = pellet
type = ADMNVolumetricSwellingEigenstrain
eigenstrain_name = fuel_swelling
temperature = temp
initial_porosity = 0.03
burnup = burnup
outputs = all
[]
[fuel_radial_return_stress]
block = pellet
type = ADComputeMultipleInelasticStress
inelastic_models = 'fuel_creep'
[]
[fuel_density]
block = pellet
type = ADStrainAdjustedDensity
strain_free_density = ${density}
[]
[clad_elasticity_tensor]
block = clad
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 190e9
poissons_ratio = 0.265
[]
[clad_stress]
block = clad
type = ADComputeLinearElasticStress
[]
[clad_thermal]
block = clad
type = ADSS316Thermal
temperature = temp
[]
[clad_density]
block = clad
type = ADStrainAdjustedDensity
strain_free_density = 8000
[]
[]
(assessment/nitride/EBRII/K4/analysis/base.i)Simplified Cladding Block
[NuclearMaterials<<<{"href": "../index.html"}>>>]
[SS316<<<{"href": "index.html"}>>>]
[clad]
block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = clad
incremental<<<{"description": "Use incremental or total strain"}>>> = true
strain<<<{"description": "Strain formulation"}>>> = SMALL
ss316_models<<<{"description": "Type(s) of physics models used on this block. The choices are: Elastic Creep ThermalExpansion ThermalProperties"}>>> = 'Elastic'
[]
[]
[](assessment/nitride/EBRII/K4/analysis/base_action.i)The eigenstrains have been automatically parsed and included by wrapping the SolidMechanics QuasiStatic Action inside the NuclearMaterials following the naming convention created by this class.
Input Parameters
- active__all__ If specified only the blocks named will be visited and made active
Default:__all__
C++ Type:std::vector<std::string>
Controllable:No
Description:If specified only the blocks named will be visited and made active
- add_variablesFalseAdd the displacement variables
Default:False
C++ Type:bool
Controllable:No
Description:Add the displacement variables
- additional_physicsType(s) of physics used on this block. The choices are: Mechanics Thermal
C++ Type:MultiMooseEnum
Controllable:No
Description:Type(s) of physics used on this block. The choices are: Mechanics Thermal
- base_nameBase name for the MaterialProperties.
C++ Type:std::string
Controllable:No
Description:Base name for the MaterialProperties.
- d1_functionFunction to be multiplied by d1
C++ Type:std::vector<FunctionName>
Unit:(no unit assumed)
Controllable:No
Description:Function to be multiplied by d1
- d1_function_variableVariable to be used when evaluating d1_function. If not given, time will be used.
C++ Type:std::vector<std::string>
Controllable:No
Description:Variable to be used when evaluating d1_function. If not given, time will be used.
- density8000Clad density in kg-SS316/m^3.
Default:8000
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Clad density in kg-SS316/m^3.
- density_expressionParsed function (see FParser) expression for the parsed density material
C++ Type:FunctionExpression
Unit:(no unit assumed)
Controllable:No
Description:Parsed function (see FParser) expression for the parsed density material
- diffusion_1st_activation_energiesDiffusion activation energies.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Diffusion activation energies.
- diffusion_1st_coefficients1st diffusion coefficient.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:1st diffusion coefficient.
- diffusion_2nd_activation_energiesSecond diffusion activation energy
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Second diffusion activation energy
- diffusion_2nd_coefficients2nd diffusion coefficient
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:2nd diffusion coefficient
- elastic_constants_modellegacy_ifrElastic constants model. Choices are: ornl legacy_ifr
Default:legacy_ifr
C++ Type:MooseEnum
Controllable:No
Description:Elastic constants model. Choices are: ornl legacy_ifr
- element_decay_constantsRadioactive decay constant for elements tracked
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Radioactive decay constant for elements tracked
- element_scalingRelative scaling of element percentages
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Relative scaling of element percentages
- elements_initial_concentrationRelative ratio of element concentration
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Relative ratio of element concentration
- elements_trackedThe elements tracked within TRISO simulations.
C++ Type:MultiMooseEnum
Controllable:No
Description:The elements tracked within TRISO simulations.
- extra_vector_tagsThe tag names for extra vectors that residual data should be saved into
C++ Type:std::vector<TagName>
Controllable:No
Description:The tag names for extra vectors that residual data should be saved into
- familyLAGRANGESpecifies the family of FE shape functions to use for this variable.
Default:LAGRANGE
C++ Type:MooseEnum
Controllable:No
Description:Specifies the family of FE shape functions to use for this variable.
- flux_factor1Constant multiplied against the function, rod average linear power, or q_variable.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Constant multiplied against the function, rod average linear power, or q_variable.
- flux_functionFunction which contains the neutron flux data.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Function which contains the neutron flux data.
- fuel_pin_geometryName of the UserObject that reads the pin geometry from the mesh.
C++ Type:UserObjectName
Controllable:No
Description:Name of the UserObject that reads the pin geometry from the mesh.
- generate_outputAdd scalar quantity output for stress and/or strain
C++ Type:MultiMooseEnum
Controllable:No
Description:Add scalar quantity output for stress and/or strain
- id_wastage_degradation_functionThe optional ID wastage degradation function that takes FCCI effect on cladding into consideration.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:The optional ID wastage degradation function that takes FCCI effect on cladding into consideration.
- inactiveIf specified blocks matching these identifiers will be skipped.
C++ Type:std::vector<std::string>
Controllable:No
Description:If specified blocks matching these identifiers will be skipped.
- incrementalFalseUse incremental or total strain
Default:False
C++ Type:bool
Controllable:No
Description:Use incremental or total strain
- od_wastage_degradation_functionThe optional OD wastage degradation function that takes CCCI effect on cladding into consideration.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:The optional OD wastage degradation function that takes CCCI effect on cladding into consideration.
- orderSECONDSpecifies the order of the FE shape function to use for this variable.
Default:SECOND
C++ Type:MooseEnum
Controllable:No
Description:Specifies the order of the FE shape function to use for this variable.
- out_of_plane_pressure0Function used to prescribe pressure in the out-of-plane direction (y for 1D Axisymmetric or z for 2D Cartesian problems)
Default:0
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Function used to prescribe pressure in the out-of-plane direction (y for 1D Axisymmetric or z for 2D Cartesian problems)
- physicsType(s) of physics used on this block.
C++ Type:MultiMooseEnum
Controllable:No
Description:Type(s) of physics used on this block.
- poissons_ratio0.265Poisson's ratio for the material.
Default:0.265
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Poisson's ratio for the material.
- strainSMALLStrain formulation
Default:SMALL
C++ Type:MooseEnum
Controllable:No
Description:Strain formulation
- stress_free_temperatureReference temperature for thermal eigenstrain calculation.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Reference temperature for thermal eigenstrain calculation.
- system_pressure_functionThe function to use for the pressure on the exterior of the cladding.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:The function to use for the pressure on the exterior of the cladding.
- tangent_operatornonlinearType of tangent operator to return. 'elastic': return the elasticity tensor. 'nonlinear': return the full, general consistent tangent operator.
Default:nonlinear
C++ Type:MooseEnum
Controllable:No
Description:Type of tangent operator to return. 'elastic': return the elasticity tensor. 'nonlinear': return the full, general consistent tangent operator.
- temperatureCoupled temperature: Used in multiple models
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled temperature: Used in multiple models
- use_automatic_differentiationFalseFlag to use automatic differentiation (AD) objects when possible
Default:False
C++ Type:bool
Controllable:No
Description:Flag to use automatic differentiation (AD) objects when possible
- youngs_modulus1.9e+11Young's modulus of the material.
Default:1.9e+11
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Young's modulus of the material.
Optional Parameters
- additional_generate_outputAdd scalar quantity output for stress and/or strain (will be appended to the list in `generate_output`)
C++ Type:MultiMooseEnum
Controllable:No
Description:Add scalar quantity output for stress and/or strain (will be appended to the list in `generate_output`)
- automatic_eigenstrain_namesTrueCollects all material eigenstrains and passes to required strain calculator within TMA internally.
Default:True
C++ Type:bool
Controllable:No
Description:Collects all material eigenstrains and passes to required strain calculator within TMA internally.
- blockThe list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to
- decomposition_methodEigenSolutionMethods to calculate the finite strain and rotation increments
Default:EigenSolution
C++ Type:MooseEnum
Controllable:No
Description:Methods to calculate the finite strain and rotation increments
- displacementsThe displacements appropriate for the simulation geometry and coordinate system: Used in density and strain models
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The displacements appropriate for the simulation geometry and coordinate system: Used in density and strain models
- volumetric_locking_correctionFalseFlag to correct volumetric locking
Default:False
C++ Type:bool
Controllable:No
Description:Flag to correct volumetric locking
Mechanics 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.