EBR-II X430 Experiment Series

Overview

The X430 experiment series was a 37-pin hexagonal subassembly irradiated in EBR-II. It consisted of three experiments: X430, X430A, and X430B. The purpose was to test the behavior of wide-diameter fuels with HT9 cladding, which was the design of the Power Reactor Innovation Small Module (PRISM) Reactor at the time. The experiment results were recorded in Hayes et al. (1994).

After each experiment, the subassembly was removed and deconstructed. The individual pins then underwent nondestructive Postirradiation examination (PIE) consisting of neutron radiography and dimensional measurements. Some pins were moved or replaced, then the subassembly was reconstructed for the next experiment. A total of 52 pins were irradiated during the experiment series.

This assessment includes the necessary data to recreate 25 pins from the X430 experiment series. However, only two are used as assessment cases (T651 and T654) to minimize the run time.

An initial version of the assessment was published as a two-pin benchmark in Greenquist and Powers (2020). Further development has increased the number of pins and improved the accuracy of the results, as recorded in Greenquist and Powers (2021).

Test Description

The X430 experiment series ran between 1987 and 1992 to a target burnup of ~11%. 22 pins remained in the reactor for all three experiments. Of those, one (T654) underwent destructive PIE. The other three pins that underwent destructive PIE were added in experiment X430A. These 25 pins were reproduced as BISON input files.

All of the pins in the experiment were U-based alloys with 10 wt.% Zr. However, the Pu content of the pins varied. Figure 1 shows the subassembly locations and Pu weight fractions of the modeled pins.

Figure 1: Pin positions in the subassembly across the three experiments. The colors indicate whether the pins were fresh fuel, remained in the same position as the previous experiment, or were moved between experiments. The nominal weight fraction of Pu for each pin is also shown.

Rod Design Specifications

The nominal dimensions are shown in Figure 2. The same cladding dimensions were used in each input file. However, Hayes et al. (1994) records as-manufactured fuel slug dimensions and densities, so those are used in the individual input files.

Figure 2: Nominal pin dimensions. As-manufactured dimensions from Hayes et al. (1994) are used in the individual pin input files.

Operating Conditions and Irradiation History

The average linear heat rate (ALHR) and coolant inlet mass flux used in the assessments are shown in Figure 3. These were constructed using data recorded in Hayes et al. (1994) with startup and shutdown periods added for computational efficiency and to zero-power periods to simulate PIE measurements.

Figure 3: Top: ALHR of the X430 experiment series simulations during the EBR-II operating cycles during which the experiments were irradiated. Bottom: Na coolant inlet mass flux during the same EBR-II operating cycles.

Model Description

Table 1 shows the variables that are individually changed for each pin.

Table 1: Values which are varied for individual pins and their corresponding names in the template file and CSV file.

ValueInput Variable NameNotes
Pin name%{pin}Also used to name input files.
Pu Weight fraction%{pu_weight_fraction}Nominal pin composition.
Fuel slug density%{fuel_density}
Fuel slug height%{fuel_h}
Fuel slug radius%{fuel_r}
Axial peaking factors%{pX430_00} %{pX430_01} %{pX430_02} %{pX430_03} %{pX430_04} %{pX430_05} %{pX430_06} %{pX430_07} %{pX430_08} %{pX430_09} %{pX430_10} %{pX430a_00} %{pX430a_01} %{pX430a_02} %{pX430a_03} %{pX430a_04} %{pX430a_05} %{pX430a_06} %{pX430a_07} %{pX430a_08} %{pX430a_09} %{pX430a_10} %{pX430b_00} %{pX430b_01} %{pX430b_02} %{pX430b_03} %{pX430b_04} %{pX430b_05} %{pX430b_06} %{pX430b_07} %{pX430b_08} %{pX430b_09} %{pX430b_10} %{pEOL_00} %{pEOL_01} %{pEOL_02} %{pEOL_03} %{pEOL_04} %{pEOL_05} %{pEOL_06} %{pEOL_07} %{pEOL_08} %{pEOL_09} %{pEOL_10}Pin-specific axial peaking factors at four specific times: The beginning of X430 (pX430), the beginning of X430A (pX430a), the beginning of X430B (pX430b), and the end of X430B (pEOL).
Subassembly position peaking factors%{rad_LHR_X430} %{rad_LHR_X430a} %{rad_LHR_X430b}Expected variations in the pin ALHRs due to subassembly position. Changes with time to account for pins being moved between experiments.
Subassembly position%{subassembly_position}Distinguishes between interior pins, exterior surface pins, and exterior corner pins. Used to adjust the coolant flow area.
Start and end times%{t_start} %{t_end}Start and end times vary for the pins added in experiment X430A.
Pu atom fraction%{x_Pu}BISON uses atom fractions instead of weight fractions.
Zr atom fraction%{x_Zr}Zr atom fraction has to vary with the Pu fraction to maintain 10 wt.%.

Input Files

The individual input files are automatically generated. They are based on a template file (template.i), which is essentially an input file with certain values replaced with variable strings. Variables are identified with the notation %{variable_name}. A python script (generate_input_files.py) substitutes pin-specific values for the variables. Pin-dependent values are stored in a CSV file (pin_inputs.csv). Composition-dependent values or values that are calculated based on other variable values are stored and/or calculated in generate_input_files.py.

#     TEMPLATE FILE
# This is not an input file. It is a template used to populate the input files.
# Changes made to this file will be applied to all 25 X430 input files.
# Values used for individual pins are stored in pin_inputs.csv. Input files are
# generated using the Python script generate_input_files.py.

#     X430 ASSESSMENT CASE
# BISON recreation of the 52-pin X430 experiment series, which was irradiated in
# EBR-II from 1987-88 to a peak burnup of about 10 at%. The subassembly
# contained 37 pins and was irradiated in three experiments: X430, X430A, and
# X430B. After each experiment, pins were removed, examined, replaced as
# necessary, and the subassembly was reconstructed. BISON simulations were
# developed for 25 of the pins, of which 2 are
# assessments. Legacy calculations and PIE measurements are available for all 25
# pins. Units are in standard SI: J, K, kg, m, Pa, s.

# For a more complete description of the experiments, see [Hayes et al., 1994].
# For a more complete description of the development and results of this
# assessment, see [Greenquist and Powers, 2021].

# This file simulates pin %{pin} with a composition of %{composition}.

[GlobalParams<<<{"href": "../../../../syntax/GlobalParams/index.html"}>>>]
  dim = 2
  order = SECOND
  family = LAGRANGE
  elem_type = QUAD8
  energy_per_fission = 3.2e-11 # [Shultis and Faw, 2008]
  volumetric_locking_correction = false
  displacements = 'disp_x disp_y'
  temperature = T
[]

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

[Mesh<<<{"href": "../../../../syntax/Mesh/index.html"}>>>]
  coord_type = RZ
  # Mesh includes a fuel slug and cladding. All dimensions are in meters. See
  # [Hayes et al., 1994] and [Greenquist and Powers, 2021] for more complete
  # descriptions.
  type = MeshGeneratorMesh
  patch_size = 30
  patch_update_strategy = auto
  partitioner = centroid
  centroid_partitioner_direction = y

  # build cladding
  [bottom_plug]
    type = GeneratedMeshGenerator<<<{"description": "Create a line, square, or cube mesh with uniformly spaced or biased elements.", "href": "../../../../source/meshgenerators/GeneratedMeshGenerator.html"}>>>
    xmin<<<{"description": "Lower X Coordinate of the generated mesh"}>>> = 0.0
    xmax<<<{"description": "Upper X Coordinate of the generated mesh"}>>> = 0.0032786
    nx<<<{"description": "Number of elements in the X direction"}>>> = 5
    ymin<<<{"description": "Lower Y Coordinate of the generated mesh"}>>> = 0.0
    ymax<<<{"description": "Upper Y Coordinate of the generated mesh"}>>> = 0.015
    ny<<<{"description": "Number of elements in the Y direction"}>>> = 4
  []
  [bottom_corner]
    type = GeneratedMeshGenerator<<<{"description": "Create a line, square, or cube mesh with uniformly spaced or biased elements.", "href": "../../../../source/meshgenerators/GeneratedMeshGenerator.html"}>>>
    xmin<<<{"description": "Lower X Coordinate of the generated mesh"}>>> = 0.0032786
    xmax<<<{"description": "Upper X Coordinate of the generated mesh"}>>> = 0.003685
    nx<<<{"description": "Number of elements in the X direction"}>>> = 8
    ymin<<<{"description": "Lower Y Coordinate of the generated mesh"}>>> = 0.0
    ymax<<<{"description": "Upper Y Coordinate of the generated mesh"}>>> = 0.015
    ny<<<{"description": "Number of elements in the Y direction"}>>> = 4
  []
  [bottom_corner_rename_side]
    type = SideSetsFromNormalsGenerator<<<{"description": "Adds a new named sideset to the mesh for all faces matching the specified normal.", "href": "../../../../source/meshgenerators/SideSetsFromNormalsGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = bottom_corner
    normals<<<{"description": "A list of normals for which to start painting sidesets"}>>> = '0 1 0'
    new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = new_side
  []
  [combine_bottom_and_bottom_corner]
    type = StitchedMeshGenerator<<<{"description": "Allows multiple mesh files to be stitched together to form a single mesh.", "href": "../../../../source/meshgenerators/StitchedMeshGenerator.html"}>>>
    inputs<<<{"description": "The input MeshGenerators."}>>> = 'bottom_plug bottom_corner_rename_side'
    stitch_boundaries_pairs<<<{"description": "Pairs of boundaries to be stitched together between the 1st mesh in inputs and each consecutive mesh"}>>> = 'right left'
    clear_stitched_boundary_ids<<<{"description": "Whether or not to clear the stitched boundary IDs"}>>> = true
    prevent_boundary_ids_overlap<<<{"description": "Whether to re-number boundaries in stitched meshes to prevent merging of unrelated boundaries"}>>> = false
  []
  [cladding_wall]
    type = GeneratedMeshGenerator<<<{"description": "Create a line, square, or cube mesh with uniformly spaced or biased elements.", "href": "../../../../source/meshgenerators/GeneratedMeshGenerator.html"}>>>
    xmin<<<{"description": "Lower X Coordinate of the generated mesh"}>>> = 0.0032786
    xmax<<<{"description": "Upper X Coordinate of the generated mesh"}>>> = 0.003685
    nx<<<{"description": "Number of elements in the X direction"}>>> = 8
    ymin<<<{"description": "Lower Y Coordinate of the generated mesh"}>>> = 0.015
    ymax<<<{"description": "Upper Y Coordinate of the generated mesh"}>>> = 0.72565
    ny<<<{"description": "Number of elements in the Y direction"}>>> = 120
  []
  [cladding_wall_rename_side]
    type = SideSetsFromNormalsGenerator<<<{"description": "Adds a new named sideset to the mesh for all faces matching the specified normal.", "href": "../../../../source/meshgenerators/SideSetsFromNormalsGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = cladding_wall
    normals<<<{"description": "A list of normals for which to start painting sidesets"}>>> = '0 1 0'
    new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = new_side
  []
  [combine_bottom_and_wall]
    type = StitchedMeshGenerator<<<{"description": "Allows multiple mesh files to be stitched together to form a single mesh.", "href": "../../../../source/meshgenerators/StitchedMeshGenerator.html"}>>>
    inputs<<<{"description": "The input MeshGenerators."}>>> = 'combine_bottom_and_bottom_corner cladding_wall_rename_side'
    stitch_boundaries_pairs<<<{"description": "Pairs of boundaries to be stitched together between the 1st mesh in inputs and each consecutive mesh"}>>> = '4 bottom'
    clear_stitched_boundary_ids<<<{"description": "Whether or not to clear the stitched boundary IDs"}>>> = true
    prevent_boundary_ids_overlap<<<{"description": "Whether to re-number boundaries in stitched meshes to prevent merging of unrelated boundaries"}>>> = false
  []
  [top_corner]
    type = GeneratedMeshGenerator<<<{"description": "Create a line, square, or cube mesh with uniformly spaced or biased elements.", "href": "../../../../source/meshgenerators/GeneratedMeshGenerator.html"}>>>
    xmin<<<{"description": "Lower X Coordinate of the generated mesh"}>>> = 0.0032786
    xmax<<<{"description": "Upper X Coordinate of the generated mesh"}>>> = 0.003685
    nx<<<{"description": "Number of elements in the X direction"}>>> = 8
    ymin<<<{"description": "Lower Y Coordinate of the generated mesh"}>>> = 0.72565
    ymax<<<{"description": "Upper Y Coordinate of the generated mesh"}>>> = 0.74065
    ny<<<{"description": "Number of elements in the Y direction"}>>> = 4
  []
  [top_corner_rename_side]
    type = SideSetsFromNormalsGenerator<<<{"description": "Adds a new named sideset to the mesh for all faces matching the specified normal.", "href": "../../../../source/meshgenerators/SideSetsFromNormalsGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = top_corner
    normals<<<{"description": "A list of normals for which to start painting sidesets"}>>> = '-1 0 0'
    new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = new_side
  []
  [combine_wall_and_top_corner]
    type = StitchedMeshGenerator<<<{"description": "Allows multiple mesh files to be stitched together to form a single mesh.", "href": "../../../../source/meshgenerators/StitchedMeshGenerator.html"}>>>
    inputs<<<{"description": "The input MeshGenerators."}>>> = 'combine_bottom_and_wall top_corner_rename_side'
    stitch_boundaries_pairs<<<{"description": "Pairs of boundaries to be stitched together between the 1st mesh in inputs and each consecutive mesh"}>>> = '4 bottom'
    clear_stitched_boundary_ids<<<{"description": "Whether or not to clear the stitched boundary IDs"}>>> = true
    prevent_boundary_ids_overlap<<<{"description": "Whether to re-number boundaries in stitched meshes to prevent merging of unrelated boundaries"}>>> = false
  []
  [top_plug]
    type = GeneratedMeshGenerator<<<{"description": "Create a line, square, or cube mesh with uniformly spaced or biased elements.", "href": "../../../../source/meshgenerators/GeneratedMeshGenerator.html"}>>>
    xmin<<<{"description": "Lower X Coordinate of the generated mesh"}>>> = 0.0
    xmax<<<{"description": "Upper X Coordinate of the generated mesh"}>>> = 0.0032786
    nx<<<{"description": "Number of elements in the X direction"}>>> = 5
    ymin<<<{"description": "Lower Y Coordinate of the generated mesh"}>>> = 0.72565
    ymax<<<{"description": "Upper Y Coordinate of the generated mesh"}>>> = 0.74065
    ny<<<{"description": "Number of elements in the Y direction"}>>> = 4
  []
  [cladding_all]
    type = StitchedMeshGenerator<<<{"description": "Allows multiple mesh files to be stitched together to form a single mesh.", "href": "../../../../source/meshgenerators/StitchedMeshGenerator.html"}>>>
    inputs<<<{"description": "The input MeshGenerators."}>>> = 'combine_wall_and_top_corner top_plug'
    stitch_boundaries_pairs<<<{"description": "Pairs of boundaries to be stitched together between the 1st mesh in inputs and each consecutive mesh"}>>> = '4 right'
    clear_stitched_boundary_ids<<<{"description": "Whether or not to clear the stitched boundary IDs"}>>> = true
    prevent_boundary_ids_overlap<<<{"description": "Whether to re-number boundaries in stitched meshes to prevent merging of unrelated boundaries"}>>> = false
  []

  # build fuel
  [fuel_slug]
    type = GeneratedMeshGenerator<<<{"description": "Create a line, square, or cube mesh with uniformly spaced or biased elements.", "href": "../../../../source/meshgenerators/GeneratedMeshGenerator.html"}>>>
    xmin<<<{"description": "Lower X Coordinate of the generated mesh"}>>> = 0.0
    xmax<<<{"description": "Upper X Coordinate of the generated mesh"}>>> = %{fuel_r}
    nx<<<{"description": "Number of elements in the X direction"}>>> = 5
    ymin<<<{"description": "Lower Y Coordinate of the generated mesh"}>>> = 0.019
    ymax<<<{"description": "Upper Y Coordinate of the generated mesh"}>>> = %{fuel_top}
    ny<<<{"description": "Number of elements in the Y direction"}>>> = 250
  []

  # combine and name subdomains
  [combine_fuel_cladding]
    type = CombinerGenerator<<<{"description": "Combine multiple meshes (or copies of one mesh) together into one (disjoint) mesh.  Can optionally translate those meshes before combining them.", "href": "../../../../source/meshgenerators/CombinerGenerator.html"}>>>
    inputs<<<{"description": "The input MeshGenerators.  This can either be N generators or 1 generator.  If only 1 is given then 'positions' must also be given."}>>> = 'cladding_all fuel_slug'
  []
  [name_cladding]
    type = SubdomainBoundingBoxGenerator<<<{"description": "Changes the subdomain ID of elements either (XOR) inside or outside the specified box to the specified ID.", "href": "../../../../source/meshgenerators/SubdomainBoundingBoxGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = combine_fuel_cladding
    bottom_left<<<{"description": "The bottom left point (in x,y,z with spaces in-between)."}>>> = '0.0 0.0 0.0'
    top_right<<<{"description": "The bottom left point (in x,y,z with spaces in-between)."}>>> = '0.003685 0.74065 0.0'
    location<<<{"description": "Control of where the subdomain id is to be set"}>>> = INSIDE
    block_id<<<{"description": "Subdomain id to set for inside/outside the bounding box"}>>> = 0
    block_name<<<{"description": "Subdomain name to set for inside/outside the bounding box (optional)"}>>> = clad
  []
  [name_fuel]
    type = SubdomainBoundingBoxGenerator<<<{"description": "Changes the subdomain ID of elements either (XOR) inside or outside the specified box to the specified ID.", "href": "../../../../source/meshgenerators/SubdomainBoundingBoxGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = name_cladding
    bottom_left<<<{"description": "The bottom left point (in x,y,z with spaces in-between)."}>>> = '0.0 0.019 0.0'
    top_right<<<{"description": "The bottom left point (in x,y,z with spaces in-between)."}>>> = '%{fuel_r} %{fuel_top} 0.0'
    location<<<{"description": "Control of where the subdomain id is to be set"}>>> = INSIDE
    block_id<<<{"description": "Subdomain id to set for inside/outside the bounding box"}>>> = 1
    block_name<<<{"description": "Subdomain name to set for inside/outside the bounding box (optional)"}>>> = pellet
  []

  # name boundaries
  [name_centerline]
    type = SideSetsFromNormalsGenerator<<<{"description": "Adds a new named sideset to the mesh for all faces matching the specified normal.", "href": "../../../../source/meshgenerators/SideSetsFromNormalsGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = name_fuel
    normals<<<{"description": "A list of normals for which to start painting sidesets"}>>> = '-1 0 0'
    new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = centerline
    replace<<<{"description": "If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved."}>>> = true
  []
  [name_slug_outer_surface]
    type = SideSetsFromNormalsGenerator<<<{"description": "Adds a new named sideset to the mesh for all faces matching the specified normal.", "href": "../../../../source/meshgenerators/SideSetsFromNormalsGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = name_centerline
    normals<<<{"description": "A list of normals for which to start painting sidesets"}>>> = '1 0 0'
    new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = pellet_outer_radial_surface
    replace<<<{"description": "If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved."}>>> = true
  []
  [name_slug_ends]
    type = SideSetsFromPointsGenerator<<<{"description": "Adds a new sideset starting at the specified point containing all connected element faces with the same normal.", "href": "../../../../source/meshgenerators/SideSetsFromPointsGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = name_slug_outer_surface
    points<<<{"description": "A list of points from which to start painting sidesets"}>>> = '0.50e-3 0.019 0.0
              0.50e-3 %{fuel_top} 0.0'
    new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = 'bottom_of_bottom_pellet top_of_top_pellet'
    replace<<<{"description": "If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved."}>>> = true
  []
  [name_cladding_inside]
    type = SideSetsFromPointsGenerator<<<{"description": "Adds a new sideset starting at the specified point containing all connected element faces with the same normal.", "href": "../../../../source/meshgenerators/SideSetsFromPointsGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = name_slug_ends
    points<<<{"description": "A list of points from which to start painting sidesets"}>>> = '0.50e-3 0.015 0.0
              0.0032786 0.36 0.0
              0.50e-3 0.72565 0.0'
    new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = 'clad_inside_bottom clad_inside_right clad_inside_top'
    replace<<<{"description": "If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved."}>>> = true
  []
  [name_cladding_outer_surface]
    type = SideSetsFromPointsGenerator<<<{"description": "Adds a new sideset starting at the specified point containing all connected element faces with the same normal.", "href": "../../../../source/meshgenerators/SideSetsFromPointsGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = name_cladding_inside
    points<<<{"description": "A list of points from which to start painting sidesets"}>>> = '0.003685 0.36 0.0
              0.50e-3 0.0 0.0
              0.50e-3 0.74065 0.0'
    new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = 'clad_outside_right clad_outside_bottom clad_outside_top'
    replace<<<{"description": "If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved."}>>> = true
  []
[]

[Variables<<<{"href": "../../../../syntax/Variables/index.html"}>>>]
  [T]
    initial_condition<<<{"description": "Specifies a constant initial condition for this variable"}>>> = 298
  []
[]

[AuxVariables<<<{"href": "../../../../syntax/AuxVariables/index.html"}>>>]
  [gap_conductance]
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
  []
  [fuel_clad_gap_width]
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
  []
  [element_failed]
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
  []
  [fuel_volumetric_strain]
    block = pellet
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
  []
  [clad_hoop_stress]
    block = clad
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
  []
  [clad_hoop_creep_strain]
    block = clad
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
  []
  [clad_hoop_elastic_strain]
    block = clad
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
  []
  [clad_hoop_total_strain]
    block = clad
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
  []
  [local_power]
    block = pellet
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
  []
  [T_coolant]
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
  []
  [pin_lhr]
    block = pellet
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
  []
  [eutectic_thickness]
    block = clad
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
  []
[]

[Functions<<<{"href": "../../../../syntax/Functions/index.html"}>>>]
  [assembly_lhr_avg_function]
    # Subassembly average LHR as a function of time. x: time (s), y: average
    # LHGR (W/m). See [Greenquist and Powers, 2021].
    type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../../../source/functions/PiecewiseLinear.html"}>>>
    x<<<{"description": "The abscissa values"}>>> = '       0     3600  8203212  8206812 13814423 13818023 14428975 14432575
         21312419 21316019 25596874 25600474 26261755 26265355 32714598 32718198
         32721798 32725398 32728998 32896765 32900365 39574695 39578295 42194062
         42197662 43820808 43824408 43895709 43899309 44401212 44404812 47385472
         47389072 48198548 48202148 48205748 48209348 48212948 52079977 52083577
         53874489 53878089 62125235 62128835 62256058 62259658 62620357 62623957
         64516928 64520528 64766586 64770186 67535546 67539146 72155534 72159134
         72185697 72189297 76833647 76837247 77340548 77344148 77738400 77742000
         80444447 80448047 80451647 80455247'
    y<<<{"description": "The ordinate values"}>>> = '     0.0  44225.3  44225.3  43106.1  43106.1  41403.6  41403.6  41119.9
          41119.9  38881.4  38881.4  38353.3  38353.3  39472.5  39472.5      0.0
              0.0      0.0  33490.2  33490.2  36863.6  36863.6  37123.7  37123.7
          32717.8  32717.8  38534.6  38534.6  38432.1  38432.1  36784.8  36784.8
          36036.0  36036.0      0.0      0.0      0.0  35153.3  35153.3  35153.3
          35153.3  35271.5  35271.5  33663.6  33663.6  34459.7  34459.7  34640.9
          34640.9  34428.1  34428.1  34026.2  34026.2  33624.2  33624.2  33624.2
          33624.2  33718.8  33718.8  34057.7  34057.7  34057.7  34057.7  34215.3
          34215.3      0.0      0.0      0.0'
  []
  [radial_peaking_factor_function]
    # Adjusts the pin's average LHR based on its location in the subassembly.
    # x: time [s], y: relative LHR change. See [Greenquist and Powers, 2021].
    type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../../../source/functions/PiecewiseLinear.html"}>>>
    x<<<{"description": "The abscissa values"}>>> = '       0 32718198
         32725398 48202148
         48209348 80455247'
    y<<<{"description": "The ordinate values"}>>> = '%{rad_LHR_X430} %{rad_LHR_X430}
         %{rad_LHR_X430a} %{rad_LHR_X430a}
         %{rad_LHR_X430b} %{rad_LHR_X430b}'
  []
  [lhr_peaking_factor_function]
    # Axial variation from the average LHR. x: axial position (m), y: time (s),
    # z: peaking factor. See [Hayes et al., 1994] and
    # [Greenquist and Powers, 2021].
    #
    type = PiecewiseBilinear<<<{"description": "Interpolates values from a csv file", "href": "../../../../source/functions/PiecewiseBilinear.html"}>>>
    xaxis<<<{"description": "The coordinate used for x-axis data (0, 1, or 2 for x, y, or z)."}>>> = 1
    yaxis<<<{"description": "The coordinate used for y-axis data (0, 1, or 2 for x, y, or z)."}>>> = 0
    y<<<{"description": "The y abscissa values"}>>> = '0 32725398 48209348 80455247'
    x<<<{"description": "The x abscissa values"}>>> = '0.018  0.019        %{z01}       %{z02}       %{z03}       %{z04}
           %{z05}       %{z06}       %{z07}       %{z08}       %{z09}
           %{fuel_top}  %{z11}'
    z<<<{"description": "The ordinate values"}>>> = '0.0000 %{pX430_00}  %{pX430_01}  %{pX430_02}  %{pX430_03}  %{pX430_04}
           %{pX430_05}  %{pX430_06}  %{pX430_07}  %{pX430_08}  %{pX430_09}
           %{pX430_10}  0.0000
         0.0000 %{pX430a_00} %{pX430a_01} %{pX430a_02} %{pX430a_03} %{pX430a_04}
           %{pX430a_05} %{pX430a_06} %{pX430a_07} %{pX430a_08} %{pX430a_09}
           %{pX430a_10} 0.0000
         0.0000 %{pX430b_00} %{pX430b_01} %{pX430b_02} %{pX430b_03} %{pX430b_04}
           %{pX430b_05} %{pX430b_06} %{pX430b_07} %{pX430b_08} %{pX430b_09}
           %{pX430b_10} 0.0000
         0.0000 %{pEOL_00}   %{pEOL_01}   %{pEOL_02}   %{pEOL_03}   %{pEOL_04}
           %{pEOL_05}   %{pEOL_06}   %{pEOL_07}   %{pEOL_08}   %{pEOL_09}
           %{pEOL_10}   0.0000'
  []
  [coolant_flux_function]
    # Subassembly coolant mass flux. x: time (s), y: flux (kg m^-2 s^-1). See
    # [Hayes et al., 1994] and [Greenquist and Powers, 2021].
    type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../../../source/functions/PiecewiseLinear.html"}>>>
    x<<<{"description": "The abscissa values"}>>> = '       0     3600  8203212  8206812 13814423 13818023 14428975 14432575
         21312419 21316019 25596874 25600474 26261755 26265355 32714598 32718198
         32721798 32725398 32728998 32896765 32900365 39574695 39578295 42194062
         42197662 43820808 43824408 43895709 43899309 44401212 44404812 47385472
         47389072 48198548 48202148 48205748 48209348 48212948 52079977 52083577
         53874489 53878089 62125235 62128835 62256058 62259658 62620357 62623957
         64516928 64520528 64766586 64770186 67535546 67539146 72155534 72159134
         72185697 72189297 76833647 76837247 77340548 77344148 77738400 77742000
         80444447 80448047 80451647 80455247'
    y<<<{"description": "The ordinate values"}>>> = '  2699.1   2699.1   2699.1   2724.0   2724.0   2697.2   2697.2   2781.0
           2781.0   2721.1   2721.1   2696.9   2696.9   2785.4   2785.4   2785.4
           2785.4   2785.4   2793.7   2793.7   2803.5   2803.5   2814.2   2814.2
           2799.6   2799.6   2840.1   2840.1   2839.6   2839.6   2873.7   2873.7
           2855.7   2855.7   2855.7   2855.7   2855.7   2826.4   2826.4   2826.4
           2826.4   2788.4   2788.4   2780.6   2780.6   2771.8   2771.8   2781.5
           2781.5   2817.1   2817.1   2807.4   2807.4   2777.1   2777.1   2777.1
           2777.1   2746.4   2746.4   2765.9   2765.9   2765.9   2765.9   2777.1
           2777.1   2777.1   2777.1   2777.1'
  []
  [pin_lhr_avg_function]
    type = CompositeFunction<<<{"description": "Multiplies an arbitrary set of functions together", "href": "../../../../source/functions/CompositeFunction.html"}>>>
    functions<<<{"description": "The functions to be multiplied together."}>>> = 'assembly_lhr_avg_function radial_peaking_factor_function'
  []
  [pin_lhr_function]
    type = CompositeFunction<<<{"description": "Multiplies an arbitrary set of functions together", "href": "../../../../source/functions/CompositeFunction.html"}>>>
    functions<<<{"description": "The functions to be multiplied together."}>>> = 'pin_lhr_avg_function lhr_peaking_factor_function'
  []
  [coolant_pressure_function]
    type = ConstantFunction<<<{"description": "A function that returns a constant value as defined by an input parameter.", "href": "../../../../source/functions/ConstantFunction.html"}>>>
    value<<<{"description": "The constant value"}>>> = 347702.6 # [Snyder, 1988]
  []
  [T_coolant_in_function]
    # Sodium coolant inlet temperature. x: time (s), y: temperature (K). See
    # [Hayes et al., 1994].
    type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../../../source/functions/PiecewiseLinear.html"}>>>
    x<<<{"description": "The abscissa values"}>>> = '       0     3600 32718198 32721798 32725398 32728998 48202148 48205748
         48209348 48212948 80448047 80451647 80455247'
    y<<<{"description": "The ordinate values"}>>> = '  298.00   644.15   644.15   305.00   305.00   644.15   644.15   305.00
           305.00   644.15   644.15   305.00   305.00'
  []
  [sodium_volume_function]
    # the initial sodium height is assumed to be equal to the initial fuel
    # height and sodium infiltration is ignored.
    type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../../../source/functions/MooseParsedFunction.html"}>>>
    symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector."}>>> = 'pellet_outer_radius cladding_gap_width pellet_height'
    symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = '%{fuel_r} %{gap_width} %{fuel_h}'
    expression<<<{"description": "The user defined function."}>>> = 'pi * ((pellet_outer_radius + cladding_gap_width)^2 -
             pellet_outer_radius^2) * pellet_height'
  []
  [gas_volume_function]
    type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../../../source/functions/MooseParsedFunction.html"}>>>
    symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector."}>>> = 'clad_internal_volume fuel_volume sodium_volume'
    symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = 'clad_internal_volume fuel_volume sodium_volume'
    expression<<<{"description": "The user defined function."}>>> = 'abs(clad_internal_volume) - abs(fuel_volume) - abs(sodium_volume)'
  []
  [sodium_conductivity_function]
    # Thermal conductivity (W m^-1 K^-1) of the pin gap sodium according to
    # [Fink and Leibowitz, 1995]. t: temperature (K).
    type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../../../source/functions/MooseParsedFunction.html"}>>>
    symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector."}>>> = 'A      B        C         D'
    symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = '124.67 -0.11381 5.5226e-5 -1.1842e-8'
    expression<<<{"description": "The user defined function."}>>> = 'A + B * t + C * t^2 + D * t^3'
  []
  [creep_timestep_min_function]
    type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../../../source/functions/MooseParsedFunction.html"}>>>
    symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector."}>>> = 'creep_timestep_fuel creep_timestep_clad'
    symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = 'creep_timestep_fuel creep_timestep_clad'
    expression<<<{"description": "The user defined function."}>>> = 'min(creep_timestep_fuel, creep_timestep_clad)'
  []
  [fuel_axial_elongation_max_pct_function]
    type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../../../source/functions/MooseParsedFunction.html"}>>>
    symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector."}>>> = 'fuel_axial_elongation_min fuel_axial_elongation_max pellet_height'
    symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = 'fuel_axial_elongation_min fuel_axial_elongation_max %{fuel_h}'
    expression<<<{"description": "The user defined function."}>>> = '(fuel_axial_elongation_max - fuel_axial_elongation_min) /
             pellet_height * 100'
  []
  [fuel_radial_dilation_max_pct_function]
    type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../../../source/functions/MooseParsedFunction.html"}>>>
    symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector."}>>> = 'fuel_radial_dilation_max pellet_outer_radius'
    symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = 'fuel_radial_dilation_max %{fuel_r}'
    expression<<<{"description": "The user defined function."}>>> = 'fuel_radial_dilation_max / pellet_outer_radius * 100'
  []
  [clad_axial_elongation_max_pct_function]
    type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../../../source/functions/MooseParsedFunction.html"}>>>
    symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector."}>>> = 'clad_axial_elongation_max plug_height cladding_total_height'
    symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = 'clad_axial_elongation_max 0.015 0.74065'
    expression<<<{"description": "The user defined function."}>>> = 'clad_axial_elongation_max /
             (plug_height + cladding_total_height) * 100'
  []
  [clad_radial_dilation_max_pct_function]
    type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../../../source/functions/MooseParsedFunction.html"}>>>
    symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector."}>>> = 'clad_radial_dilation_max cladding_outer_radius'
    symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = 'clad_radial_dilation_max 0.003685'
    expression<<<{"description": "The user defined function."}>>> = 'clad_radial_dilation_max / cladding_outer_radius * 100'
  []
  [plenum_compressibility_function]
    # Accounts for nonideality in fission gas [Hobbs and Charboneau, 2020]
    type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../../../source/functions/MooseParsedFunction.html"}>>>
    symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector."}>>> = 'plenum_pressure A     B       C'
    symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = 'plenum_pressure 1.002 -3.4e-8 -1.9e-15'
    expression<<<{"description": "The user defined function."}>>> = 'A + B * plenum_pressure + C * plenum_pressure^2'
  []
  [compressibility_times_temperature_function]
    type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../../../source/functions/MooseParsedFunction.html"}>>>
    symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector."}>>> = 'plenum_temperature plenum_compressibility'
    symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = 'plenum_temperature plenum_compressibility'
    expression<<<{"description": "The user defined function."}>>> = 'plenum_temperature * plenum_compressibility'
  []
[]

[Physics<<<{"href": "../../../../syntax/Physics/index.html"}>>>/SolidMechanics<<<{"href": "../../../../syntax/Physics/SolidMechanics/index.html"}>>>/QuasiStatic<<<{"href": "../../../../syntax/Physics/SolidMechanics/QuasiStatic/index.html"}>>>]
  add_variables<<<{"description": "Add the displacement variables"}>>> = true
  strain<<<{"description": "Strain formulation"}>>> = FINITE
  generate_output<<<{"description": "Add scalar quantity output for stress and/or strain"}>>> = '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'
  [fuel_mechanics]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = pellet
    eigenstrain_names<<<{"description": "List of eigenstrains to be applied in this strain calculation"}>>> = 'fuel_thermal_strain fuel_gaseous_strain
                         fuel_solid_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"}>>> = clad
    eigenstrain_names<<<{"description": "List of eigenstrains to be applied in this strain calculation"}>>> = 'clad_thermal_strain clad_gaseous_strain'
    extra_vector_tags<<<{"description": "The tag names for extra vectors that residual data should be saved into"}>>> = ref
  []
[]

[Kernels<<<{"href": "../../../../syntax/Kernels/index.html"}>>>]
  [gravity]
    type = Gravity<<<{"description": "Apply gravity. Value is in units of acceleration.", "href": "../../../../source/kernels/Gravity.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
    value<<<{"description": "Value multiplied against the residual, e.g. gravitational acceleration"}>>> = -9.81
    extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = ref
  []
  [heat_conduction_time_derivative]
    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"}>>> = T
    extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = ref
  []
  [heat_conduction]
    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"}>>> = T
    extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = ref
  []
  [heat_source]
    type = FissionRateHeatSource<<<{"description": "Applies energy deposition as a function of a material fission rate.", "href": "../../../../source/kernels/FissionRateHeatSource.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = T
    fission_rate<<<{"description": "Fission rate material name"}>>> = fission_rate
    extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = ref
  []
[]

[AuxKernels<<<{"href": "../../../../syntax/AuxKernels/index.html"}>>>]
  [gap_conductance]
    type = MaterialRealAux<<<{"description": "Outputs element volume-averaged material properties", "href": "../../../../source/auxkernels/MaterialRealAux.html"}>>>
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = gap_conductance
    property<<<{"description": "The material property name."}>>> = gap_conductance
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = pellet_outer_radial_surface
  []
  [fuel_clad_gap_width]
    type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../../../source/auxkernels/ParsedAux.html"}>>>
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = fuel_clad_gap_width
    coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = penetration
    expression<<<{"description": "Parsed function expression to compute"}>>> = '-penetration'
  []
  [failed_element]
    type = MaterialRealAux<<<{"description": "Outputs element volume-averaged material properties", "href": "../../../../source/auxkernels/MaterialRealAux.html"}>>>
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = element_failed
    property<<<{"description": "The material property name."}>>> = failed
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = clad_outside_right
  []
  [fuel_volumetric_strain]
    type = RankTwoScalarAux<<<{"description": "Compute a scalar property of a RankTwoTensor", "href": "../../../../source/auxkernels/RankTwoScalarAux.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = fuel_volumetric_strain
    rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = total_strain
    scalar_type<<<{"description": "Type of scalar output"}>>> = VolumetricStrain
  []
  [clad_hoop_stress]
    type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../../../source/auxkernels/RankTwoAux.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = clad_hoop_stress
    rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = stress
    index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 2
    index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 2
  []
  [clad_hoop_creep_strain]
    type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../../../source/auxkernels/RankTwoAux.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = clad_hoop_creep_strain
    rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = creep_strain
    index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 2
    index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 2
  []
  [clad_hoop_elastic_strain]
    type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../../../source/auxkernels/RankTwoAux.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = clad_hoop_elastic_strain
    rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = elastic_strain
    index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 2
    index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 2
  []
  [clad_hoop_total_strain]
    type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../../../source/auxkernels/RankTwoAux.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = clad_hoop_total_strain
    rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = total_strain
    index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 2
    index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 2
  []
  [local_power]
    type = FunctionAux<<<{"description": "Auxiliary Kernel that creates and updates a field variable by sampling a function through space and time.", "href": "../../../../source/auxkernels/FunctionAux.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = local_power
    function<<<{"description": "The function to use as the value"}>>> = lhr_peaking_factor_function
  []
  [T_coolant]
    type = MaterialRealAux<<<{"description": "Outputs element volume-averaged material properties", "href": "../../../../source/auxkernels/MaterialRealAux.html"}>>>
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = T_coolant
    property<<<{"description": "The material property name."}>>> = coolant_temperature
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = clad_outside_right
  []
  [pin_lhr]
    type = FunctionAux<<<{"description": "Auxiliary Kernel that creates and updates a field variable by sampling a function through space and time.", "href": "../../../../source/auxkernels/FunctionAux.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = pin_lhr
    function<<<{"description": "The function to use as the value"}>>> = pin_lhr_function
  []
  [eutectic_thickness]
    type = DiffusionalEutecticThicknessFCCI<<<{"description": "Computes diffusion-controlled eutectic penetration thickness with a boundary temperature.", "href": "../../../../source/auxkernels/DiffusionalEutecticThicknessFCCI.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = eutectic_thickness
    temperature<<<{"description": "Coupled temperature of the boundary."}>>> = T
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = clad_inside_right
    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."}>>> = TIMESTEP_END
  []
[]

[Contact<<<{"href": "../../../../syntax/Contact/index.html"}>>>]
  [frictionless_fuel_clad_mechanical]
    primary<<<{"description": "The list of boundary IDs referring to primary sidesets"}>>> = clad_inside_right
    secondary<<<{"description": "The list of boundary IDs referring to secondary sidesets"}>>> = pellet_outer_radial_surface
    model<<<{"description": "The contact model to use"}>>> = frictionless
    formulation<<<{"description": "The contact formulation"}>>> = kinematic
    tangential_tolerance<<<{"description": "Tangential distance to extend edges of contact surfaces"}>>> = 1e-3
    normal_smoothing_distance<<<{"description": "Distance from edge in parametric coordinates over which to smooth contact normal"}>>> = 0.1
  []
[]

[ThermalContact<<<{"href": "../../../../syntax/Modules/HeatTransfer/ThermalContact/index.html"}>>>]
  [thermal_contact]
    type = GapHeatTransfer
    variable = T
    primary = clad_inside_right
    secondary = pellet_outer_radial_surface
    gap_geometry_type = CYLINDER
    gap_conductivity_function = sodium_conductivity_function
    gap_conductivity_function_variable = T
    quadrature = true
    min_gap = %{gap_width} # Initial gap thickness according to dimensions.
    tangential_tolerance = 1e-4
  []
[]

[BCs<<<{"href": "../../../../syntax/NuclearMaterials/BCs/index.html"}>>>]
  [fix_disp_x_all]
    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
    value<<<{"description": "Value of the BC"}>>> = 0.0
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = centerline
  []
  [fix_disp_y_all]
    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
    value<<<{"description": "Value of the BC"}>>> = 0.0
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'clad_outside_bottom bottom_of_bottom_pellet'
  []
  [Pressure<<<{"href": "../../../../syntax/BCs/Pressure/index.html"}>>>]
    [coolant_pressure]
      function<<<{"description": "The function that describes the pressure"}>>> = coolant_pressure_function
      boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = 'clad_outside_bottom clad_outside_right clad_outside_top'
    []
  []
  [PlenumPressure<<<{"href": "../../../../syntax/BCs/PlenumPressure/index.html"}>>>]
    [plenum_pressure]
      boundary<<<{"description": "The list of boundary IDs from the mesh where the pressure will be applied"}>>> = 'clad_inside_bottom clad_inside_right clad_inside_top'
      startup_time<<<{"description": "The amount of time during which the pressure will ramp from zero to its true value."}>>> = 0
      initial_pressure<<<{"description": "The initial pressure in the cavity.  If not given, a zero initial pressure will be used."}>>> = 84000 # [Hayes et al., 1994]
      volume<<<{"description": "The name of the postprocessor(s) that holds the value of the internal volume in the cavity"}>>> = gas_volume
      material_input<<<{"description": "The name of the postprocessor(s) that holds the amount of material injected into the plenum."}>>> = fission_gas_released
      R<<<{"description": "The universal gas constant for the units used."}>>> = 8.3143
      temperature<<<{"description": "The name of the average temperature postprocessor value."}>>> = plenum_temperature
      output<<<{"description": "The name to use for the cavity pressure value"}>>> = plenum_pressure
    []
  []
[]

[PlenumTemperature<<<{"href": "../../../../syntax/PlenumTemperature/index.html"}>>>]
  [plenum_temperature]
    temperature<<<{"description": "Coupled temperature (K)"}>>> = T
    boundary<<<{"description": "The boundary ID or name over which the plenum temperature should be measured."}>>> = 'bottom_of_bottom_pellet pellet_outer_radial_surface
                top_of_top_pellet clad_inside_bottom clad_inside_right
                clad_inside_top'
    inner_surfaces<<<{"description": "The inner surfaces (e.g. fuel not on inner radius)."}>>> = 'bottom_of_bottom_pellet pellet_outer_radial_surface
                      top_of_top_pellet'
    outer_surfaces<<<{"description": "The outer surfaces (e.g. cladding)."}>>> = 'clad_inside_bottom clad_inside_right clad_inside_top'
  []
[]

[CoolantChannel<<<{"href": "../../../../syntax/CoolantChannel/index.html"}>>>]
  [convective_clad_surface]
    variable<<<{"description": "The name of the variable representing temperature"}>>> = T
    inlet_temperature<<<{"description": "Inlet temperature in K "}>>> = T_coolant_in_function
    inlet_pressure<<<{"description": "Inlet pressure in Pa"}>>> = coolant_pressure_function
    inlet_massflux<<<{"description": "Inlet mass flux in kg/m^2-sec"}>>> = coolant_flux_function
    coolant_material<<<{"description": "The name of the user object with fluid properties"}>>> = sodium
    rod_diameter<<<{"description": "Rod diameter in meter"}>>> = 0.00737 # [Hayes et al., 1994]
    rod_pitch<<<{"description": "Rod pitch in meter"}>>> = %{pin_pitch}
    linear_heat_rate<<<{"description": "Linear heat generation rate in W/m"}>>> = pin_lhr_avg_function
    axial_power_profile<<<{"description": "Axial power profile"}>>> = lhr_peaking_factor_function
    subchannel_geometry<<<{"description": "Geometry of the pin array:square triangular"}>>> = triangular
    boundary<<<{"description": "The boundary where the coolant channel calculation will run"}>>> = 'clad_outside_bottom clad_outside_right clad_outside_top'
  []
[]

[Materials<<<{"href": "../../../../syntax/Materials/index.html"}>>>]
  ###### FUEL ######
  [fuel_fission_rate]
    type = UPuZrFissionRate<<<{"description": "Computes fission rate based on linear power, axial power profile, axial plutonium concentration, and local zirconium concentration.", "href": "../../../../source/materials/UPuZrFissionRate.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    rod_linear_power<<<{"description": "Function that describes the linear power as a function of time."}>>> = pin_lhr_avg_function
    axial_power_profile<<<{"description": "Function that describes the axial power profile as a function of axial position and time."}>>> = lhr_peaking_factor_function
    pellet_radius<<<{"description": "Fuel pellet radius"}>>> = %{fuel_r}
    initial_X_Zr<<<{"description": "Initial atom fraction of zirconium. Only required if X_Zr is coupled to a variable"}>>> = %{x_Zr}
    X_Zr<<<{"description": "Zirconium atom fraction variable"}>>> = %{x_Zr}
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
    output_properties<<<{"description": "List of material properties, from this material, to output (outputs must also be defined to an output type)"}>>> = fission_rate
  []
  [fuel_burnup]
    type = UPuZrBurnup<<<{"description": "Computes the burnup for UPuZr metallic fuel.", "href": "../../../../source/materials/UPuZrBurnup.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    density<<<{"description": "Initial fuel density [kg/m3]."}>>> = %{fuel_density}
    initial_X_Pu<<<{"description": "Initial atom fraction of plutonium."}>>> = %{x_Pu}
    initial_X_Zr<<<{"description": "Initial atom fraction of zirconium."}>>> = %{x_Zr}
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
    output_properties<<<{"description": "List of material properties, from this material, to output (outputs must also be defined to an output type)"}>>> = burnup
  []
  [fuel_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"}>>> = pellet
    strain_free_density<<<{"description": "Material property for strain-free density"}>>> = %{fuel_density}
  []
  [fuel_sodium_logging]
    type = UPuZrSodiumLogging<<<{"description": "Computes the local fractional amount of sodium logging.", "href": "../../../../source/materials/UPuZrSodiumLogging.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    porosity<<<{"description": "Porosity material property name"}>>> = porosity
    sodium_infiltration_fraction<<<{"description": "Fractional amount of sodium infiltration in interconnected porosity"}>>> = %{na_infiltration}
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
    output_properties<<<{"description": "List of material properties, from this material, to output (outputs must also be defined to an output type)"}>>> = sodium_logged_porosity
  []
  [fuel_thermal_properties]
    type = UPuZrThermal<<<{"description": "Computes the thermal conductivity and specific heat for U-Pu-Zr fuels                               based on mole fractions, porosity, and temperature.", "href": "../../../../source/materials/UPuZrThermal.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    X_Pu<<<{"description": "Coupled plutonium atom fraction."}>>> = %{x_Pu}
    X_Zr<<<{"description": "Coupled zirconium atom fraction."}>>> = %{x_Zr}
    spheat_model<<<{"description": "Specific heat model. Choices are: karahan savage constant function"}>>> = savage
    thcond_model<<<{"description": "Thermal conductivity model. Choices are: billone galloway lanl kim odaria_corrected function constant"}>>> = lanl
    porosity_model<<<{"description": "Porosity correction factor model. Choices are: none fractional power logged partially_logged"}>>> = logged
    porosity<<<{"description": "Porosity material property name. Required if porosity_model is not 'none'"}>>> = porosity
    sodium_logged_porosity<<<{"description": "Sodium logged porosity material property name. Required if porosity_model is 'logged'"}>>> = sodium_logged_porosity
  []
  [fuel_elasticity_tensor]
    type = UPuZrElasticityTensor<<<{"description": "Computes the Young's modulus and Poisson's ratio for UPuZr fuel based on supplied fractions of Pu and Zr.", "href": "../../../../source/materials/solid_mechanics/UPuZrElasticityTensor.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    X_Pu<<<{"description": "Coupled plutonium atom fraction"}>>> = %{x_Pu}
    X_Zr<<<{"description": "Coupled zirconium atom fraction"}>>> = %{x_Zr}
    porosity<<<{"description": "Porosity material property name"}>>> = porosity
  []
  [fuel_creep]
    type = UPuZrCreepUpdate<<<{"description": "Computes the secondary thermal and irradiation creep for UPuZr fast metal fuel. This material must be run in conjunction with ComputeMultipleInelasticStress.", "href": "../../../../source/materials/solid_mechanics/UPuZrCreepUpdate.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    porosity<<<{"description": "Porosity material property name"}>>> = porosity
    max_inelastic_increment<<<{"description": "The maximum inelastic strain increment allowed in a time step"}>>> = 3e-3
    effective_inelastic_strain_name<<<{"description": "Name of the material property that stores the effective inelastic strain"}>>> = fuel_effective_creep_strain
  []
  [fuel_gaseous_swelling]
    type = UPuZrGaseousEigenstrain<<<{"description": "Computes and sums the change in fuel pellet volume due to gaseous fission product buildup in UPuZr.", "href": "../../../../source/materials/solid_mechanics/UPuZrGaseousEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    fission_rate<<<{"description": "Fission rate material property name"}>>> = fission_rate
    anisotropic_factor<<<{"description": "Factor applied to radial strains to estimate macroscopic anisotropic swelling. Axial axis must be along Y-axis."}>>> = 0.5
    bubble_number_density<<<{"description": "Material property name for the number density of intragranular bubbles, [bubbles/m^3]"}>>> = 5e17
    interconnection_initiating_porosity<<<{"description": "Porosity at which fission gas release starts"}>>> = %{fgr_initiating_porosity}
    interconnection_terminating_porosity<<<{"description": "Porosity at which fission gas release finishes"}>>> = %{fgr_terminating_porosity}
    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_gaseous_strain
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
    output_properties<<<{"description": "List of material properties, from this material, to output (outputs must also be defined to an output type)"}>>> = 'gas_swelling porosity interconnectivity'
  []
  [fuel_solid_swelling]
    type = BurnupDependentEigenstrain<<<{"description": "Computes the swelling produced by solid fission products as a function of burnup.", "href": "../../../../source/materials/solid_mechanics/BurnupDependentEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    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_solid_strain
    swelling_name<<<{"description": "Name of material property calculated here corresponding to burnup dependent swelling"}>>> = solid_swelling
    swelling_factor<<<{"description": "Scale factor multiplied by the burnup."}>>> = 0 # Solid swelling is negligible below 10% burnup
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
    output_properties<<<{"description": "List of material properties, from this material, to output (outputs must also be defined to an output type)"}>>> = solid_swelling
  []
  [fuel_fission_gas_release]
    type = UPuZrFissionGasRelease<<<{"description": "Computes fission gas release for UPuZr metallic fuel", "href": "../../../../source/materials/UPuZrFissionGasRelease.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    fission_rate<<<{"description": "Fission rate material property name"}>>> = fission_rate
    porosity<<<{"description": "Porosity material property name"}>>> = porosity
    critical_porosity<<<{"description": "Porosity at which fission gas release initiates. This needs to be between the interconnection_initiating_porosity and interconnection_terminating_porosity in UPuZrVolumetricSwellingEigenstrain"}>>> = %{critical_porosity}
    fractional_fgr_initial<<<{"description": "fraction of fission gas produced that is released once the critical porosity is reached"}>>> = %{fgr_initial}
    fractional_fgr_post<<<{"description": "fraction of fission gas produced that is released after interconnection"}>>> = %{fgr_post}
  []
  [fuel_thermal_expansion]
    type = UPuZrThermalExpansionEigenstrain<<<{"description": "Computes an eigenstrain due to thermal expansion for UPuZr using a function that describes the mean thermal expansion as a function of temperature.", "href": "../../../../source/materials/solid_mechanics/UPuZrThermalExpansionEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    stress_free_temperature<<<{"description": "Reference temperature at which there is no thermal expansion for thermal eigenstrain calculation"}>>> = 298
    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
  []
  [fuel_elastic_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"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    inelastic_models<<<{"description": "The material objects to use to calculate stress and inelastic strains. Note: specify creep models first and plasticity models second."}>>> = fuel_creep
  []

  ###### CLADDING ######
  [fast_neutron_flux]
    type = UPuZrFastNeutronFlux<<<{"description": "Computes fast neutron flux and fluence for UPuZr.", "href": "../../../../source/materials/UPuZrFastNeutronFlux.html"}>>>
    pellet_radius<<<{"description": "Fuel pellet radius"}>>> = %{fuel_r}
    axial_power_profile<<<{"description": "Function that describes the axial power profile as a function of axial position and time."}>>> = lhr_peaking_factor_function
    rod_linear_power<<<{"description": "Function that describes the linear power as a function of time."}>>> = pin_lhr_avg_function
    initial_density<<<{"description": "Initial density of the fuel"}>>> = %{fuel_density}
    initial_X_Pu<<<{"description": "Initial atom fraction of plutonium"}>>> = %{x_Pu}
    initial_X_Zr<<<{"description": "Initial atom fraction of zirconium"}>>> = %{x_Zr}
    enrichment_U235<<<{"description": "Initial ratio of U-235 to total uranium"}>>> = %{enrichment_U}
    enrichment_Pu240<<<{"description": "Initial ratio of Pu-240 to total plutonium"}>>> = %{enrichment_Pu}
    calculate_fluence<<<{"description": "Flag to calculate total neutron fluence from the fast flux."}>>> = true
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
  []
  [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"}>>> = 7771
  []
  [clad_thermal_properties]
    type = HT9Thermal<<<{"description": "Computes the thermal conductivity and specific heat for HT9 stainless steel as a function of temperature.", "href": "../../../../source/materials/HT9Thermal.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
  []
  [clad_gaseous_swelling]
    type = HT9VolumetricSwellingEigenstrain<<<{"description": "Computes the change in cladding volume due to irradiation by fast neutrons. This class applies a volumetric strain correction before adding the strain from this class to the diagonal entries of the eigenstrain tensor.", "href": "../../../../source/materials/solid_mechanics/HT9VolumetricSwellingEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    fast_neutron_flux<<<{"description": "Name of fast neutron flux material property"}>>> = fast_neutron_flux
    fast_neutron_fluence<<<{"description": "Name of fast neutron fluence material property"}>>> = fast_neutron_fluence
    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_gaseous_strain
  []
  [clad_thermal_expansion]
    type = HT9ThermalExpansionEigenstrain<<<{"description": "Computes an eigenstrain due to thermal expansion for HT9 using a function that describes the mean thermal expansion as a function of temperature.", "href": "../../../../source/materials/solid_mechanics/HT9ThermalExpansionEigenstrain.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    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
    stress_free_temperature<<<{"description": "Reference temperature at which there is no thermal expansion for thermal eigenstrain calculation"}>>> = 298
  []
  [clad_elasticity_tensor]
    type = HT9ElasticityTensor<<<{"description": "Computes the Young's modulus and Poisson's ratio for HT9 cladding as a function of temperature and formulates the elasticity tensor.", "href": "../../../../source/materials/solid_mechanics/HT9ElasticityTensor.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
  []
  [clad_creep]
    type = HT9CreepUpdate<<<{"description": "Computes steady-state thermal and irradiation creep for HT9. Must be used in conjunction with ComputeMultipleInelasticStress.", "href": "../../../../source/materials/solid_mechanics/HT9CreepUpdate.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    first_thermal_scalar<<<{"description": "Scalar multiplied against the creep rate for the first term of thermal creep"}>>> = 1
    second_thermal_scalar<<<{"description": "Scalar multiplied against the creep rate for the second term of thermal creep"}>>> = 1
    irradiation_scalar<<<{"description": "Scalar multiplied against the creep rate for irradiation creep"}>>> = 1
    max_inelastic_increment<<<{"description": "The maximum inelastic strain increment allowed in a time step"}>>> = 3e-3 # 1e-2
    effective_inelastic_strain_name<<<{"description": "Name of the material property that stores the effective inelastic strain"}>>> = clad_effective_creep_strain
  []
  [clad_failure]
    type = HT9FailureClad<<<{"description": "Failure model for HT-9 cladding. Contains multiple models for steady state (burnup calculations) and transient operations.", "href": "../../../../source/materials/HT9FailureClad.html"}>>>
    method<<<{"description": "Failure method choice. Options: ccg_dcs cdf_long cdf_short cdf_both cdf_mfh cdf_whc"}>>> = cdf_long
    hoop_stress<<<{"description": "Hoop stress in cladding"}>>> = stress_zz
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = clad_outside_right
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
    output_properties<<<{"description": "List of material properties, from this material, to output (outputs must also be defined to an output type)"}>>> = cdf_failure
  []
  [inner_clad_wastage]
    type = MetallicFuelWastage<<<{"description": "Computes wastage thickness on the fuel-cladding interface.", "href": "../../../../source/materials/MetallicFuelWastage.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    method<<<{"description": "Wastage thickness method choice. Options: flux_ht9 flux_ss316 flux_d9 burnup_ht9_legacy burnup_ht9_opt burnup_ht9_gap flux_burnup_ht9"}>>> = flux_ht9
    burnup<<<{"description": "Burnup material name"}>>> = 0 # not used but must be specified
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
    output_properties<<<{"description": "List of material properties, from this material, to output (outputs must also be defined to an output type)"}>>> = wastage_thickness
  []
  [outer_clad_wastage]
    type = MetallicFuelCoolantWastage<<<{"description": "Compute wastage thickness on the cladding-coolant interface.", "href": "../../../../source/materials/MetallicFuelCoolantWastage.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    clad_material<<<{"description": "Fuel cladding material choice. Options: HT9 SS316 HT9_HEDL custom"}>>> = HT9
    use_effective_method<<<{"description": "Flag to use effective method that gives better consistency with original correlation"}>>> = true
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
  []
  [clad_wastage_fraction]
    type = MetallicFuelWastageDamage<<<{"description": "Computes wastage thinning fraction on the fuel-cladding interface.", "href": "../../../../source/materials/MetallicFuelWastageDamage.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    wastage_thickness<<<{"description": "Coupled wastage thickness for FCCI"}>>> = wastage_thickness
    pellet_length<<<{"description": "Length of fuel pellet"}>>> = %{fuel_h}
    pellet_y_start<<<{"description": "y position of start of fuel pellet"}>>> = 0.019
    cladding_thickness<<<{"description": "thickness of cladding used in FCCI"}>>> = 0.0004064
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
  []
  [clad_damage_fraction]
    type = ScalarMaterialDamage<<<{"description": "Scalar damage model for which the damage is prescribed by another material", "href": "../../../../source/materials/ScalarMaterialDamage.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    damage_index<<<{"description": "Name of the material property containing the damage index, which goes from 0 (undamaged) to 1 (fully damaged)"}>>> = thinning_fraction
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
  []
  [clad_elastic_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"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    inelastic_models<<<{"description": "The material objects to use to calculate stress and inelastic strains. Note: specify creep models first and plasticity models second."}>>> = clad_creep
  []
[]

[Dampers<<<{"href": "../../../../syntax/Dampers/index.html"}>>>]
  [T_damper]
    type = MaxIncrement<<<{"description": "Limits a variable's update by some max fraction", "href": "../../../../source/dampers/MaxIncrement.html"}>>>
    variable<<<{"description": "The name of the variable that this damper operates on"}>>> = T
    max_increment<<<{"description": "The maximum newton increment for the variable."}>>> = 25
  []
  [disp_x_damper]
    type = MaxIncrement<<<{"description": "Limits a variable's update by some max fraction", "href": "../../../../source/dampers/MaxIncrement.html"}>>>
    variable<<<{"description": "The name of the variable that this damper operates on"}>>> = disp_x
    max_increment<<<{"description": "The maximum newton increment for the variable."}>>> = 3.00E-04
  []
  [disp_y_damper]
    type = MaxIncrement<<<{"description": "Limits a variable's update by some max fraction", "href": "../../../../source/dampers/MaxIncrement.html"}>>>
    variable<<<{"description": "The name of the variable that this damper operates on"}>>> = disp_y
    max_increment<<<{"description": "The maximum newton increment for the variable."}>>> = 3.00E-04
  []
[]

[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 = PJFNK
  automatic_scaling = true
  compute_scaling_once = false
  petsc_options = '-snes_ksp_ew'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_package
                         -ksp_gmres_restart'
  petsc_options_value = 'lu       superlu_dist
                         51'
  line_search = NONE
  l_max_its = 30
  l_tol = 1e-3
  nl_max_its = 30
  nl_rel_tol = 1e-4
  nl_abs_tol = 5e-7
  start_time = %{t_start}
  end_time = %{t_end}
  dtmin = 1e-2
  dtmax = 1e6
  verbose = true
  [Quadrature<<<{"href": "../../../../syntax/Executioner/Quadrature/index.html"}>>>]
    order<<<{"description": "Order of the quadrature"}>>> = FIFTH
    side_order<<<{"description": "Order of the quadrature for sides"}>>> = SEVENTH
  []
  [TimeStepper<<<{"href": "../../../../syntax/Executioner/TimeStepper/index.html"}>>>]
    type = IterationAdaptiveDT
    dt = 1
    optimal_iterations = 10
    iteration_window = 4
    growth_factor = 1.25
    cutback_factor = 0.512
    linear_iteration_ratio = 100
    force_step_every_function_point = true
    timestep_limiting_function = assembly_lhr_avg_function
    timestep_limiting_postprocessor = creep_timestep_min
  []
[]

[Postprocessors<<<{"href": "../../../../syntax/Postprocessors/index.html"}>>>]
  ###### POWER ######
  [fission_rate_density_avg]
    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"}>>> = pellet
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = fission_rate
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [fast_neutron_fluence_avg]
    type = ElementAverageValue<<<{"description": "Computes the volumetric average of a variable", "href": "../../../../source/postprocessors/ElementAverageValue.html"}>>>
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = fast_neutron_fluence
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [fast_neutron_fluence_max]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = fast_neutron_fluence
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [pin_hr_tot]
    type = ElementIntegralPower<<<{"description": "Computes the power given the fission rate and energy per fission.", "href": "../../../../source/postprocessors/ElementIntegralPower.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = T # required but not actually used
    use_material_fission_rate<<<{"description": "Flag to use the material 'fission_rate_material' instead of variable fission rate"}>>> = true
    fission_rate_material<<<{"description": "Fission rate material property name"}>>> = fission_rate
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [pin_lhr_avg]
    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."}>>> = pin_lhr_avg_function
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []

  ###### HEAT TRANSFER ######
  [radial_heat_flux_from_fuel]
    type = SideDiffusiveFluxIntegral<<<{"description": "Computes the integral of the diffusive flux over the specified boundary", "href": "../../../../source/postprocessors/SideDiffusiveFluxIntegral.html"}>>>
    variable<<<{"description": "The name of the variable which this postprocessor integrates"}>>> = T
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = pellet_outer_radial_surface
    diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation. This must be provided if the variable is of finite element type"}>>> = thermal_conductivity
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [radial_heat_flux_from_clad]
    type = SideDiffusiveFluxIntegral<<<{"description": "Computes the integral of the diffusive flux over the specified boundary", "href": "../../../../source/postprocessors/SideDiffusiveFluxIntegral.html"}>>>
    variable<<<{"description": "The name of the variable which this postprocessor integrates"}>>> = T
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = clad_outside_right
    diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation. This must be provided if the variable is of finite element type"}>>> = thermal_conductivity
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []

  ###### FISSION GAS ###### (needed for simulation to run)
  [fission_gas_produced]
    type = ElementIntegralMaterialProperty<<<{"description": "Compute the integral of the material property over the domain", "href": "../../../../source/postprocessors/ElementIntegralMaterialProperty.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    mat_prop<<<{"description": "The name of the material property"}>>> = fis_gas_prod
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [fission_gas_released]
    type = ElementIntegralMaterialProperty<<<{"description": "Compute the integral of the material property over the domain", "href": "../../../../source/postprocessors/ElementIntegralMaterialProperty.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    mat_prop<<<{"description": "The name of the material property"}>>> = fis_gas_rel
    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 LINEAR TIMESTEP_END'
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [fission_gas_released_pct]
    type = FGRPercent<<<{"description": "Computes the ratio of fission gas released to the fission gas generated in percent.", "href": "../../../../source/postprocessors/FGRPercent.html"}>>>
    fission_gas_generated<<<{"description": "The fission gas generated postprocessor"}>>> = fission_gas_produced
    fission_gas_released<<<{"description": "The fission gas released postprocessor"}>>> = fission_gas_released
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'console csv chkfile'
  []
  [clad_internal_volume]
    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"}>>> = 'clad_inside_bottom clad_inside_right clad_inside_top'
    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 LINEAR TIMESTEP_END'
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [fuel_volume]
    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"}>>> = 'bottom_of_bottom_pellet pellet_outer_radial_surface
                top_of_top_pellet'
    scale_factor<<<{"description": "A scale factor to be applied to the internal volume calculation"}>>> = -1 # makes the fuel volume positive
    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 LINEAR TIMESTEP_END'
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [sodium_volume]
    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."}>>> = sodium_volume_function
    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 LINEAR TIMESTEP_END'
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [gas_volume]
    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."}>>> = gas_volume_function
    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 LINEAR TIMESTEP_END'
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [plenum_compressibility]
    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."}>>> = plenum_compressibility_function
    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 LINEAR TIMESTEP_END'
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [compressibility_times_temperature]
    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."}>>> = compressibility_times_temperature_function
    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 LINEAR TIMESTEP_END'
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []

  ###### BURNUP ######
  [burnup_max]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = burnup
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [burnup_max_pct]
    type = LinearCombinationPostprocessor<<<{"description": "Computes a linear combination between an arbitrary number of post-processors", "href": "../../../../source/postprocessors/LinearCombinationPostprocessor.html"}>>>
    pp_names<<<{"description": "List of post-processors"}>>> = burnup_max
    pp_coefs<<<{"description": "List of linear combination coefficients for each post-processor"}>>> = 100
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [burnup_avg]
    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"}>>> = pellet
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = burnup
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [burnup_avg_pct]
    type = LinearCombinationPostprocessor<<<{"description": "Computes a linear combination between an arbitrary number of post-processors", "href": "../../../../source/postprocessors/LinearCombinationPostprocessor.html"}>>>
    pp_names<<<{"description": "List of post-processors"}>>> = burnup_avg
    pp_coefs<<<{"description": "List of linear combination coefficients for each post-processor"}>>> = 100
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'console csv chkfile'
  []

  ###### FUEL TEMPERATURE ######
  [fuel_T_max]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = T
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [fuel_T_max_peak]
    type = TimeExtremeValue<<<{"description": "A postprocessor for reporting the extreme value of another postprocessor over time.", "href": "../../../../source/postprocessors/TimeExtremeValue.html"}>>>
    postprocessor<<<{"description": "The name of the postprocessor used for reporting time extreme values"}>>> = fuel_T_max
    value_type<<<{"description": "Type of extreme value to return.'max' returns the maximum value.'min' returns the minimum value.'abs_max' returns the maximum absolute value.'abs_min' returns the minimum absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [fuel_T_surface_max]
    type = NodalExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/NodalExtremeValue.html"}>>>
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = pellet_outer_radial_surface
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = T
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [fuel_T_surface_max_peak]
    type = TimeExtremeValue<<<{"description": "A postprocessor for reporting the extreme value of another postprocessor over time.", "href": "../../../../source/postprocessors/TimeExtremeValue.html"}>>>
    postprocessor<<<{"description": "The name of the postprocessor used for reporting time extreme values"}>>> = fuel_T_surface_max
    value_type<<<{"description": "Type of extreme value to return.'max' returns the maximum value.'min' returns the minimum value.'abs_max' returns the maximum absolute value.'abs_min' returns the minimum absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []

  ###### CLADDING TEMPERATURE ######
  [clad_T_max]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = T
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [clad_T_max_peak]
    type = TimeExtremeValue<<<{"description": "A postprocessor for reporting the extreme value of another postprocessor over time.", "href": "../../../../source/postprocessors/TimeExtremeValue.html"}>>>
    postprocessor<<<{"description": "The name of the postprocessor used for reporting time extreme values"}>>> = clad_T_max
    value_type<<<{"description": "Type of extreme value to return.'max' returns the maximum value.'min' returns the minimum value.'abs_max' returns the maximum absolute value.'abs_min' returns the minimum absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [clad_T_inner_surface_max]
    type = NodalExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/NodalExtremeValue.html"}>>>
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = clad_inside_right
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = T
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [clad_T_inner_surface_max_peak]
    type = TimeExtremeValue<<<{"description": "A postprocessor for reporting the extreme value of another postprocessor over time.", "href": "../../../../source/postprocessors/TimeExtremeValue.html"}>>>
    postprocessor<<<{"description": "The name of the postprocessor used for reporting time extreme values"}>>> = clad_T_inner_surface_max
    value_type<<<{"description": "Type of extreme value to return.'max' returns the maximum value.'min' returns the minimum value.'abs_max' returns the maximum absolute value.'abs_min' returns the minimum absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [clad_T_outer_surface_max]
    type = NodalExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/NodalExtremeValue.html"}>>>
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = clad_outside_right
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = T
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [clad_T_outer_surface_max_peak]
    type = TimeExtremeValue<<<{"description": "A postprocessor for reporting the extreme value of another postprocessor over time.", "href": "../../../../source/postprocessors/TimeExtremeValue.html"}>>>
    postprocessor<<<{"description": "The name of the postprocessor used for reporting time extreme values"}>>> = clad_T_outer_surface_max
    value_type<<<{"description": "Type of extreme value to return.'max' returns the maximum value.'min' returns the minimum value.'abs_max' returns the maximum absolute value.'abs_min' returns the minimum absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []

  ###### COOLANT PARAMETERS ######
  [T_coolant_in]
    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."}>>> = T_coolant_in_function
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [T_coolant_out]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = T_coolant
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [coolant_flux]
    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."}>>> = coolant_flux_function
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []

  ###### FUEL DEFORMATION ######
  [fuel_axial_elongation_min]
    type = NodalExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/NodalExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = disp_y
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = min
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [fuel_axial_elongation_max]
    type = NodalExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/NodalExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = disp_y
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [fuel_axial_elongation_max_pct]
    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."}>>> = fuel_axial_elongation_max_pct_function
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'console csv chkfile'
  []
  [fuel_radial_dilation_max]
    type = NodalExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/NodalExtremeValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = disp_x
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = pellet_outer_radial_surface
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [fuel_radial_dilation_max_pct]
    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."}>>> = fuel_radial_dilation_max_pct_function
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []

  ###### CLADDING DEFORMATION ######
  [clad_axial_elongation_max]
    type = NodalExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/NodalExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = disp_y
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [clad_axial_elongation_max_pct]
    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."}>>> = clad_axial_elongation_max_pct_function
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [clad_radial_dilation_max]
    type = NodalExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/NodalExtremeValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = disp_x
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = clad_outside_right
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [clad_radial_dilation_max_pct]
    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."}>>> = clad_radial_dilation_max_pct_function
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'console csv chkfile'
  []

  ###### GAP DEFORMATION AND MECHANICS ######
  [gap_width_min]
    type = NodalExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/NodalExtremeValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = fuel_clad_gap_width
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = pellet_outer_radial_surface
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = min
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [gap_width_max]
    type = NodalExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/NodalExtremeValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = fuel_clad_gap_width
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = pellet_outer_radial_surface
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [gap_width_avg]
    type = SideAverageValue<<<{"description": "Computes the average value of a variable on a sideset. Note that this cannot be used on the centerline of an axisymmetric model.", "href": "../../../../source/postprocessors/SideAverageValue.html"}>>>
    variable<<<{"description": "The name of the variable which this postprocessor integrates"}>>> = fuel_clad_gap_width
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = pellet_outer_radial_surface
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [contact_pressure_max]
    type = NodalExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/NodalExtremeValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = contact_pressure
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = pellet_outer_radial_surface
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []

  ###### FUEL MECHANICS ######
  [fuel_hydrostatic_stress_min]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = hydrostatic_stress
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = min
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [fuel_hydrostatic_stress_max]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = hydrostatic_stress
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [fuel_hydrostatic_stress_avg]
    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"}>>> = pellet
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = hydrostatic_stress
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [fuel_volumetric_strain_avg]
    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"}>>> = pellet
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = fuel_volumetric_strain
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []

  ###### CLADDING MECHANICS ######
  [clad_hoop_stress_max]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = clad_hoop_stress
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [clad_hoop_creep_strain_max]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = clad_hoop_creep_strain
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [clad_hoop_elastic_strain_max]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = clad_hoop_elastic_strain
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [clad_hoop_total_strain_max]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = clad_hoop_total_strain
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [cdf_max]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = cdf_failure
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'console csv'
  []

  ###### PERFORMANCE ######
  [creep_timestep_fuel]
    type = MaterialTimeStepPostprocessor<<<{"description": "This postprocessor estimates a timestep that reduces the increment change in a material property below a given threshold.", "href": "../../../../source/postprocessors/MaterialTimeStepPostprocessor.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [creep_timestep_clad]
    type = MaterialTimeStepPostprocessor<<<{"description": "This postprocessor estimates a timestep that reduces the increment change in a material property below a given threshold.", "href": "../../../../source/postprocessors/MaterialTimeStepPostprocessor.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [creep_timestep_min]
    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."}>>> = creep_timestep_min_function
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []

  ###### SWELLING ######
  [solid_swelling_avg]
    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"}>>> = pellet
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = solid_swelling
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [gas_swelling_avg]
    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"}>>> = pellet
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = gas_swelling
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [porosity_avg]
    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"}>>> = pellet
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = porosity
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [sodium_logged_porosity_avg]
    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"}>>> = pellet
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = sodium_logged_porosity
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []

  ###### CLADDING WASTAGE ######
  [wastage_max]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = wastage_thickness
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = 'csv chkfile'
  []
  [wastage_min]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = wastage_thickness
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = min
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [wastage_avg]
    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"}>>> = clad
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = wastage_thickness
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [eutectic_max]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = eutectic_thickness
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [eutectic_min]
    type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../../../source/postprocessors/ElementExtremeValue.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = eutectic_thickness
    value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = min
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [eutectic_avg]
    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"}>>> = clad
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = eutectic_thickness
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
[]

[VectorPostprocessors<<<{"href": "../../../../syntax/VectorPostprocessors/index.html"}>>>]
  [fuel_centerline]
    type = SideValueSampler<<<{"description": "Sample variable(s) along a sideset, internal or external.", "href": "../../../../source/vectorpostprocessors/SideValueSampler.html"}>>>
    variable<<<{"description": "The names of the variables that this VectorPostprocessor operates on"}>>> = 'T disp_x disp_y'
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = centerline
    sort_by<<<{"description": "What to sort the samples by"}>>> = y
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [fuel_surface]
    type = SideValueSampler<<<{"description": "Sample variable(s) along a sideset, internal or external.", "href": "../../../../source/vectorpostprocessors/SideValueSampler.html"}>>>
    variable<<<{"description": "The names of the variables that this VectorPostprocessor operates on"}>>> = 'T disp_x disp_y'
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = pellet_outer_radial_surface
    sort_by<<<{"description": "What to sort the samples by"}>>> = y
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [clad_inner_surface]
    type = SideValueSampler<<<{"description": "Sample variable(s) along a sideset, internal or external.", "href": "../../../../source/vectorpostprocessors/SideValueSampler.html"}>>>
    variable<<<{"description": "The names of the variables that this VectorPostprocessor operates on"}>>> = 'T disp_x disp_y'
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = clad_inside_right
    sort_by<<<{"description": "What to sort the samples by"}>>> = y
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
  [clad_outer_surface]
    type = SideValueSampler<<<{"description": "Sample variable(s) along a sideset, internal or external.", "href": "../../../../source/vectorpostprocessors/SideValueSampler.html"}>>>
    variable<<<{"description": "The names of the variables that this VectorPostprocessor operates on"}>>> = 'T disp_x disp_y'
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = clad_outside_right
    sort_by<<<{"description": "What to sort the samples by"}>>> = y
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = csv
  []
[]

[PerformanceMetricOutputs<<<{"href": "../../../../syntax/PerformanceMetricOutputs/index.html"}>>>]
  outputs<<<{"description": "Vector of output names to which you would like to restrict the output of the postprocessors generated by this action."}>>> = 'csv performance'
[]

[Outputs<<<{"href": "../../../../syntax/Outputs/index.html"}>>>]
  color<<<{"description": "Set to false to turn off all coloring in all outputs"}>>> = false
  perf_graph<<<{"description": "Enable printing of the performance graph to the screen (Console)"}>>> = true
  [console]
    type = Console<<<{"description": "Object for screen output.", "href": "../../../../source/outputs/Console.html"}>>>
    output_screen<<<{"description": "Output to the screen"}>>> = true
  []
  [exodus]
    type = Exodus<<<{"description": "Object for output data in the Exodus format", "href": "../../../../source/outputs/Exodus.html"}>>>
    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 FINAL'
    time_step_interval<<<{"description": "The interval (number of time steps) at which output occurs. Unless explicitly set, the default value of this parameter is set to infinity if the wall_time_interval is explicitly set."}>>> =  50
  []
  [csv]
    type = CSV<<<{"description": "Output for postprocessors, vector postprocessors, and scalar variables using comma seperated values (CSV).", "href": "../../../../source/outputs/CSV.html"}>>>
    execute_postprocessors_on<<<{"description": "Control of when postprocessors are output"}>>> = 'INITIAL TIMESTEP_END'
    execute_vector_postprocessors_on<<<{"description": "Enable/disable the output of VectorPostprocessors"}>>> = FINAL
  []
  [chkfile]
    type = CSV<<<{"description": "Output for postprocessors, vector postprocessors, and scalar variables using comma seperated values (CSV).", "href": "../../../../source/outputs/CSV.html"}>>>
    execute_postprocessors_on<<<{"description": "Control of when postprocessors are output"}>>> = FINAL
  []
  [performance]
    type = CSV<<<{"description": "Output for postprocessors, vector postprocessors, and scalar variables using comma seperated values (CSV).", "href": "../../../../source/outputs/CSV.html"}>>>
    hide<<<{"description": "A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names)."}>>> = 'plenum_pressure plenum_temperature'
    execute_postprocessors_on<<<{"description": "Control of when postprocessors are output"}>>> = FINAL
  []
[]

#     REFERENCES
# [Fink and Leibowitz, 1995]
#     J. K. Fink and L. Leibowitz, "Thermodynamic and transport properties of
#     sodium liquid and vapor", Argonne National Laboratory ANL/RE--95/2, 94649,
#     Argonne, Illinois (1995)
# [Greenquist and Powers, 2021]
#     I. Greenquist, J.J. Powers "25-Pin metallic fuel performance benchmark
#     case based on the EBR-II X430 experiment series" Journal of Nuclear
#     Materials Vol 556, 153211 (2021)
# [Hayes et al., 1994]
#     S.L. Hayes, D.C. Crawford, R.G. Phal "Test Design and Postirradiation
#     Examination of the HT9 Advanced Driver Fuel Test (X430)" Argonne National
#     Laboratory ANL-IFR-225, Idaho Falls, Idaho (1994)
# [Hobbs and Charboneau, 2020]
#     I.M. Hobbs, J.A. Charboneau "Compressibility of gas mixtures pertaining to
#     nuclear fuel rods" Journal of Physics Comminications Vol. 4, Iss. 9,
#     095008 (2020)
# [Shultis and Faw, 2008]
#     J.K. Shultis, R.E. Faw "Fundamentals of Nuclear Science and Engineering
#     Second Edition" CRC Press, Boca Raton, Florida (2008)
# [Snyder, 1988]
#     E. Snyder "Report of EBR-II Operations: Run 146 and 147", Argonne National
#     Laboratory ANLEBR.R146 ANLEBR.R147, Idaho Falls, Idaho (1988)
(assessment/metallic_fuel/EBRII/X430/analysis/template.i)

To keep the individual pin input files consistent, they should not be edited individually. Any edits to the assessment should be done by editing pin_template.i and/or pin_inputs.csv.

Finally, on certain computers, one or two input files in the group have been known to have convergence problems. This can often be fixed by playing with the max_increment values in the [Dampers] block of the input files.

Results Comparison

There are nine experimental measurements/calculations that can be compared against BISON results: Peak and average burnup, coolant outlet temperature, peak cladding temperature, peak fuel temperature, cladding radial dilation, fuel axial elongation, fission gas release, and plenum pressure. Figure 4 shows these results for pin T651 and Figure 5 shows them for pin T654. Other pin plots can be generated using the plot_X430_results.py script in assessment/metallic_fuel/EBRII/X430/doc directory.

Figure 4: Simulation (red) and experimental (black) results for the U-10Zr pin T651.

Figure 5: Simulation (red) and experimental (black) results for the U-19Pu-10Zr pin T654.

Discussion

The BISON predictions for burnup, temperatures, fission gas release, and plenum pressure are all reasonably accurate. The dimensional changes (cladding radial dilation and fuel axial elongation) are less accurate. Note that with fuel elongation, the two BISON predictions are virtually identical, while the experimental measurements vary significantly. This suggests that the BISON results could be improved by adding composition dependence to the fuel swelling model.

In both pins BISON under-predicts the cladding dilation. The exact cause of this error is not well understood at this time, but it could be related to friction, FCCI, or uncertainties in FCMI models.

References

  1. Ian Greenquist and Jeffrey J. Powers. Metallic Fuel Benchmark Simulations Based on the X430 Experiments. Technical Report ORNL/TM-2020/1565, Oak Ridge National Laboratory (ORNL), Oak Ridge, TN, July 2020.[BibTeX]
  2. Ian Greenquist and Jeffrey J. Powers. 25-Pin metallic fuel performance benchmark case based on the EBR-II X430 experiments series. Journal of Nuclear Materials, 556:153211, December 2021. URL: https://linkinghub.elsevier.com/retrieve/pii/S0022311521004347 (visited on 2021-08-06), doi:10.1016/j.jnucmat.2021.153211.[BibTeX]
  3. Steven L. Hayes, Robert G. Pahl, and Doug C. Crawford. Test Design Description and Post-irradiation examination of the HT9 Advanced Driver Fuel Test (X430). Technical Report INL/EXT-20-58561-Rev.000, Argonne National Laboratory-West, Idaho Falls, ID, March 1994.[BibTeX]