Plate Fuel Tutorial

Plate fuel is composed of enriched uranium or U-10Mo fuel sandwiched by metal cladding and is the most common fuel type in research reactors.

This tutorial focuses on the U-Mo monolithic fuel design (Rabin et al., 2020). U-10Mo fuel is sandwiched by an Al6061 cladding and Zr diffusion barriers located at the fuel-cladding interface.

Plate Fuel Mesh

Bison allows use of either its internal mesh generation capabilities via PlateMeshGenerator (see the input file snippet below) or a mesh generated by an external tool such as CUBIT.

[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
  [plate]
    type = PlateMeshGenerator<<<{"description": "Generates a mesh of plate fuel.", "href": "../../source/meshgenerators/PlateMeshGenerator.html"}>>>
    fuel_dimensions<<<{"description": "Length of the fuel in the x, y, and z directions."}>>> = '82.550e-3 19.050e-3 0.216e-3'
    liner_thickness<<<{"description": "Thickness of the liner material (equal on both sides of fuel)."}>>> = 0.025e-3
    cladding_thicknesses<<<{"description": "Left, right, bottom, top, back, and front thicknesses of cladding."}>>> = '9.4615e-3 9.4615e-3 3.175e-3 3.175e-3 0.489e-3 0.489e-3'
    number_fuel_elements<<<{"description": "Number of fuel elements in the x, y, and z directions."}>>> = '25 15 3'
    number_cladding_elements<<<{"description": "Number of elements at the left, right, bottom, top, back, and front sides of the fuel"}>>> = '4 4 3 3 4 4'
    ### For a more refined mesh (40 processors):
    # number_fuel_elements = '108 30 5'
    # number_cladding_elements = '15 15 5 5 8 8'
    ###
    number_liner_elements<<<{"description": "Number of liner elements on either side of the fuel."}>>> = 1
  []
[]
(examples/plate_fuel/plate_fuel_hypre.i)

Thermo-mechanical properties

U-10Mo Fuel

Thermal and mechanical properties of U-10Mo are:

[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
  [fuel_thermal]
    type = U10MoThermal<<<{"description": "Computes thermal properties of low enriched uranium-molybdenum alloy.", "href": "../../source/materials/U10MoThermal.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    thermal_conductivity_model<<<{"description": "The model to use for thermal conductivity: Burkes USHPRR USHPRRFit table"}>>> = USHPRR
    specific_heat_model<<<{"description": "The model to use for specific heat: Burkes USHPRR USHPRRFit table"}>>> = USHPRR
  []

  [fuel_elasticity]
    type = U10MoElasticityTensor<<<{"description": "Computes the Young's modulus and Poisson's ratio for U10Mo as a function of temperature and fission density and formulates the elasticity tensor.", "href": "../../source/materials/solid_mechanics/U10MoElasticityTensor.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
  []

  [fuel_thermal_expansion]
    type = U10MoThermalExpansionEigenstrain<<<{"description": "Computes eigenstrain due to thermal expansion in U-10Mo", "href": "../../source/materials/solid_mechanics/U10MoThermalExpansionEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    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."}>>> = fuel_thermal_strain
    stress_free_temperature<<<{"description": "Reference temperature at which there is no thermal expansion for thermal eigenstrain calculation"}>>> = 298
    model_option<<<{"description": "The modeling options for the compuation of U-10Mo thermal expansion eigenstrain are: Rest Burkes BurkesFit Saller BurkesSallerAvg Beghi McGeary"}>>> = Rest
  []
[]
(examples/plate_fuel/plate_fuel_hypre.i)

Al6061 Cladding

Thermal and mechanical properties of Al6061 are:

[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
  [clad_thermal]
    type = Al6061Thermal<<<{"description": "Computes the thermal properties of Al6061.", "href": "../../source/materials/Al6061Thermal.html"}>>>
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = cladding
    thermal_conductivity_model<<<{"description": "The model to use for thermal conductivity: O T6 CHEON"}>>> = T6
    specific_heat_model<<<{"description": "The model to use for specific heat: POLKINGHORNE CHEON ASM"}>>> = ASM
  []

  [clad_elasticity]
    type = Al6061ElasticityTensor<<<{"description": "Computes the Young's modulus and Poisson's ratio for Al6061 as a function of temperature and formulates the elasticity tensor.", "href": "../../source/materials/solid_mechanics/Al6061ElasticityTensor.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = cladding
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    fast_neutron_fluence<<<{"description": "Fast (E>0.1 MeV) neutron fluence (n/m^2) material name.  Needed with USHPRR option."}>>> = 0
    youngs_modulus_model<<<{"description": "The model to use for Young's modulus: USHPRR Kaufman KaufmanFit"}>>> = Kaufman
  []

  [clad_thermal_expansion]
    type = Al6061ThermalExpansionEigenstrain<<<{"description": "Computes eigenstrain due to thermal expansion for Al6061 using a function that describes the mean thermal expansion as a function of temperature.", "href": "../../source/materials/solid_mechanics/Al6061ThermalExpansionEigenstrain.html"}>>>
    stress_free_temperature<<<{"description": "Reference temperature at which there is no thermal expansion for thermal eigenstrain calculation"}>>> = 293.15
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    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_strain
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = cladding
  []
[]
(examples/plate_fuel/plate_fuel_hypre.i)

Zirconium Diffusion Barrier

Thermal and mechanical properties of Zr diffusion barrier are:

[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
  [liner_thermal]
    type = ZrThermal<<<{"description": "Computes the thermal conductivity and the specific heat, under constant pressure, for pure zirconium used as a liner in BWRs and plate fuel.", "href": "../../source/materials/ZrThermal.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = liner
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    thermal_conductivity_model<<<{"description": "The model to use for specific heat: Fink USHPRR USHPRRFit"}>>> = USHPRR
    specific_heat_model<<<{"description": "The model to use for specific heat: Fink USHPRR USHPRRFit"}>>> = USHPRR
  []

  [liner_elasticity]
    type = ZrElasticityTensor<<<{"description": "Computes the Young's modulus and Poisson's ratio for Zr as a function of temperature and formulates the elasticity tensor.", "href": "../../source/materials/solid_mechanics/ZrElasticityTensor.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = liner
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
  []

  [liner_thermal_expansion]
    type = ZrThermalExpansionEigenstrain<<<{"description": "Computes the eigenstrain due to thermal expansion of pure zirconium (Zr).", "href": "../../source/materials/solid_mechanics/ZrThermalExpansionEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = liner
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    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."}>>> = liner_thermal_strain
    stress_free_temperature<<<{"description": "Reference temperature at which there is no thermal expansion for thermal eigenstrain calculation"}>>> = 293.0
    model_option<<<{"description": "The modeling options for the compuation of Zr thermal expansion eigenstrain are: ASM Fink Wachs"}>>> = ASM
  []
[]
(examples/plate_fuel/plate_fuel_hypre.i)

Complete Input File Example

The complete input file is shown below. This input file runs well on eight processors.

#
# Plate fuel example problem.
#

[GlobalParams<<<{"href": "../../syntax/GlobalParams/index.html"}>>>]
  order = FIRST
  family = LAGRANGE
  displacements = 'disp_x disp_y disp_z'
  volumetric_locking_correction = false
[]

[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
  coord_type = XYZ
  [plate]
    type = PlateMeshGenerator<<<{"description": "Generates a mesh of plate fuel.", "href": "../../source/meshgenerators/PlateMeshGenerator.html"}>>>
    fuel_dimensions<<<{"description": "Length of the fuel in the x, y, and z directions."}>>> = '82.550e-3 19.050e-3 0.216e-3'
    liner_thickness<<<{"description": "Thickness of the liner material (equal on both sides of fuel)."}>>> = 0.025e-3
    cladding_thicknesses<<<{"description": "Left, right, bottom, top, back, and front thicknesses of cladding."}>>> = '9.4615e-3 9.4615e-3 3.175e-3 3.175e-3 0.489e-3 0.489e-3'
    number_fuel_elements<<<{"description": "Number of fuel elements in the x, y, and z directions."}>>> = '25 15 3'
    number_cladding_elements<<<{"description": "Number of elements at the left, right, bottom, top, back, and front sides of the fuel"}>>> = '4 4 3 3 4 4'
    ### For a more refined mesh (40 processors):
    # number_fuel_elements = '108 30 5'
    # number_cladding_elements = '15 15 5 5 8 8'
    ###
    number_liner_elements<<<{"description": "Number of liner elements on either side of the fuel."}>>> = 1
  []
  [translate_to_origin]
    type = TransformGenerator<<<{"description": "Applies a linear transform to the entire mesh.", "href": "../../source/meshgenerators/TransformGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = plate
    transform<<<{"description": "The type of transformation to perform (TRANSLATE, TRANSLATE_CENTER_ORIGIN, TRANSLATE_MIN_ORIGIN, ROTATE, SCALE)"}>>> = translate_min_origin
  []
  [add_nodesets]
    type = ExtraNodesetGenerator<<<{"description": "Creates a new node set and a new boundary made with the nodes the user provides.", "href": "../../source/meshgenerators/ExtraNodesetGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = translate_to_origin
    coord<<<{"description": "The nodes with coordinates you want to be in the nodeset. Separate multple coords with ';' (Either this parameter or \"nodes\" must be supplied)."}>>> = '0 0 0; 0.101473 0 0; 0.101473 0.0254 0'
    new_boundary<<<{"description": "The names of the boundaries to create"}>>> = 'left_bottom_back right_bottom_back right_top_back'
  []
[]

[Problem<<<{"href": "../../syntax/Problem/index.html"}>>>]
  type = ReferenceResidualProblem
  reference_vector = ref
  extra_tag_vectors = ref
  group_variables = 'disp_x disp_y disp_z'
[]

[Functions<<<{"href": "../../syntax/Functions/index.html"}>>>]
  [fission_density_fcn] # fis/m3
    type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../source/functions/PiecewiseLinear.html"}>>>
    data_file<<<{"description": "File holding CSV data"}>>> = 'average_fission_density.csv'
    scale_factor<<<{"description": "Scale factor to be applied to the ordinate values"}>>> = 1e27
    format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>> = columns
  []
  [fluence_fcn] # n/m2
    type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../source/functions/PiecewiseLinear.html"}>>>
    data_file<<<{"description": "File holding CSV data"}>>> = 'FLUENCE.csv'
    scale_factor<<<{"description": "Scale factor to be applied to the ordinate values"}>>> = 1
    format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>> = columns
  []
  [power_density]
    type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../source/functions/PiecewiseLinear.html"}>>>
    data_file<<<{"description": "File holding CSV data"}>>> = 'POWER_DENSITY.csv' # W/cm3 to W/m3
    scale_factor<<<{"description": "Scale factor to be applied to the ordinate values"}>>> = 1e6
    format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>> = columns
  []
  [L2AR]
    type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../source/functions/MooseParsedFunction.html"}>>>
    # fissprof_l2ar is the distribution from the L2AR tab: L2AR_ABAQUS at cell R64
    symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector."}>>> = 'x_offset y_offset'
    symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = '9.4615e-3 3.175e-3'
    expression<<<{"description": "The user defined function."}>>> = 'x0 := x-x_offset;
             y0 := y-y_offset;
             (4.669e-10*x0^5 - 8.657e-8*x0^4 + 5.877e-6*x0^3 - 0.0001962*x0^2 + 0.004373*x0 + 0.9446) * (5.047e-7*y0^6 - 2.974e-05*y0^5 + 0.0006881*y0^4 - 0.007883*y0^3 + 0.04726*y0^2 - 0.1458*y0 + 1.152)'
  []
  [power_history]
    type = CompositeFunction<<<{"description": "Multiplies an arbitrary set of functions together", "href": "../../source/functions/CompositeFunction.html"}>>>
    functions<<<{"description": "The functions to be multiplied together."}>>> = 'power_density L2AR'
  []
[]

[Variables<<<{"href": "../../syntax/Variables/index.html"}>>>]
  [temperature]
    initial_condition<<<{"description": "Specifies a constant initial condition for this variable"}>>> = 294
  []
  [disp_x]
  []
  [disp_y]
  []
  [disp_z]
  []
[]

[Kernels<<<{"href": "../../syntax/Kernels/index.html"}>>>]
  [heat]
    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"}>>> = temperature
  []
  [heat_ie]
    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"}>>> = temperature
  []
  [heat_source]
    type = HeatSource<<<{"description": "Demonstrates the multiple ways that scalar values can be introduced into kernels, e.g. (controllable) constants, functions, and postprocessors. Implements the weak form $(\\psi_i, -f)$.", "href": "../../source/kernels/HeatSource.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
    function<<<{"description": "Function describing the volumetric heat source"}>>> = power_history
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temperature
    extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = 'ref'
  []
[]

[Physics<<<{"href": "../../syntax/Physics/index.html"}>>>/SolidMechanics<<<{"href": "../../syntax/Physics/SolidMechanics/index.html"}>>>/QuasiStatic<<<{"href": "../../syntax/Physics/SolidMechanics/QuasiStatic/index.html"}>>>]
  strain<<<{"description": "Strain formulation"}>>> = FINITE
  temperature<<<{"description": "The temperature"}>>> = temperature
  generate_output<<<{"description": "Add scalar quantity output for stress and/or strain"}>>> = 'stress_xx stress_yy stress_zz vonmises_stress
                     hydrostatic_stress elastic_strain_xx elastic_strain_yy
                     elastic_strain_zz strain_xx strain_yy strain_zz'
  [fuel_mechanics]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = fuel
    eigenstrain_names<<<{"description": "List of eigenstrains to be applied in this strain calculation"}>>> = 'fuel_thermal_strain'
    extra_vector_tags<<<{"description": "The tag names for extra vectors that residual data should be saved into"}>>> = 'ref'
  []
  [clad_mechanics]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = cladding
    eigenstrain_names<<<{"description": "List of eigenstrains to be applied in this strain calculation"}>>> = 'clad_thermal_strain'
    extra_vector_tags<<<{"description": "The tag names for extra vectors that residual data should be saved into"}>>> = ref
  []
  [liner_mechanics]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = liner
    eigenstrain_names<<<{"description": "List of eigenstrains to be applied in this strain calculation"}>>> = 'liner_thermal_strain'
    extra_vector_tags<<<{"description": "The tag names for extra vectors that residual data should be saved into"}>>> = ref
  []
[]

[BCs<<<{"href": "../../syntax/NuclearMaterials/BCs/index.html"}>>>]
  [conv_BC_front]
    type = ConvectiveHeatFluxBC<<<{"description": "Convective heat transfer boundary condition with temperature and heat transfer coefficent given by material properties.", "href": "../../source/bcs/ConvectiveHeatFluxBC.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temperature
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = front
    T_infinity<<<{"description": "Material property for far-field temperature"}>>> = 'tfilm_outer' # film temperature
    heat_transfer_coefficient<<<{"description": "Material property for heat transfer coefficient"}>>> = 'htc_outer'
    heat_transfer_coefficient_dT<<<{"description": "Material property for derivative of heat transfer coefficient with respect to temperature"}>>> = 'dhtc_dT_outer'
  []
  [conv_BC_back]
    type = ConvectiveHeatFluxBC<<<{"description": "Convective heat transfer boundary condition with temperature and heat transfer coefficent given by material properties.", "href": "../../source/bcs/ConvectiveHeatFluxBC.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temperature
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = back
    T_infinity<<<{"description": "Material property for far-field temperature"}>>> = 'tfilm_inner' # film temperature
    heat_transfer_coefficient<<<{"description": "Material property for heat transfer coefficient"}>>> = 'htc_inner'
    heat_transfer_coefficient_dT<<<{"description": "Material property for derivative of heat transfer coefficient with respect to temperature"}>>> = 'dhtc_dT_inner'
  []
  [disp_x]
    type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../source/bcs/DirichletBC.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'left_bottom_back'
    value<<<{"description": "Value of the BC"}>>> = 0.0
  []
  [disp_y]
    type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../source/bcs/DirichletBC.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'left_bottom_back right_bottom_back'
    value<<<{"description": "Value of the BC"}>>> = 0.0
  []
  [disp_z]
    type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../source/bcs/DirichletBC.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_z
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'left_bottom_back right_bottom_back right_top_back'
    value<<<{"description": "Value of the BC"}>>> = 0.0
  []
[]

[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
  [fission_density]
    type = GenericFunctionMaterial<<<{"description": "Material object for declaring properties that are populated by evaluation of Function object.", "href": "../../source/materials/GenericFunctionMaterial.html"}>>>
    prop_names<<<{"description": "The names of the properties this material will have"}>>> = fission_density
    prop_values<<<{"description": "The corresponding names of the functions that are going to provide the values for the variables"}>>> = fission_density_fcn
  []
  [fluence]
    type = GenericFunctionMaterial<<<{"description": "Material object for declaring properties that are populated by evaluation of Function object.", "href": "../../source/materials/GenericFunctionMaterial.html"}>>>
    prop_names<<<{"description": "The names of the properties this material will have"}>>> = fast_neutron_fluence
    prop_values<<<{"description": "The corresponding names of the functions that are going to provide the values for the variables"}>>> = fluence_fcn
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
  []
  [tfilm_inner]
    type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
    property_name<<<{"description": "Name of the parsed material property"}>>> = tfilm_inner
    coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = temperature
    expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '325.15'
  []
  [htc_inner]
    type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
    property_name<<<{"description": "Name of the parsed material property"}>>> = htc_inner
    coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
    expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '-3.3647*temperature^2 + 2744.5*temperature - 454016.0'
  []
  [dhtc_dT_inner]
    type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
    property_name<<<{"description": "Name of the parsed material property"}>>> = dhtc_dT_inner
    coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
    expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '-6.7294*temperature + 2744.5'
  []
  [tfilm_outer]
    type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
    property_name<<<{"description": "Name of the parsed material property"}>>> = tfilm_outer
    coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = temperature
    expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '325.15'
  []
  [htc_outer]
    type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
    property_name<<<{"description": "Name of the parsed material property"}>>> = htc_outer
    coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
    expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '-2.8992*temperature^2 + 2354.8*temperature - 387945.0'
  []
  [dhtc_dT_outer]
    type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
    property_name<<<{"description": "Name of the parsed material property"}>>> = dhtc_dT_outer
    coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
    expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '-5.7984*temperature + 2354.8'
  []
  # fuel properties
  [fuel_thermal]
    type = U10MoThermal<<<{"description": "Computes thermal properties of low enriched uranium-molybdenum alloy.", "href": "../../source/materials/U10MoThermal.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    thermal_conductivity_model<<<{"description": "The model to use for thermal conductivity: Burkes USHPRR USHPRRFit table"}>>> = USHPRR
    specific_heat_model<<<{"description": "The model to use for specific heat: Burkes USHPRR USHPRRFit table"}>>> = USHPRR
  []
  [fuel_elasticity]
    type = U10MoElasticityTensor<<<{"description": "Computes the Young's modulus and Poisson's ratio for U10Mo as a function of temperature and fission density and formulates the elasticity tensor.", "href": "../../source/materials/solid_mechanics/U10MoElasticityTensor.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
  []
  [fuel_thermal_expansion]
    type = U10MoThermalExpansionEigenstrain<<<{"description": "Computes eigenstrain due to thermal expansion in U-10Mo", "href": "../../source/materials/solid_mechanics/U10MoThermalExpansionEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    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."}>>> = fuel_thermal_strain
    stress_free_temperature<<<{"description": "Reference temperature at which there is no thermal expansion for thermal eigenstrain calculation"}>>> = 298
    model_option<<<{"description": "The modeling options for the compuation of U-10Mo thermal expansion eigenstrain are: Rest Burkes BurkesFit Saller BurkesSallerAvg Beghi McGeary"}>>> = Rest
  []
  [fuel_stress]
    type = ComputeFiniteStrainElasticStress<<<{"description": "Compute stress using elasticity for finite strains", "href": "../../source/materials/ComputeFiniteStrainElasticStress.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
  []
  #  [fuel_swelling]
  #    type = U10MoVolumetricSwellingEigenstrain
  #    eigenstrain_name = fuel_swelling_strain
  #    fission_rate = 0
  #  []
  [fuel_density]
    type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
    property_name<<<{"description": "Name of the parsed material property"}>>> = density
    coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
    expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '-0.884*temperature + 17391.0'
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
  []
  # liner properties
  [liner_thermal]
    type = ZrThermal<<<{"description": "Computes the thermal conductivity and the specific heat, under constant pressure, for pure zirconium used as a liner in BWRs and plate fuel.", "href": "../../source/materials/ZrThermal.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = liner
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    thermal_conductivity_model<<<{"description": "The model to use for specific heat: Fink USHPRR USHPRRFit"}>>> = USHPRR
    specific_heat_model<<<{"description": "The model to use for specific heat: Fink USHPRR USHPRRFit"}>>> = USHPRR
  []
  [liner_elasticity]
    type = ZrElasticityTensor<<<{"description": "Computes the Young's modulus and Poisson's ratio for Zr as a function of temperature and formulates the elasticity tensor.", "href": "../../source/materials/solid_mechanics/ZrElasticityTensor.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = liner
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
  []
  [liner_stress]
    type = ComputeFiniteStrainElasticStress<<<{"description": "Compute stress using elasticity for finite strains", "href": "../../source/materials/ComputeFiniteStrainElasticStress.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = liner
  []
  [liner_thermal_expansion]
    type = ZrThermalExpansionEigenstrain<<<{"description": "Computes the eigenstrain due to thermal expansion of pure zirconium (Zr).", "href": "../../source/materials/solid_mechanics/ZrThermalExpansionEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = liner
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    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."}>>> = liner_thermal_strain
    stress_free_temperature<<<{"description": "Reference temperature at which there is no thermal expansion for thermal eigenstrain calculation"}>>> = 293.0
    model_option<<<{"description": "The modeling options for the compuation of Zr thermal expansion eigenstrain are: ASM Fink Wachs"}>>> = ASM
  []
  [liner_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"}>>> = liner
    strain_free_density<<<{"description": "Material property for strain-free density"}>>> = 6499.0 # 6.499e-9 ton/mm3
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
  []
  # cladding properties
  [clad_thermal]
    type = Al6061Thermal<<<{"description": "Computes the thermal properties of Al6061.", "href": "../../source/materials/Al6061Thermal.html"}>>>
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = cladding
    thermal_conductivity_model<<<{"description": "The model to use for thermal conductivity: O T6 CHEON"}>>> = T6
    specific_heat_model<<<{"description": "The model to use for specific heat: POLKINGHORNE CHEON ASM"}>>> = ASM
  []
  [clad_elasticity]
    type = Al6061ElasticityTensor<<<{"description": "Computes the Young's modulus and Poisson's ratio for Al6061 as a function of temperature and formulates the elasticity tensor.", "href": "../../source/materials/solid_mechanics/Al6061ElasticityTensor.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = cladding
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    fast_neutron_fluence<<<{"description": "Fast (E>0.1 MeV) neutron fluence (n/m^2) material name.  Needed with USHPRR option."}>>> = 0
    youngs_modulus_model<<<{"description": "The model to use for Young's modulus: USHPRR Kaufman KaufmanFit"}>>> = Kaufman
  []
  [clad_thermal_expansion]
    type = Al6061ThermalExpansionEigenstrain<<<{"description": "Computes eigenstrain due to thermal expansion for Al6061 using a function that describes the mean thermal expansion as a function of temperature.", "href": "../../source/materials/solid_mechanics/Al6061ThermalExpansionEigenstrain.html"}>>>
    stress_free_temperature<<<{"description": "Reference temperature at which there is no thermal expansion for thermal eigenstrain calculation"}>>> = 293.15
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    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_strain
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = cladding
  []
  [clad_stress]
    type = ComputeFiniteStrainElasticStress<<<{"description": "Compute stress using elasticity for finite strains", "href": "../../source/materials/ComputeFiniteStrainElasticStress.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = cladding
  []
  [clad_density]
    type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = cladding
    property_name<<<{"description": "Name of the parsed material property"}>>> = density
    coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
    expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '-0.0003*temperature^2 + 0.0966*temperature + 2690.4'
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
  []
[]

[Preconditioning<<<{"href": "../../syntax/Preconditioning/index.html"}>>>]
  [smp]
    type = SMP<<<{"description": "Single matrix preconditioner (SMP) builds a preconditioner using user defined off-diagonal parts of the Jacobian.", "href": "../../source/preconditioners/SingleMatrixPreconditioner.html"}>>>
    full<<<{"description": "Set to true if you want the full set of couplings between variables simply for convenience so you don't have to set every off_diag_row and off_diag_column combination."}>>> = true
  []
[]

[Executioner<<<{"href": "../../syntax/Executioner/index.html"}>>>]
  type = Transient
  solve_type = 'Newton'

  petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
  petsc_options_value = '201                hypre    boomeramg      4'
  #petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
  #petsc_options_value = 'lu superlu_dist'

  line_search = 'none'

  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-8
  nl_max_its = 50

  l_tol = 1e-4
  l_max_its = 50

  start_time = 0.0
  end_time = 4586400
  num_steps = 2500

  dtmax = 86400

  [Predictor<<<{"href": "../../syntax/Executioner/Predictor/index.html"}>>>]
    type = SimplePredictor
    scale = 1
  []

  [TimeStepper<<<{"href": "../../syntax/Executioner/TimeStepper/index.html"}>>>]
    type = IterationAdaptiveDT
    dt = 1800
    optimal_iterations = 12
    iteration_window = 2
    growth_factor = 2
    cutback_factor = .5
    timestep_limiting_function = power_density
    force_step_every_function_point = true
  []
[]

[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
  [average_fuel_T]
    type = ElementAverageValue<<<{"description": "Computes the volumetric average of a variable", "href": "../../source/postprocessors/ElementAverageValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = fuel
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = temperature
    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."}>>> = 'initial timestep_end'
  []
  [fuelVolume]
    type = InternalVolume<<<{"description": "Computes the volume of an enclosed area by performing an integral over a user-supplied boundary.", "href": "../../source/postprocessors/InternalVolume.html"}>>>
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = fuel_all
  []
  [totalVolume]
    type = InternalVolume<<<{"description": "Computes the volume of an enclosed area by performing an integral over a user-supplied boundary.", "href": "../../source/postprocessors/InternalVolume.html"}>>>
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = all
  []
  [power_history]
    type = FunctionValuePostprocessor<<<{"description": "Computes the value of a supplied function at a single point (scalable)", "href": "../../source/postprocessors/FunctionValuePostprocessor.html"}>>>
    function<<<{"description": "The function which supplies the postprocessor value."}>>> = power_history
    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."}>>> = 'initial timestep_end'
  []
[]

[Outputs<<<{"href": "../../syntax/Outputs/index.html"}>>>]
  perf_graph<<<{"description": "Enable printing of the performance graph to the screen (Console)"}>>> = true
  csv<<<{"description": "Output the scalar variable and postprocessors to a *.csv file using the default CSV output."}>>> = true
  exodus<<<{"description": "Output the results using the default settings for Exodus output."}>>> = true
[]
(examples/plate_fuel/plate_fuel_hypre.i)

References

  1. B. Rabin, M. Meyer, J. Cole, I. Glagolenko, W. Jones, J-F. Jue, D. Keiser Jr, C. Miller, G. Moore, H. Ozaltun, F. Rice, A. Robinson, J. Smith, D. Wachs, W. Williams, N. Woolstenhulme, G. Hofman, and Y. Kim. Preliminary report on U-Mo monolithic fuel for research reactors. Technical Report INL EXT-17-40975, Idaho National Laboratory, 4 2020.[BibTeX]