Axisymmetric (2D-RZ) Light Water Reactor Fuel Rod Tutorial

# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.

[GlobalParams<<<{"href": "../syntax/GlobalParams/index.html"}>>>]
  # Set initial fuel density, other global parameters
  density = 10431.0
  initial_porosity = 0.05
  energy_per_fission = 3.2e-11 # J/fission
  volumetric_locking_correction = true
  displacements = 'disp_x disp_y'
  temperature = temperature
  grain_radius = grain_radius
  order = FIRST #Mesh element dictate this
  family = LAGRANGE
[]

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

[Mesh<<<{"href": "../syntax/Mesh/index.html"}>>>]
  # Specify coordinate system type
  coord_type = RZ
  # Import mesh file
  patch_update_strategy = auto
  patch_size = 10 # For contact algorithm
  partitioner = centroid
  centroid_partitioner_direction = y
  [mesh]
    type = FileMeshGenerator<<<{"description": "Read a mesh from a file.", "href": "../source/meshgenerators/FileMeshGenerator.html"}>>>
    file<<<{"description": "The filename to read."}>>> = '../../../../2D-RZ_rodlet_10pellets/fine10_rz.e'
  []
[]

[Variables<<<{"href": "../syntax/Variables/index.html"}>>>]
  # Define dependent variables and initial conditions
  [temperature]
    initial_condition<<<{"description": "Specifies a constant initial condition for this variable"}>>> = 580.0 # set initial temp to coolant inlet
  []
[]

[AuxVariables<<<{"href": "../syntax/AuxVariables/index.html"}>>>]
  # Define auxilary variables
  [creep_strain_rate]
    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
  []
  [effective_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
  []
  [gap_cond]
    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
  []
  [coolant_htc]
    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"}>>>]
  # Define functions to control power and boundary conditions
  [power_history]
    type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../source/functions/PiecewiseLinear.html"}>>> # reads and interpolates an input file containing rod average linear power vs time
    data_file<<<{"description": "File holding CSV data"}>>> = '../../../../2D-RZ_rodlet_10pellets/powerhistory.csv'
    scale_factor<<<{"description": "Scale factor to be applied to the ordinate values"}>>> = 1
  []
  [axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
    type = PiecewiseBilinear<<<{"description": "Interpolates values from a csv file", "href": "../source/functions/PiecewiseBilinear.html"}>>>
    data_file<<<{"description": "File holding csv data for use with PiecewiseBilinear"}>>> = '../../../../2D-RZ_rodlet_10pellets/peakingfactors.csv'
    scale_factor<<<{"description": "Scale factor to be applied to the axis, yaxis, or xaxis values"}>>> = 1
    axis<<<{"description": "The axis used (0, 1, or 2 for x, y, or z)."}>>> = 1 # (0,1,2) => (x,y,z)
  []
  [pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
    type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../source/functions/PiecewiseLinear.html"}>>>
    x<<<{"description": "The abscissa values"}>>> = '-200 0'
    y<<<{"description": "The ordinate values"}>>> = '0 1'
  []
[]

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

[Kernels<<<{"href": "../syntax/Kernels/index.html"}>>>]
  [gravity] # body force term in stress equilibrium equation
    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
  []
  [heat] # gradient term in heat conduction equation
    type = HeatConduction<<<{"description": "Diffusive heat conduction term $-\\nabla\\cdot(k\\nabla T)$ of the thermal energy conservation equation", "href": "../source/kernels/HeatConduction.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temperature
    extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = 'ref'
  []
  [heat_ie] # time term in heat conduction equation
    type = HeatConductionTimeDerivative<<<{"description": "Time derivative term $\\rho c_p \\frac{\\partial T}{\\partial t}$ of the thermal energy conservation equation.", "href": "../source/kernels/HeatConductionTimeDerivative.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temperature
    extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = 'ref'
  []
  [heat_source] # source term in heat conduction equation
    type = NeutronHeatSource<<<{"description": "Compute heat generation due to fission.", "href": "../source/kernels/NeutronHeatSource.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temperature
    extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = 'ref'
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet_type_1 # fission rate applied to the fuel (block 2) only
    burnup_function<<<{"description": "Burnup function"}>>> = burnup
  []
[]

[Burnup<<<{"href": "../syntax/Burnup/index.html"}>>>]
  [burnup]
    block<<<{"description": "The blocks where radial power factor should be computed."}>>> = pellet_type_1
    rod_ave_lin_pow<<<{"description": "Rod average linear power function."}>>> = power_history # using the power function defined above
    axial_power_profile<<<{"description": "Axial power peaking function."}>>> = axial_peaking_factors # using the axial power profile function defined above
    num_radial<<<{"description": "Number of radial divisions in secondary grid used to compute radial power profile."}>>> = 80
    num_axial<<<{"description": "Number of axial divisions in secondary grid used to compute radial power profile."}>>> = 11
    a_lower<<<{"description": "The lower axial coordinate of the fuel stack. Required if fuel_pin_geometry is not specified."}>>> = 0.00324 # mesh dependent!
    a_upper<<<{"description": "The upper axial coordinate of the fuel stack. Required if fuel_pin_geometry is not specified."}>>> = 0.12184 # mesh dependent!
    fuel_inner_radius<<<{"description": "The inner radius of the fuel."}>>> = 0
    fuel_outer_radius<<<{"description": "The outer radius of the fuel."}>>> = .0041
    fuel_volume_ratio<<<{"description": "Reduction factor for deviation from right circular cylinder fuel.  The ratio of actual volume to right circular cylinder volume."}>>> = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
    order<<<{"description": "Specifies the order of the FE shape function to use for this variable."}>>> = CONSTANT
    family<<<{"description": "Specifies the family of FE shape functions to use for this variable."}>>> = MONOMIAL
    RPF<<<{"description": "Specifies that the radial power factor is required."}>>> = RPF
    #N235 = N235 # Activate to write N235 concentration to output file
    #N238 = N238 # Activate to write N238 concentration to output file
    #N239 = N239 # Activate to write N239 concentration to output file
    #N240 = N240 # Activate to write N240 concentration to output file
    #N241 = N241 # Activate to write N241 concentration to output file
    #N242 = N242 # Activate to write N242 concentration to output file
  []
[]

[AuxKernels<<<{"href": "../syntax/AuxKernels/index.html"}>>>]
  # Define auxilliary kernels for each of the aux variables
  [creep_strain_rate]
    type = MaterialRealAux<<<{"description": "Outputs element volume-averaged material properties", "href": "../source/auxkernels/MaterialRealAux.html"}>>>
    property<<<{"description": "The material property name."}>>> = creep_rate
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = creep_strain_rate
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
    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
  []
  [conductance]
    type = MaterialRealAux<<<{"description": "Outputs element volume-averaged material properties", "href": "../source/auxkernels/MaterialRealAux.html"}>>>
    property<<<{"description": "The material property name."}>>> = gap_conductance
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = gap_cond
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = 10
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'linear'
  []
  [coolant_htc]
    type = MaterialRealAux<<<{"description": "Outputs element volume-averaged material properties", "href": "../source/auxkernels/MaterialRealAux.html"}>>>
    property<<<{"description": "The material property name."}>>> = coolant_channel_htc
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = coolant_htc
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = 2
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'linear'
  []
  [effective_creep_strain]
    type = MaterialRealAux<<<{"description": "Outputs element volume-averaged material properties", "href": "../source/auxkernels/MaterialRealAux.html"}>>>
    property<<<{"description": "The material property name."}>>> = effective_creep_strain
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = effective_creep_strain
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
  []
[]

[Contact<<<{"href": "../syntax/Contact/index.html"}>>>]
  # Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
  [pellet_clad_mechanical]
    primary<<<{"description": "The list of boundary IDs referring to primary sidesets"}>>> = 5
    secondary<<<{"description": "The list of boundary IDs referring to secondary sidesets"}>>> = 10
    formulation<<<{"description": "The contact formulation"}>>> = kinematic
    model<<<{"description": "The contact model to use"}>>> = frictionless
    penalty<<<{"description": "The penalty to apply.  This can vary depending on the stiffness of your materials"}>>> = 1e7
  []
[]

[ThermalContact<<<{"href": "../syntax/Modules/HeatTransfer/ThermalContact/index.html"}>>>]
  # Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
  [thermal_contact]
    type = GasGapHeatTransfer
    variable = temperature
    primary = 5
    secondary = 10
    initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
    gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
    contact_pressure = contact_pressure
    quadrature = true
  []
[]

[BCs<<<{"href": "../syntax/NuclearMaterials/BCs/index.html"}>>>]
  # Define boundary conditions
  [no_x_all] # pin pellets and clad along axis of symmetry (y)
    type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../source/bcs/DirichletBC.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 12
    value<<<{"description": "Value of the BC"}>>> = 0.0
  []
  [no_y_clad_bottom] # pin clad bottom in the axial direction (y)
    type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../source/bcs/DirichletBC.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '1'
    value<<<{"description": "Value of the BC"}>>> = 0.0
  []
  [no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
    type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../source/bcs/DirichletBC.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '1020'
    value<<<{"description": "Value of the BC"}>>> = 0.0
  []
  [Pressure<<<{"href": "../syntax/BCs/Pressure/index.html"}>>>] # apply coolant pressure on clad outer walls
    [coolantPressure]
      boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = '1 2 3'
      factor<<<{"description": "The magnitude to use in computing the pressure"}>>> = 15.5e6
      function<<<{"description": "The function that describes the pressure"}>>> = pressure_ramp # use the pressure_ramp function defined above
    []
  []
  [PlenumPressure<<<{"href": "../syntax/BCs/PlenumPressure/index.html"}>>>] # apply plenum pressure on clad inner walls and pellet surfaces
    [plenumPressure]
      boundary<<<{"description": "The list of boundary IDs from the mesh where the pressure will be applied"}>>> = 9
      initial_pressure<<<{"description": "The initial pressure in the cavity.  If not given, a zero initial pressure will be used."}>>> = 2.0e6
      startup_time<<<{"description": "The amount of time during which the pressure will ramp from zero to its true value."}>>> = 0
      R<<<{"description": "The universal gas constant for the units used."}>>> = 8.3143
      output_initial_moles<<<{"description": "The name to use when reporting the initial moles of gas"}>>> = initial_moles # coupling to post processor to get initial fill gas mass
      temperature<<<{"description": "The name of the average temperature postprocessor value."}>>> = ave_temperature_interior # coupling to post processor to get gas temperature approximation
      volume<<<{"description": "The name of the postprocessor(s) that holds the value of the internal volume in the cavity"}>>> = gas_volume # coupling to post processor to get gas volume
      material_input<<<{"description": "The name of the postprocessor(s) that holds the amount of material injected into the plenum."}>>> = fis_gas_released # coupling to post processor to get fission gas added
      output<<<{"description": "The name to use for the cavity pressure value"}>>> = plenum_pressure # coupling to post processor to output plenum/gap pressure
    []
  []
[]

[CoolantChannel<<<{"href": "../syntax/CoolantChannel/index.html"}>>>]
  [convective_clad_surface] # apply convective boundary to clad outer surface
    boundary<<<{"description": "The boundary where the coolant channel calculation will run"}>>> = '1 2 3'
    variable<<<{"description": "The name of the variable representing temperature"}>>> = temperature
    inlet_temperature<<<{"description": "Inlet temperature in K "}>>> = 580 # K
    inlet_pressure<<<{"description": "Inlet pressure in Pa"}>>> = 15.5e6 # Pa
    inlet_massflux<<<{"description": "Inlet mass flux in kg/m^2-sec"}>>> = 3800 # kg/m^2-sec
    rod_diameter<<<{"description": "Rod diameter in meter"}>>> = 0.948e-2 # m
    rod_pitch<<<{"description": "Rod pitch in meter"}>>> = 1.26e-2 # m
    linear_heat_rate<<<{"description": "Linear heat generation rate in W/m"}>>> = power_history
    axial_power_profile<<<{"description": "Axial power profile"}>>> = axial_peaking_factors
  []
[]

[NuclearMaterials<<<{"href": "../syntax/NuclearMaterials/index.html"}>>>]
  fission_operation<<<{"description": "Type of fission occuring in this simulation."}>>> = Normal
  [UO2<<<{"href": "../syntax/NuclearMaterials/UO2/index.html"}>>>]
    [fuel]
      block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = pellet_type_1
      uo2_models<<<{"description": "Type(s) of physics models used on this block.   The choices are: Burnup Elastic Creep Relocation Swelling ThermalExpansion HighBurnupStructureFormation"}>>> = 'Elastic Relocation Swelling ThermalExpansion'
      stress_free_temperature<<<{"description": "Reference temperature for thermal eigenstrain calculation"}>>> = 295.0
      localized_initial_temperature<<<{"description": "Localized Initial temperature in Kelvins.  This allows individual blocks to have different temperature conditions apart from the global initial conditions."}>>> = 580.0
      rod_ave_lin_pow<<<{"description": "The rod power history function."}>>> = power_history
      burnup_relocation_stop<<<{"description": "Burnup at which relocation strain stops (in FIMA)"}>>> = 0.03
    []
  []
  [ZirconiumAlloy<<<{"href": "../syntax/NuclearMaterials/ZirconiumAlloy/index.html"}>>>]
    [clad]
      block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = clad
      cladding_models<<<{"description": "Type(s) of physics models used on this block.   The choices are: Creep Elastic Plasticity ZryOxidation IrradiationGrowth ThermalExpansion ZrPhase ZryCladdingFailure"}>>> = 'Elastic Creep ThermalExpansion IrradiationGrowth'
      stress_free_temperature<<<{"description": "Reference temperature for thermal eigenstrain calculation"}>>> = 295.0
      localized_initial_temperature<<<{"description": "Localized Initial temperature in Kelvins.  This allows individual blocks to have different temperature conditions apart from the global initial conditions."}>>> = 580.0
    []
  []
[]

[Dampers<<<{"href": "../syntax/Dampers/index.html"}>>>]
  [limitT]
    type = MaxIncrement<<<{"description": "Limits a variable's update by some max fraction", "href": "../source/dampers/MaxIncrement.html"}>>>
    max_increment<<<{"description": "The maximum newton increment for the variable."}>>> = 100.0
    variable<<<{"description": "The name of the variable that this damper operates on"}>>> = temperature
  []
  [limitX]
    type = MaxIncrement<<<{"description": "Limits a variable's update by some max fraction", "href": "../source/dampers/MaxIncrement.html"}>>>
    max_increment<<<{"description": "The maximum newton increment for the variable."}>>> = 1e-5
    variable<<<{"description": "The name of the variable that this damper operates on"}>>> = disp_x
  []
[]

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

  petsc_options = '-snes_ksp_ew'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
  petsc_options_value = 'lu       superlu_dist'

  line_search = 'none'

  l_max_its = 50
  l_tol = 8e-3
  nl_max_its = 15
  nl_rel_tol = 1e-4
  nl_abs_tol = 1e-10

  start_time = -200
  n_startup_steps = 1
  end_time = 8.0e7

  dtmax = 2e6
  dtmin = 1

  [TimeStepper<<<{"href": "../syntax/Executioner/TimeStepper/index.html"}>>>]
    type = IterationAdaptiveDT
    dt = 2e2
    optimal_iterations = 8
    iteration_window = 2
    linear_iteration_ratio = 100
    growth_factor = 2
    cutback_factor = .5
  []
  [Quadrature<<<{"href": "../syntax/Executioner/Quadrature/index.html"}>>>]
    order<<<{"description": "Order of the quadrature"}>>> = THIRD
    side_order<<<{"description": "Order of the quadrature for sides"}>>> = FIFTH
  []
[]

[Postprocessors<<<{"href": "../syntax/Postprocessors/index.html"}>>>]
  # Define postprocessors (some are required as specified above; others are optional; many others are available)
  [ave_temperature_interior] # average temperature of the cladding interior and all pellet exteriors
    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"}>>>
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 9
    variable<<<{"description": "The name of the variable which this postprocessor integrates"}>>> = temperature
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'initial linear'
  []
  [clad_inner_vol] # volume inside of cladding
    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"}>>> = 7
    #outputs = exodus
    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'
  []
  [pellet_volume] # fuel pellet total 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"}>>> = 8
    #outputs = exodus
    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'
  []
  [avg_clad_temperature] # average temperature of cladding interior
    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"}>>>
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 7
    variable<<<{"description": "The name of the variable which this postprocessor integrates"}>>> = temperature
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'initial linear'
  []
  [ave_fuel_temperature]
    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_type_1
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = temperature
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'initial linear'
  []
  [fis_gas_produced] # fission gas produced (moles)
    type = ElementIntegralFisGasGeneratedSifgrs<<<{"description": "Reports the fission gas that is produced in moles.  To be used in combination with the Sifgrs model.", "href": "../source/postprocessors/ElementIntegralFisGasGeneratedSifgrs.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet_type_1
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'linear'
  []
  [fis_gas_released] # fission gas released to plenum (moles)
    type = ElementIntegralFisGasReleasedSifgrs<<<{"description": "Reports the fission gas that is released to the plenum in moles.  To be used in combination with the Sifgrs model.", "href": "../source/postprocessors/ElementIntegralFisGasReleasedSifgrs.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet_type_1
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'linear'
  []
  [fis_gas_grain]
    type = ElementIntegralFisGasGrainSifgrs<<<{"description": "Reports the fission gas within the grains in moles.  To be used in combination with the Sifgrs model.", "href": "../source/postprocessors/ElementIntegralFisGasGrainSifgrs.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet_type_1
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'linear'
  []
  [fis_gas_boundary]
    type = ElementIntegralFisGasBoundarySifgrs<<<{"description": "Reports the fission gas that is on the grain boundary", "href": "../source/postprocessors/ElementIntegralFisGasBoundarySifgrs.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet_type_1
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = exodus
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'linear'
  []
  [fission_gas_release]
    type = FGRPercent<<<{"description": "Computes the ratio of fission gas released to the fission gas generated in percent.", "href": "../source/postprocessors/FGRPercent.html"}>>>
    fission_gas_released<<<{"description": "The fission gas released postprocessor"}>>> = fis_gas_released
    fission_gas_generated<<<{"description": "The fission gas generated postprocessor"}>>> = fis_gas_produced
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'linear'
  []

  [gas_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"}>>> = 9
    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'
  []
  [flux_from_clad] # area integrated heat flux from the cladding
    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"}>>> = temperature
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 5
    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
  []
  [flux_from_fuel] # area integrated heat flux from the 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"}>>> = temperature
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 10
    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
  []

  [_dt] # time step
    type = TimestepSize<<<{"description": "Reports the timestep size", "href": "../source/postprocessors/TimestepSize.html"}>>>
  []
  [num_lin_it]
    type = NumLinearIterations<<<{"description": "Compute the number of linear iterations.", "href": "../source/postprocessors/NumLinearIterations.html"}>>>
  []
  [num_nonlin_it]
    type = NumNonlinearIterations<<<{"description": "Outputs the number of nonlinear iterations", "href": "../source/postprocessors/NumNonlinearIterations.html"}>>>
  []
  [tot_lin_it]
    type = CumulativeValuePostprocessor<<<{"description": "Creates a cumulative sum of a Postprocessor value with time.", "href": "../source/postprocessors/CumulativeValuePostprocessor.html"}>>>
    postprocessor<<<{"description": "The name of the postprocessor"}>>> = num_lin_it
  []
  [tot_nonlin_it]
    type = CumulativeValuePostprocessor<<<{"description": "Creates a cumulative sum of a Postprocessor value with time.", "href": "../source/postprocessors/CumulativeValuePostprocessor.html"}>>>
    postprocessor<<<{"description": "The name of the postprocessor"}>>> = num_nonlin_it
  []
  [alive_time]
    type = PerfGraphData<<<{"description": "Retrieves performance information about a section from the PerfGraph.", "href": "../source/postprocessors/PerfGraphData.html"}>>>
    section_name<<<{"description": "The name of the section to get data for"}>>> = Root
    data_type<<<{"description": "The type of data to retrieve for the section_name"}>>> = TOTAL
  []

  [rod_total_power]
    type = ElementIntegralPower<<<{"description": "Computes the power given the fission rate and energy per fission.", "href": "../source/postprocessors/ElementIntegralPower.html"}>>>
    variable<<<{"description": "The name of the variable that this object operates on"}>>> = temperature
    burnup_function<<<{"description": "Burnup function"}>>> = burnup
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet_type_1
  []
  [rod_input_power]
    type = FunctionValuePostprocessor<<<{"description": "Computes the value of a supplied function at a single point (scalable)", "href": "../source/postprocessors/FunctionValuePostprocessor.html"}>>>
    function<<<{"description": "The function which supplies the postprocessor value."}>>> = power_history
    scale_factor<<<{"description": "A scale factor to be applied to the function"}>>> = 0.1186 # rod height
  []

  [mid_penetration]
    type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../source/postprocessors/NodalVariableValue.html"}>>>
    nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 3781 #!!Mesh dependent!!
    variable<<<{"description": "The variable to be monitored"}>>> = penetration
  []
  [central_fuel_temperature]
    type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../source/postprocessors/NodalVariableValue.html"}>>>
    variable<<<{"description": "The variable to be monitored"}>>> = temperature
    nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 3781 # !! Mesh dependent
  []
  [max_fuel_temperature]
    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_type_1
    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
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = temperature
  []
  [max_clad_temperature]
    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
    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
    variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = temperature
  []
  [average_vonMises_fuel]
    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"}>>> = vonmises_stress
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = pellet_type_1
  []
  [average_vonMises_clad]
    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"}>>> = vonmises_stress
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = clad
  []
  [effective_creep_strain]
    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"}>>> = effective_creep_strain
  []
  [effective_creep_strain_rate]
    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"}>>> = creep_strain_rate
  []
[]

[VectorPostprocessors<<<{"href": "../syntax/VectorPostprocessors/index.html"}>>>]
  [clad_dia]
    type = NodalValueSampler<<<{"description": "Samples values of nodal variable(s).", "href": "../source/vectorpostprocessors/NodalValueSampler.html"}>>>
    variable<<<{"description": "The names of the variables that this VectorPostprocessor operates on"}>>> = disp_x
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = 2
    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"}>>> = 'outfile_clad_radial_displacement'
  []
  [pellet_dia]
    type = NodalValueSampler<<<{"description": "Samples values of nodal variable(s).", "href": "../source/vectorpostprocessors/NodalValueSampler.html"}>>>
    variable<<<{"description": "The names of the variables that this VectorPostprocessor operates on"}>>> = disp_x
    boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = 10
    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"}>>> = 'outfile_fuel_radial_displacement'
  []
[]

[Outputs<<<{"href": "../syntax/Outputs/index.html"}>>>]
  perf_graph<<<{"description": "Enable printing of the performance graph to the screen (Console)"}>>> = true
  exodus<<<{"description": "Output the results using the default settings for Exodus output."}>>> = true
  color<<<{"description": "Set to false to turn off all coloring in all outputs"}>>> = false
  csv<<<{"description": "Output the scalar variable and postprocessors to a *.csv file using the default CSV output."}>>> = true
  [console]
    type = Console<<<{"description": "Object for screen output.", "href": "../source/outputs/Console.html"}>>>
    max_rows<<<{"description": "The maximum number of postprocessor/scalar values displayed on screen during a timestep (set to 0 for unlimited)"}>>> = 25
  []
  [outfile_clad_radial_displacement]
    type = CSV<<<{"description": "Output for postprocessors, vector postprocessors, and scalar variables using comma seperated values (CSV).", "href": "../source/outputs/CSV.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."}>>> = 'FINAL'
  []
  [outfile_fuel_radial_displacement]
    type = CSV<<<{"description": "Output for postprocessors, vector postprocessors, and scalar variables using comma seperated values (CSV).", "href": "../source/outputs/CSV.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."}>>> = 'FINAL'
  []
[]
(examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_action/2D_discrete_finiteStrain_action.i)
0,  1e4,    1e8
0, 2.5e4, 2.5e4
(examples/2D-RZ_rodlet_10pellets/powerhistory.csv)
2.24e-3,8.18e-3,1.41e-2,2.01e-2,2.6e-2,3.19e-2,3.79e-2,4.38e-2,4.97e-2,5.57e-2,0.06162,6.76e-2,7.35e-2,7.94e-2,8.54e-2,9.13e-2,9.72e-2,1.03e-1,1.09e-1,1.15e-1,1.21e-1
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1,5.37e-1,8.68e-1,1.01,1.06,1.06,1.06,1.05,1.06,1.07,1.07,1.08,1.07,1.07,1.06,1.06,1.06,1.06,1.05,1.01,8.68e-1,5.37e-1
1.5e8,5.37e-1,8.68e-1,1.01,1.06,1.06,1.06,1.05,1.06,1.07,1.07,1.08,1.07,1.07,1.06,1.06,1.06,1.06,1.05,1.01,8.68e-1,5.37e-1
(examples/2D-RZ_rodlet_10pellets/peakingfactors.csv)