- ht9_modelsType(s) of physics models used on this block. The choices are: FIPD Elastic Creep ThermalExpansion
C++ Type:MultiMooseEnum
Controllable:No
Description:Type(s) of physics models used on this block. The choices are: FIPD Elastic Creep ThermalExpansion
Nuclear Material HT9
Reduces the Material block length for HT9 cladding within input files.
Description
This NuclearMaterialHT9 action reduces BISON input file length by internally generating the Materials required for simulating metallic nuclear cladding, specifically HT9.
The user may elect to use the nuclear_material_TH9_table9 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 HT9.
Table 1: Material classes created by the NuclearMaterialHT9 action
| Created Classes | Pre-Set Parameters | Block Name |
|---|---|---|
| ComputeIsotropicElasticityTensor | poissons_ratio = 0.3 | clad_elasticity_tensor |
| youngs_modulus = 7.5e10 | ||
| ComputeMultipleInelasticStress | tangent_operator = elastic | clad_stress |
| inelastic_models = clad_zrycreep | ||
| ZryCreepLimbackHoppeUpdate | absolute_tolerance = 1e-10 | clad_zrycreep |
| max_iterations = 50 | ||
| fast_neutron_flux = fast_neutron_flux | ||
| fast_neutron_fluence = fast_neutron_fluence| | ||
| ZryThermalExpansionMATPROEigenstrain| burnup_function = burnup | clad_thermal_expansion | |
| eigenstrain_name = clad_thermal_strain | ||
| ZryIrradiationGrowthEigenstrain | fast_neutron_fluence = fast_neutron_fluence| clad_irradiation_swelling | |
| eigenstrain_name = fuel_irradiation_strain | ||
| StrainAdjustedDensity | strain_free_density = 6551.0 | clad_density |
| HeatConductionMaterial | thermal_conductivity = 16.0 | clad_thermal |
| specific_heat = 330.0 |
Example Input Syntax
Expanded Cladding Block
[Materials]
initial_fuel_density = 15800
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
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
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.38e-03
pellet_outer_radius = 2.195e-03
pellet_height = 343.0e-3
clad_top_gap_height = 373.0e-3
clad_gap_width = 0.345e-3
bottom_clad_height = 7.9e-3
top_clad_height = 7.9e-3
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 3
ny_p = 40
nx_c = 2
ny_c = 40
ny_cu = 2
ny_cl = 2
pellet_quantity = 1
elem_type = QUAD4
[]
# mesh options
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[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 = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = ParsedFunction
expression = 0.151e6
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 8.1e-3
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.195e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 343.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[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 = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
[]
[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 = clad
eigenstrain_names = 'clad_thermal_strain'
[]
[]
[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]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
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 = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_zz
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[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 = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductance = 176811.6
[]
[]
[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]
[plenumPressure]
boundary = 9
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
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 2.195e-03
X_Zr = 0.225
X_Pu_function = 0.163
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.225
initial_X_Pu = 0.163
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.163
block = pellet
temperature = temp
[]
[fuel_inlastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-2
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 5e17
interconnection_initiating_porosity = 0.29
interconnection_terminating_porosity = 0.31
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.163
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.30
fractional_fgr_initial = 0.4
fractional_fgr_post = 0.8
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
(examples/metal_fuel/x441_coarse/x441_group_A_nominal.i)Simplified Cladding Block
[NuclearMaterials<<<{"href": "../index.html"}>>>]
[HT9<<<{"href": "index.html"}>>>]
[clad]
block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = clad
additional_generate_output<<<{"description": "Add scalar quantity output for stress and/or strain (will be appended to the list in `generate_output`)"}>>> = 'hoop_creep_strain hoop_elastic_strain'
ht9_models<<<{"description": "Type(s) of physics models used on this block. The choices are: FIPD Elastic Creep ThermalExpansion"}>>> = 'Elastic Creep ThermalExpansion'
fast_flux_factor<<<{"description": "Constant multiplied against the function, rod average linear power, or q_variable."}>>> = 2.47e19
[]
[]
[](examples/NuclearMaterialActions/MetallicFuel/x441_group_A_nominal_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
- automatic_eigenstrain_namesTrueCollects all material eigenstrains and passes to required strain calculator within the solid mechanics physics internally.
Default:True
C++ Type:bool
Controllable:No
Description:Collects all material eigenstrains and passes to required strain calculator within the solid mechanics physics internally.
- 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.
- 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
- density7874Clad density in kg-HT9/m^3.
Default:7874
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Clad density in kg-HT9/m^3.
- 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
- 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.
- fast_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_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_functionThe function that describes the fast neutron flux
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:The function that describes the fast neutron flux
- 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
- 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
- localized_initial_temperatureLocalized Initial temperature in Kelvins. This allows individual blocks to have different temperature conditions apart from the global initial conditions.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Localized Initial temperature in Kelvins. This allows individual blocks to have different temperature conditions apart from the global initial conditions.
- localized_temperature_functionFunction that describes localized temperature within the block.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Function that describes localized temperature within the block.
- 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.236Poisson's ratio for the material.
Default:0.236
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.
- temperatureThe coupled temperature (K).
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The coupled temperature (K).
- thermal_expansion_coeff1.2e-05Thermal expansion coefficient.
Default:1.2e-05
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Thermal expansion coefficient.
- 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.88e+11Young's modulus of the material.
Default:1.88e+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`)
- 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
- 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.