Nuclear Material Zirconium Alloy

Reduces the Material block length for LWR Zr-4 cladding within input files.

Description

This NuclearMaterialZirconiumAlloy action reduces BISON input file length by internally generating the Materials required for simulating elastic LWR nuclear cladding, specifically Zirconium Alloy.

warningwarning:For LWR Use Only

This action is designed for use with only Light Water Reactor simulations which deal with UO2 fuel currently.

User-based Interface

To reduce the length and complexity of necessary blocks for simulations, an extensive standardization of operating conditions has been utilized within the NuclearMaterials.

All of the blocks, generated with the default parameter settings, are shown in Table 1, Table 2, and Table 3. These blocks are created internally, based on the Cladding Models and/or physics conditions shown. Additional parameters for each created class can be found below.

commentnote

Certain parameters are determined internally to further reduce input length and complexity.

The classes in Table 1 are automatically created when using NuclearMaterialZirconiumAlloy depending on the Cladding Models and Fission operation used as well as what occurs under Physics conditions.

Table 1: Material classes created by the NuclearMaterialZirconiumAlloy action

Created ClassesPre-Set ParametersBlock NameCladding ModelsFission Operation
ComputeIsotropicElasticityTensorpoissons_ratio = 0.3clad_elasticity_tensorElastic |All Fission Types
youngs_modulus = 7.5e10
ComputeMultipleInelasticStresstangent_operator = elasticclad_stressElastic |All Fission Types
inelastic_models = clad_zrycreep
ZryCreepLimbackHoppeUpdateabsolute_tolerance = 1e-10clad_zrycreepCreep |All Fission Types
max_iterations = 50
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
ZryThermalExpansionMATPROEigenstrainburnup_function = burnupclad_thermal_expansionThermalExpansion|All Fission Types
eigenstrain_name = clad_thermal_strain
ZryIrradiationGrowthEigenstrainfast_neutron_fluence = fast_neutron_fluenceclad_irradiation_swelling |IrradiationGrowth|All Fission Types
eigenstrain_name = fuel_irradiation_strain
StrainAdjustedDensitystrain_free_density = 6551.0clad_density|All Fission Types
HeatConductionMaterialthermal_conductivity = 16.0clad_thermal|All Fission Types
specific_heat = 330.0

The classes in Table 2 are only created when Thermal or if any Fission occurs under the Fission Operation conditions.

Table 2: Auxiliary classes created by the NuclearMaterialZirconiumAlloy action

Created Auxiliary ClassesTypePre-Set ParametersBlock NamePhysics/Cladding Models
TemperatureVariabletemperatureThermal
Fast Neutron FluxAuxVariable|fast_neutron_fluxCreep
Fast Neutron FluenceAuxVariable|fast_neutron_fluence| Creep
HeatConductionKernelvariable = temperaturefuel_heatThermal
extra_vector_tags = ref
HeatConductionTimeDerivativeKernelvariable = temperaturefuel_heat_ieThermal
extra_vector_tags = ref

Table 3: Actions created by the NuclearMaterialZirconiumAlloy action

Created ActionsPre-Set ParametersBlock NamePhysics/Cladding Model Conditions
TensorMechanicsActionvolumetric_locking_correction = falsePhysics/SolidMechanics/QuasiStaticMechanics
automatic_eigenstrain_names = true
decomposition_method = EigenSolution
strain = FINITE
## Example Simple Input Syntax

NuclearMaterials simplifies Material block inputs by applying standard parameter and classes depending on the simulation. It is possible to only replace the Materials blocks in an input file with the equivalent NuclearMaterialZirconiumAlloy. This procedure greatly reduces the length and complexity of the the necessary inputs while fully retaining the same functionality and end results. An example of this can be seen below.

Fission Operation

commentnote

This required parameter describes the characteristic type of fission study that will occur, i.e. Normal, LOCA, etc. This must be placed under the NuclearMaterials block heading and cannot be placed under sub-blocks such as ZirconiumAlloy.

Cladding Model Parameters

  • Elastic : Models elastic stress for an incremental formulation, both

  • incremental small and incremental finite strain formulations.

  • Creep : Models secondary Hoppe irradiation creep and Limback-Andersson

  • secondary and primary thermal creep

  • IrradiationGrowth : Models strains due to irradiation growth.

  • ThermalExpansion : Models isotropic or anisotropic thermal expansion with

  • condition dependent thermal expansion coefficient.

Expanded Cladding Material Block

[Materials<<<{"href": "../../Materials/index.html"}>>>]
  [clad_thermal]
    type = HeatConductionMaterial<<<{"description": "General-purpose material model for heat conduction", "href": "../../../source/materials/HeatConductionMaterial.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    thermal_conductivity<<<{"description": "The thermal conductivity value"}>>> = 16.0
    specific_heat<<<{"description": "The specific heat value"}>>> = 330.0
  []
  [clad_elasticity_tensor]
    type = ZryElasticityTensor<<<{"description": "Either provides constant elasticity constants for Zircaloy cladding or calculates the Young's modulus and Poisson's ratio for Zircaloy cladding using MATPRO relations as a function of temperature and fast neutron fluence.", "href": "../../../source/materials/solid_mechanics/ZryElasticityTensor.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
  []
  [clad_stress]
    type = ComputeMultipleInelasticStress<<<{"description": "Compute state (stress and internal parameters such as plastic strains and internal parameters) using an iterative process.  Combinations of creep models and plastic models may be used.", "href": "../../../source/materials/ComputeMultipleInelasticStress.html"}>>>
    tangent_operator<<<{"description": "Type of tangent operator to return.  'elastic': return the elasticity tensor.  'nonlinear': return the full, general consistent tangent operator."}>>> = elastic
    inelastic_models<<<{"description": "The material objects to use to calculate stress and inelastic strains. Note: specify creep models first and plasticity models second."}>>> = 'clad_zrycreep'
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
  []
  [clad_zrycreep]
    type = ZryCreepLimbackHoppeUpdate<<<{"description": "Computes the Limback-Andersson thermal primary and secondary creep and the Hoppe irradiation creep for Zircaloy cladding.  This material must be run in conjunction with ComputeMultipleInelasticStress.", "href": "../../../source/materials/solid_mechanics/ZryCreepLimbackHoppeUpdate.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    temperature<<<{"description": "The coupled temperature (K)"}>>> = temp
    fast_neutron_flux<<<{"description": "The fast neutron flux"}>>> = fast_neutron_flux
    fast_neutron_fluence<<<{"description": "The fast neutron fluence"}>>> = fast_neutron_fluence
    model_irradiation_creep<<<{"description": "Set true to activate irradiation induced creep"}>>> = true
    model_primary_creep<<<{"description": "Set true to activate primary creep"}>>> = true
    model_thermal_creep<<<{"description": "Set true to activate steady state thermal creep"}>>> = true
  []
  [thermal_expansion]
    type = ZryThermalExpansionMATPROEigenstrain<<<{"description": "Computes eigenstrain due to anisotropic thermal expansion in Zircaloy cladding using Matpro correlations.", "href": "../../../source/materials/solid_mechanics/ZryThermalExpansionMATPROEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    temperature<<<{"description": "Coupled temperature"}>>> = temp
    stress_free_temperature<<<{"description": "Reference temperature at which there is no thermal expansion for thermal eigenstrain calculation"}>>> = 295.0
    eigenstrain_name<<<{"description": "Material property name for the eigenstrain tensor computed by this model. IMPORTANT: The name of this property must also be provided to the strain calculator."}>>> = clad_thermal_eigenstrain
  []
  [irradiation_swelling]
    type = ZryIrradiationGrowthEigenstrain<<<{"description": "Computes eigenstrain from irradiation growth in Zircaloy cladding using either the Franklin or ESCORE models.", "href": "../../../source/materials/solid_mechanics/ZryIrradiationGrowthEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    fast_neutron_fluence<<<{"description": "The fast neutron fluence"}>>> = fast_neutron_fluence
    zircaloy_material_type<<<{"description": "Type of irradiation growth volumetric swelling formulation."}>>> = stress_relief_annealed
    eigenstrain_name<<<{"description": "Material property name for the eigenstrain tensor computed by this model. IMPORTANT: The name of this property must also be provided to the strain calculator."}>>> = clad_irradiation_strain
  []
[]
(examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain/2D_discrete_finiteStrain.i)

Equivalent Simplified NuclearMaterial Cladding Block

[NuclearMaterials<<<{"href": "../index.html"}>>>]
  fission_operation<<<{"description": "Type of fission occuring in this simulation."}>>> = Normal
  [ZirconiumAlloy<<<{"href": "index.html"}>>>]
    [clad]
      block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = clad
      cladding_models<<<{"description": "Type(s) of physics models used on this block.   The choices are: Creep Elastic Plasticity ZryOxidation IrradiationGrowth ThermalExpansion ZrPhase ZryCladdingFailure"}>>> = 'Elastic Creep ThermalExpansion IrradiationGrowth'
      stress_free_temperature<<<{"description": "Reference temperature for thermal eigenstrain calculation"}>>> = 295.0
      localized_initial_temperature<<<{"description": "Localized Initial temperature in Kelvins.  This allows individual blocks to have different temperature conditions apart from the global initial conditions."}>>> = 580.0
    []
  []
[]
(examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_action/2D_discrete_finiteStrain_action.i)

Example Fully Reduced Input Syntax

Input file length and complexity can be reduced even further by use of additional Physics and/or CladdingModels block parameters, in addition to applying common parameters to sub-blocks under the NuclearMaterials header.

Physics parameters

  • Mechanics : This will create the TensorMechanicsAction block(s) under which it is listed. If listed under the NuclearMaterial block header, then this will be applied to all blocks under the header.

  • Thermal : This will create the temperature variable, the Kernel blocks HeatConduction and HeatConductionTimeDerivative needed to model thermal effects for ZirconiumAlloys.

Expanded Cladding Block

[Variables<<<{"href": "../../Variables/index.html"}>>>]
  # Define dependent variables and initial conditions
  [temp]
    initial_condition<<<{"description": "Specifies a constant initial condition for this variable"}>>> = 580.0 # set initial temp to coolant inlet
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
  []
[]

[AuxVariables<<<{"href": "../../AuxVariables/index.html"}>>>]
  [grain_radius]
    block = pellet_type_1
    initial_condition<<<{"description": "Specifies a constant initial condition for this variable"}>>> = 10e-6
  []
[]

[Kernels<<<{"href": "../../Kernels/index.html"}>>>]
  [heat]
    # gradient term in heat conduction equation
    type = HeatConduction<<<{"description": "Diffusive heat conduction term $-\\nabla\\cdot(k\\nabla T)$ of the thermal energy conservation equation", "href": "../../../source/kernels/HeatConduction.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temp
    extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = 'ref'
  []
  [heat_ie]
    # time term in heat conduction equation
    type = HeatConductionTimeDerivative<<<{"description": "Time derivative term $\\rho c_p \\frac{\\partial T}{\\partial t}$ of the thermal energy conservation equation.", "href": "../../../source/kernels/HeatConductionTimeDerivative.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temp
    extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = 'ref'
  []
[]
[Physics<<<{"href": "../../Physics/index.html"}>>>]
  [SolidMechanics<<<{"href": "../../Physics/SolidMechanics/index.html"}>>>]
    [QuasiStatic<<<{"href": "../../Physics/SolidMechanics/QuasiStatic/index.html"}>>>]
      [clad]
        block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = clad
        add_variables<<<{"description": "Add the displacement variables"}>>> = true
        strain<<<{"description": "Strain formulation"}>>> = FINITE
        eigenstrain_names<<<{"description": "List of eigenstrains to be applied in this strain calculation"}>>> = 'clad_thermal_eigenstrain clad_irradiation_strain'
        generate_output<<<{"description": "Add scalar quantity output for stress and/or strain"}>>> = 'vonmises_stress stress_xx stress_yy stress_zz'
        extra_vector_tags<<<{"description": "The tag names for extra vectors that residual data should be saved into"}>>> = 'ref'
      []
    []
  []
[]

[Materials<<<{"href": "../../Materials/index.html"}>>>]
  # Define material behavior models and input material property data

  [clad_thermal]
    type = HeatConductionMaterial<<<{"description": "General-purpose material model for heat conduction", "href": "../../../source/materials/HeatConductionMaterial.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    thermal_conductivity<<<{"description": "The thermal conductivity value"}>>> = 16.0
    specific_heat<<<{"description": "The specific heat value"}>>> = 330.0
  []
  [clad_elasticity_tensor]
    type = ZryElasticityTensor<<<{"description": "Either provides constant elasticity constants for Zircaloy cladding or calculates the Young's modulus and Poisson's ratio for Zircaloy cladding using MATPRO relations as a function of temperature and fast neutron fluence.", "href": "../../../source/materials/solid_mechanics/ZryElasticityTensor.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
  []
  [clad_stress]
    type = ComputeMultipleInelasticStress<<<{"description": "Compute state (stress and internal parameters such as plastic strains and internal parameters) using an iterative process.  Combinations of creep models and plastic models may be used.", "href": "../../../source/materials/ComputeMultipleInelasticStress.html"}>>>
    tangent_operator<<<{"description": "Type of tangent operator to return.  'elastic': return the elasticity tensor.  'nonlinear': return the full, general consistent tangent operator."}>>> = elastic
    inelastic_models<<<{"description": "The material objects to use to calculate stress and inelastic strains. Note: specify creep models first and plasticity models second."}>>> = 'clad_zrycreep'
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
  []
  [clad_zrycreep]
    type = ZryCreepLimbackHoppeUpdate<<<{"description": "Computes the Limback-Andersson thermal primary and secondary creep and the Hoppe irradiation creep for Zircaloy cladding.  This material must be run in conjunction with ComputeMultipleInelasticStress.", "href": "../../../source/materials/solid_mechanics/ZryCreepLimbackHoppeUpdate.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    temperature<<<{"description": "The coupled temperature (K)"}>>> = temp
    fast_neutron_flux<<<{"description": "The fast neutron flux"}>>> = fast_neutron_flux
    fast_neutron_fluence<<<{"description": "The fast neutron fluence"}>>> = fast_neutron_fluence
    model_irradiation_creep<<<{"description": "Set true to activate irradiation induced creep"}>>> = true
    model_primary_creep<<<{"description": "Set true to activate primary creep"}>>> = true
    model_thermal_creep<<<{"description": "Set true to activate steady state thermal creep"}>>> = true
  []
  [thermal_expansion]
    type = ZryThermalExpansionMATPROEigenstrain<<<{"description": "Computes eigenstrain due to anisotropic thermal expansion in Zircaloy cladding using Matpro correlations.", "href": "../../../source/materials/solid_mechanics/ZryThermalExpansionMATPROEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    temperature<<<{"description": "Coupled temperature"}>>> = temp
    stress_free_temperature<<<{"description": "Reference temperature at which there is no thermal expansion for thermal eigenstrain calculation"}>>> = 295.0
    eigenstrain_name<<<{"description": "Material property name for the eigenstrain tensor computed by this model. IMPORTANT: The name of this property must also be provided to the strain calculator."}>>> = clad_thermal_eigenstrain
  []
  [irradiation_swelling]
    type = ZryIrradiationGrowthEigenstrain<<<{"description": "Computes eigenstrain from irradiation growth in Zircaloy cladding using either the Franklin or ESCORE models.", "href": "../../../source/materials/solid_mechanics/ZryIrradiationGrowthEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    fast_neutron_fluence<<<{"description": "The fast neutron fluence"}>>> = fast_neutron_fluence
    zircaloy_material_type<<<{"description": "Type of irradiation growth volumetric swelling formulation."}>>> = stress_relief_annealed
    eigenstrain_name<<<{"description": "Material property name for the eigenstrain tensor computed by this model. IMPORTANT: The name of this property must also be provided to the strain calculator."}>>> = clad_irradiation_strain
  []
  [clad_density]
    type = StrainAdjustedDensity<<<{"description": "Creates density material property", "href": "../../../source/materials/StrainAdjustedDensity.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    strain_free_density<<<{"description": "Material property for strain-free density"}>>> = 6551.0
  []
[]

[AuxKernels<<<{"href": "../../AuxKernels/index.html"}>>>]
  [grain_radius]
    type = GrainRadiusAux<<<{"description": "Computes grain evolution using an empirical model.", "href": "../../../source/auxkernels/GrainRadiusAux.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet_type_1
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = grain_radius
    temperature<<<{"description": "Coupled temperature (K)"}>>> = temp
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = linear
  []
[]
(examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain/2D_discrete_finiteStrain.i)

Fully Simplified Fuel Block

[NuclearMaterials<<<{"href": "../index.html"}>>>]
  generate_output<<<{"description": "Add scalar quantity output for stress and/or strain"}>>> = 'vonmises_stress stress_xx stress_yy stress_zz'
  fission_operation<<<{"description": "Type of fission occuring in this simulation."}>>> = Normal
  physics<<<{"description": "Type(s) of physics used on this block."}>>> = 'Mechanics Thermal'
  initial_temperature<<<{"description": "Initial temperature in Kelvins."}>>> = 580.0
  strain<<<{"description": "Strain formulation"}>>> = FINITE
  [ZirconiumAlloy<<<{"href": "index.html"}>>>]
    [clad]
      block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = clad
      cladding_models<<<{"description": "Type(s) of physics models used on this block.   The choices are: Creep Elastic Plasticity ZryOxidation IrradiationGrowth ThermalExpansion ZrPhase ZryCladdingFailure"}>>> = 'Elastic Creep IrradiationGrowth ThermalExpansion'
      stress_free_temperature<<<{"description": "Reference temperature for thermal eigenstrain calculation"}>>> = 295.0
      extra_vector_tags<<<{"description": "The tag names for extra vectors that residual data should be saved into"}>>> = 'ref'
    []
  []
[]
(examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_nuc_mat_action_integrated/2D_discrete_finiteStrain_nuc_mat_action_integrated.i)

The eigenstrain names must be included in the SolidMechanics QuasiStatic Action following the naming convention created by this class. The easiest method to ensure this continutity is to include Mechanics in the physics input parameter. By default, this will select automatic_eigenstrain_names = true.

warningwarning

automatic_eigenstrain_names = true, the eigenstrain_names will be populated under restrictive conditions for classes such as CompositeEigenstrain, ComputeReducedOrderEigenstrain, and RankTwoTensorMaterialADConverter. The input components for these classes are not included in the eigenstrain_names passed to the TensorMechanicsAction. Set the automatic_eigenstrain_names = false and populate this list manually if these components need to be included.

[Physics<<<{"href": "../../Physics/index.html"}>>>]
  [SolidMechanics<<<{"href": "../../Physics/SolidMechanics/index.html"}>>>]
    [QuasiStatic<<<{"href": "../../Physics/SolidMechanics/QuasiStatic/index.html"}>>>]
      [pellets]
        block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = pellet_type_1
        add_variables<<<{"description": "Add the displacement variables"}>>> = true
        strain<<<{"description": "Strain formulation"}>>> = FINITE
        eigenstrain_names<<<{"description": "List of eigenstrains to be applied in this strain calculation"}>>> = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
        generate_output<<<{"description": "Add scalar quantity output for stress and/or strain"}>>> = 'vonmises_stress stress_xx stress_yy stress_zz'
        extra_vector_tags<<<{"description": "The tag names for extra vectors that residual data should be saved into"}>>> = 'ref'
      []
    []
  []
[]
(examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_action/2D_discrete_finiteStrain_action.i)