- mat_propThe name of the material property
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:The name of the material property
 
ElementAverageMaterialProperty
This post-processor computes the average of a material property over a domain.
Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
 
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
 - execute_onTIMESTEP_ENDThe 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.
Default:TIMESTEP_END
C++ Type:ExecFlagEnum
Options:XFEM_MARK, FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, LINEAR_CONVERGENCE, NONLINEAR, NONLINEAR_CONVERGENCE, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, MULTIAPP_FIXED_POINT_CONVERGENCE, FINAL, CUSTOM, TRANSFER
Controllable:No
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.
 - execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
Default:0
C++ Type:int
Controllable:No
Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
 - force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
 - force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
 - force_preicFalseForces the UserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREIC during initial setup
 
Execution Scheduling Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
 - enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
 - implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
 - outputsVector of output names where you would like to restrict the output of variables(s) associated with this object
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
 - seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
 - use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
 
Advanced Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
 - use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
 
Material Property Retrieval Parameters
Input Files
- (modules/thermal_hydraulics/test/tests/materials/wall_friction_factor/churchill_ad.i)
 - (modules/thermal_hydraulics/test/tests/closures/wall_temperature_1phase/base.i)
 - (modules/thermal_hydraulics/test/tests/materials/ad_reynolds_number/test.i)
 - (test/tests/postprocessors/element_average_material_property/element_average_material_property.i)
 - (modules/thermal_hydraulics/test/tests/materials/ad_convection_heat_flux/ad_convection_heat_flux.i)
 - (modules/combined/test/tests/subchannel_thm_coupling/THM_SCM_coupling_pump.i)
 - (modules/thermal_hydraulics/test/tests/materials/ad_convective_heat_transfer_coefficient/test.i)
 - (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/planar/generalized_plane_strain/pull_2D.i)
 - (test/tests/materials/derivative_material_interface/old_older.i)
 - (modules/thermal_hydraulics/test/tests/materials/binary_diffusion_coef/binary_diffusion_coef.i)
 - (modules/solid_mechanics/test/tests/rom_stress_update/3tile_json.i)
 - (modules/thermal_hydraulics/test/tests/materials/ad_prandtl_number/test.i)
 - (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/planar/generalized_plane_strain/pull_3D.i)
 - (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/volumetric_eigenstrain_parabolic.i)
 - (test/tests/materials/material_property_interface/nonexistent_mat_prop.i)
 - (modules/solid_mechanics/test/tests/ad_anisotropic_creep/3d_bar_orthotropic_90deg_rotation_ad_creep_x_no_rotation.i)
 - (modules/solid_mechanics/test/tests/scalar_material_damage/ad_nonlocal_scalar_damage.i)
 - (modules/solid_mechanics/test/tests/ad_anisotropic_creep/3d_bar_orthotropic_90deg_rotation_ad_creep_z.i)
 - (modules/thermal_hydraulics/test/tests/materials/wall_friction_cheng/cheng_ff_test.i)
 - (modules/solid_mechanics/test/tests/rom_stress_update/3tile_strain.i)
 - (modules/combined/test/tests/subchannel_thm_coupling/THM_SCM_coupling.i)
 - (modules/solid_mechanics/test/tests/neml2/laromance/laromance_interpolate.i)
 - (modules/solid_mechanics/test/tests/scalar_material_damage/nonlocal_scalar_damage.i)
 - (modules/solid_mechanics/test/tests/eigen_decomp_material/prescribed_strain_3D.i)
 - (modules/solid_mechanics/test/tests/eigen_decomp_material/pipe_2d.i)
 - (modules/thermal_hydraulics/test/tests/materials/wall_friction_factor/churchill.i)
 - (modules/thermal_hydraulics/test/tests/closures/THM_1phase/thm1phase.i)
 - (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/hcp_volumetric_eigenstrain_decrease.i)
 - (modules/solid_mechanics/test/tests/rom_stress_update/3tile.i)
 - (modules/stochastic_tools/test/tests/multiapps/batch_commandline_control/sub.i)
 - (test/tests/batch_material/test.i)
 - (modules/solid_properties/test/tests/materials/constant_density_thermal_solid_properties/constant_density_thermal_solid_properties.i)
 - (modules/thermal_hydraulics/test/tests/closures/wall_temperature_1phase/multiple.i)
 - (tutorials/darcy_thermo_mech/step10_multiapps/problems/step10_micro.i)
 - (test/tests/materials/projected_stateful_materials/test.i)
 - (test/tests/interfaces/coupleable/coupled_dots.i)
 - (modules/thermal_hydraulics/test/tests/components/heat_transfer_from_heat_flux_1phase/phy.q_wall_multiple_3eqn.i)
 - (modules/fluid_properties/test/tests/materials/saturation_pressure_material/saturation_pressure_material.i)
 - (modules/solid_mechanics/test/tests/ad_anisotropic_creep/3d_bar_orthotropic_90deg_rotation_ad_creep_x.i)
 - (modules/solid_mechanics/test/tests/ad_anisotropic_creep/3d_bar_orthotropic_90deg_rotation_ad_creep_z_no_rotation.i)
 - (modules/solid_mechanics/test/tests/neml2/laromance/laromance_return_mapping.i)
 - (test/tests/materials/derivative_material_interface/required_property.i)
 - (modules/solid_properties/test/tests/materials/tungsten/tungsten_thermal_properties.i)
 - (modules/thermal_hydraulics/test/tests/materials/ad_convection_heat_flux_hs/ad_convection_heat_flux_hs.i)
 - (modules/thermal_hydraulics/test/tests/materials/ad_wall_htc_gnielinski_annular/ad_wall_htc_gnielinski_annular.i)
 - (modules/thermal_hydraulics/tutorials/single_phase_flow/06_custom_closures.i)
 - (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/volumetric_eigenstrain_increase.i)
 - (modules/thermal_hydraulics/test/tests/materials/ad_material_function_product/ad_material_function_product.i)
 
(modules/thermal_hydraulics/test/tests/materials/wall_friction_factor/churchill_ad.i)
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
  allow_renumbering = false
[]
[Materials]
  [props]
    type = ADGenericConstantMaterial
    prop_names = 'rho vel mu D_h'
    prop_values = '1000 0.1 0.001 0.15'
  []
  [fD_material]
    type = ADWallFrictionChurchillMaterial
    rho = rho
    vel = vel
    D_h = D_h
    mu = mu
    f_D = 'f_D'
    roughness = 0.5
  []
[]
[Postprocessors]
  [fD]
    type = ADElementAverageMaterialProperty
    mat_prop = f_D
  []
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Transient
  num_steps = 1
[]
[Outputs]
  csv = true
  execute_on = 'FINAL'
[]
(modules/thermal_hydraulics/test/tests/closures/wall_temperature_1phase/base.i)
[FluidProperties]
  [fp]
    type = IdealGasFluidProperties
  []
[]
[Closures]
  [wall_temp_closures]
    type = WallTemperature1PhaseClosures
  []
[]
[Components]
  [pipe]
    type = FlowChannel1Phase
    gravity_vector = '0 0 0'
    position = '0 0 0'
    orientation = '1 0 0'
    A = 1e-4
    length = 1
    n_elems = 10
    initial_vel = 0
    initial_p = 1e5
    initial_T = 300
    fp = fp
    closures = wall_temp_closures
  []
  [inlet]
    type = SolidWall1Phase
    input = 'pipe:in'
  []
  [outlet]
    type = SolidWall1Phase
    input = 'pipe:out'
  []
  [ht]
    type = HeatTransferFromSpecifiedTemperature1Phase
    flow_channel = pipe
    T_wall = 500
  []
[]
[Preconditioning]
  [pc]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [T_wall]
    type = ADElementAverageMaterialProperty
    mat_prop = T_wall
    execute_on = 'INITIAL'
  []
[]
[Executioner]
  type = Transient
  scheme = 'bdf2'
  start_time = 0
  num_steps = 0
  dt = 1e-6
  solve_type = NEWTON
  nl_rel_tol = 1e-8
  nl_abs_tol = 1e-8
  nl_max_its = 5
  l_tol = 1e-3
  l_max_its = 10
[]
[Outputs]
  csv = true
  execute_on = 'INITIAL'
[]
(modules/thermal_hydraulics/test/tests/materials/ad_reynolds_number/test.i)
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
  allow_renumbering = false
[]
[Materials]
  [const_mpropsat]
    type = ADGenericConstantMaterial
    prop_names = 'rho vel D_h mu'
    prop_values = '1000 5 0.002 0.1'
  []
  [Re_material]
    type = ADReynoldsNumberMaterial
  []
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Steady
[]
[Postprocessors]
  [Re]
    type = ADElementAverageMaterialProperty
    mat_prop = Re
  []
[]
[Outputs]
  csv = true
  execute_on = timestep_end
[]
(test/tests/postprocessors/element_average_material_property/element_average_material_property.i)
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 4
  xmin = 0
  xmax = 1
[]
[Functions]
  [./fn]
    type = PiecewiseConstant
    axis = x
    x = '0 0.25 0.50 0.75'
    y = '5 2 3 6'
  [../]
[]
[Materials]
  [./mat]
    type = GenericFunctionMaterial
    prop_names = 'mat_prop'
    prop_values = 'fn'
  [../]
[]
[Postprocessors]
  [./avg]
    type = ElementAverageMaterialProperty
    mat_prop = mat_prop
    execute_on = 'INITIAL'
  [../]
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Steady
[]
[Outputs]
  csv = true
  execute_on = 'INITIAL'
[]
(modules/thermal_hydraulics/test/tests/materials/ad_convection_heat_flux/ad_convection_heat_flux.i)
# Gold value should be the following:
#   q_wall = kappa * htc_wall * (T_wall - T)
#          = 0.5 * 100 * (500 - 400)
#          = 5000
[GlobalParams]
  execute_on = 'initial'
[]
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
[]
[AuxVariables]
  [T_wall]
  []
[]
[AuxKernels]
  [T_wall_ak]
    type = ConstantAux
    variable = T_wall
    value = 500
  []
[]
[Materials]
  [props]
    type = ADGenericConstantMaterial
    prop_names = 'T htc_wall kappa'
    prop_values = '400 100 0.5'
  []
  [q_wall_mat]
    type = ADConvectionHeatFluxMaterial
    q_wall = q_wall_prop
    T = T
    T_wall = T_wall
    htc_wall = htc_wall
    kappa = kappa
  []
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Postprocessors]
  [q_wall_pp]
    type = ADElementAverageMaterialProperty
    mat_prop = q_wall_prop
  []
[]
[Outputs]
  csv = true
[]
(modules/combined/test/tests/subchannel_thm_coupling/THM_SCM_coupling_pump.i)
# THM file based on https://mooseframework.inl.gov/modules/thermal_hydraulics/tutorials/single_phase_flow/step05.html
# Used to loosely couple THM with SCM
# This is a simple closed loop with a pump providing pressure head, core, pressurizer and HX.
# THM sends massflux and temperature at the inlet of the core, and pressure at the outlet of the core
# to subchannel. Subchannel returns total pressure drop of the assembly and total power to THM and THM calculates an
# average friction factor for the core region.
T_in = 583.0 # K
press = 2e5 # Pa
SC_core = 0.0004980799633447909 #m2
# core parameters
core_length = 1. # m
core_n_elems = 1
A_core = 0.005 #dummy
# pipe parameters
pipe_dia = '${units 10. cm -> m}'
A_pipe = '${fparse 0.25 * pi * pipe_dia^2}'
# heat exchanger parameters
hx_dia_inner = '${units 12. cm -> m}'
hx_wall_thickness = '${units 5. mm -> m}'
hx_dia_outer = '${units 50. cm -> m}'
hx_radius_wall = '${fparse hx_dia_inner / 2. + hx_wall_thickness}'
hx_length = 1.5 # m
hx_n_elems = 25
m_dot_sec_in = 1. # kg/s
[GlobalParams]
  initial_p = ${press}
  initial_vel = 0.0001
  initial_T = ${T_in}
  initial_vel_x = 0
  initial_vel_y = 0
  initial_vel_z = 0
  gravity_vector = '0 0 0'
  rdg_slope_reconstruction = minmod
  scaling_factor_1phase = '1 1e-2 1e-4'
  scaling_factor_rhoV = 1
  scaling_factor_rhouV = 1e-2
  scaling_factor_rhovV = 1e-2
  scaling_factor_rhowV = 1e-2
  scaling_factor_rhoEV = 1e-4
  closures = thm_closures
  fp = sodium_eos
[]
[Functions]
  [q_wall_fn]
    type = ParsedFunction
    symbol_names = 'core_power length'
    symbol_values = 'core_power  ${core_length}'
    expression = 'core_power/length'
  []
[]
[FluidProperties]
  [water]
    type = StiffenedGasFluidProperties
    gamma = 2.35
    cv = 1816.0
    q = -1.167e6
    p_inf = 1.0e9
    q_prime = 0
  []
  [sodium_eos]
    type = StiffenedGasFluidProperties
    gamma = 1.24
    cv = 1052.8
    q = -2.6292e+05
    p_inf = 1.1564e+08
    q_prime = 0
    mu = 3.222e-04
    k = 73.82
  []
[]
[Closures]
  [thm_closures]
    type = Closures1PhaseTHM
  []
  [none_closures]
    type = Closures1PhaseNone
  []
[]
[Materials]
  [f_mat]
    type = ADParsedMaterial
    property_name = f_D
    postprocessor_names = 'core_f'
    expression = 'core_f'
    block = 'core_chan'
  []
[]
[HeatStructureMaterials]
  [steel]
    type = SolidMaterialProperties
    rho = 8050
    k = 45
    cp = 466
  []
[]
[Components]
  [up_pipe_1]
    type = FlowChannel1Phase
    position = '0 0 -0.5'
    orientation = '0 0 1'
    length = 0.5
    n_elems = 15
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct1]
    type = JunctionParallelChannels1Phase
    position = '0 0 0'
    connections = 'up_pipe_1:out core_chan:in'
    volume = 1e-5
  []
  [core_chan]
    type = FlowChannel1Phase
    position = '0 0 0'
    orientation = '0 0 1'
    length = ${core_length}
    n_elems = ${core_n_elems}
    A = ${A_core}
    closures = none_closures
  []
  [core_ht]
    type = HeatTransferFromHeatFlux1Phase
    flow_channel = core_chan
    q_wall = q_wall_fn
    P_hf = 1
  []
  [jct2]
    type = JunctionParallelChannels1Phase
    position = '0 0 1'
    connections = 'core_chan:out up_pipe_2:in'
    volume = 1e-5
  []
  [up_pipe_2]
    type = FlowChannel1Phase
    position = '0 0 1'
    orientation = '0 0 1'
    length = 0.5
    n_elems = 10
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct3]
    type = JunctionOneToOne1Phase
    connections = 'up_pipe_2:out top_pipe_1:in'
  []
  [top_pipe_1]
    type = FlowChannel1Phase
    position = '0 0 1.5'
    orientation = '1 0 0'
    length = 0.5
    n_elems = 10
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [top_pipe_2]
    type = FlowChannel1Phase
    position = '0.5 0 1.5'
    orientation = '1 0 0'
    length = 0.5
    n_elems = 10
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct4]
    type = VolumeJunction1Phase
    position = '0.5 0 1.5'
    volume = 1e-5
    connections = 'top_pipe_1:out top_pipe_2:in press_pipe:in'
  []
  [press_pipe]
    type = FlowChannel1Phase
    position = '0.5 0 1.5'
    orientation = '0 1 0'
    length = 0.2
    n_elems = 5
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [pressurizer]
    type = InletStagnationPressureTemperature1Phase
    p0 = ${press}
    T0 = 580
    input = press_pipe:out
  []
  [jct5]
    type = JunctionOneToOne1Phase
    connections = 'top_pipe_2:out down_pipe_1:in'
  []
  [down_pipe_1]
    type = FlowChannel1Phase
    position = '1 0 1.5'
    orientation = '0 0 -1'
    length = 0.25
    A = ${A_pipe}
    n_elems = 5
  []
  [jct6]
    type = JunctionParallelChannels1Phase
    position = '1 0 1.25'
    connections = 'down_pipe_1:out hx/pri:in'
    volume = 1e-5
  []
  [hx]
    [pri]
      type = FlowChannel1Phase
      position = '1 0 1.25'
      orientation = '0 0 -1'
      length = ${hx_length}
      n_elems = ${hx_n_elems}
      roughness = 1e-5
      A = '${fparse pi * hx_dia_inner * hx_dia_inner / 4.}'
      D_h = ${hx_dia_inner}
    []
    [ht_pri]
      type = HeatTransferFromHeatStructure1Phase
      hs = hx/wall
      hs_side = inner
      flow_channel = hx/pri
      P_hf = '${fparse pi * hx_dia_inner}'
    []
    [wall]
      type = HeatStructureCylindrical
      position = '1 0 1.25'
      orientation = '0 0 -1'
      length = ${hx_length}
      n_elems = ${hx_n_elems}
      widths = '${hx_wall_thickness}'
      n_part_elems = '3'
      materials = 'steel'
      names = '0'
      inner_radius = '${fparse hx_dia_inner / 2.}'
    []
    [ht_sec]
      type = HeatTransferFromHeatStructure1Phase
      hs = hx/wall
      hs_side = outer
      flow_channel = hx/sec
      P_hf = '${fparse 2 * pi * hx_radius_wall}'
    []
    [sec]
      type = FlowChannel1Phase
      position = '${fparse 1 + hx_wall_thickness} 0 -0.25'
      orientation = '0 0 1'
      length = ${hx_length}
      n_elems = ${hx_n_elems}
      A = '${fparse pi * (hx_dia_outer * hx_dia_outer / 4. - hx_radius_wall * hx_radius_wall)}'
      D_h = '${fparse hx_dia_outer - (2 * hx_radius_wall)}'
      fp = water
      initial_T = 300
    []
  []
  [jct7]
    type = JunctionParallelChannels1Phase
    position = '1 0 -0.25'
    connections = 'hx/pri:out down_pipe_2:in'
    volume = 1e-5
  []
  [down_pipe_2]
    type = FlowChannel1Phase
    position = '1 0 -0.25'
    orientation = '0 0 -1'
    length = 0.25
    n_elems = 10
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct8]
    type = JunctionOneToOne1Phase
    connections = 'down_pipe_2:out bottom_1:in'
  []
  [bottom_1]
    type = FlowChannel1Phase
    position = '1 0 -0.5'
    orientation = '-1 0 0'
    length = 0.5
    n_elems = 5
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [pump]
    type = Pump1Phase
    position = '0.5 0 -0.5'
    connections = 'bottom_1:out bottom_2:in'
    volume = 1e-4
    A_ref = ${A_pipe}
    head = 3.56
  []
  [bottom_2]
    type = FlowChannel1Phase
    position = '0.5 0 -0.5'
    orientation = '-1 0 0'
    length = 0.5
    n_elems = 5
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct9]
    type = JunctionOneToOne1Phase
    connections = 'bottom_2:out up_pipe_1:in'
  []
  [inlet_sec]
    type = InletMassFlowRateTemperature1Phase
    input = 'hx/sec:in'
    m_dot = ${m_dot_sec_in}
    T = 300
  []
  [outlet_sec]
    type = Outlet1Phase
    input = 'hx/sec:out'
    p = 1e5
  []
[]
[Postprocessors]
  [power_to_coolant]
    type = ADHeatRateDirectFlowChannel
    q_wall_prop = q_wall
    block = core_chan
    P_hf = 1
  []
  [core_T_out]
    type = SideAverageValue
    boundary = core_chan:out
    variable = T
  []
  [T_out]
    type = SideAverageValue
    boundary = bottom_1:out
    variable = T
  []
  [core_p_in]
    type = SideAverageValue
    boundary = up_pipe_1:out
    variable = p
  []
  [core_p_out]
    type = SideAverageValue
    boundary = up_pipe_2:in
    variable = p
  []
  [core_delta_p]
    type = ParsedPostprocessor
    pp_names = 'core_p_in core_p_out'
    expression = 'core_p_in - core_p_out'
  []
  [hx_pri_T_out]
    type = SideAverageValue
    boundary = hx/pri:out
    variable = T
  []
  [hx_sec_T_in]
    type = SideAverageValue
    boundary = inlet_sec
    variable = T
  []
  [hx_sec_T_out]
    type = SideAverageValue
    boundary = outlet_sec
    variable = T
  []
  [m_dot_sec]
    type = ADFlowBoundaryFlux1Phase
    boundary = inlet_sec
    equation = mass
  []
  ############## Friction Factor Calculation #############
  [av_rhouA]
    type = ElementAverageValue
    variable = 'rhouA'
    block = 'core_chan'
  []
  [av_rho]
    type = ElementAverageValue
    variable = 'rho'
    block = 'core_chan'
  []
  [Kloss]
    type = ParsedPostprocessor
    pp_names = 'core_delta_p_tgt av_rhouA av_rho'
    expression = '2.0 * core_delta_p_tgt * av_rho * ${A_core} * ${A_core} / (av_rhouA * av_rhouA)'
  []
  [Dh]
    type = ADElementAverageMaterialProperty
    mat_prop = D_h
    block = core_chan
  []
  [core_f]
    type = ParsedPostprocessor
    pp_names = 'Kloss Dh'
    expression = 'Kloss * Dh / ${core_length}'
  []
  ### INFO to send to SC
  [outlet_pressure]
    type = SideAverageValue
    boundary = up_pipe_2:in
    variable = p
  []
  [inlet_mass_flow_rate]
    type = ADFlowJunctionFlux1Phase
    boundary = up_pipe_1:out
    connection_index = 0
    equation = mass
    junction = jct1
  []
  [inlet_temperature]
    type = SideAverageValue
    boundary = up_pipe_1:out
    variable = T
  []
  [inlet_mass_flux]
    type = ParsedPostprocessor
    pp_names = 'inlet_mass_flow_rate'
    expression = 'abs(inlet_mass_flow_rate/${SC_core})'
  []
  #####
  ##### Info received from subchannel
  [core_delta_p_tgt]
    type = Receiver
    default = 100
  []
  [core_power]
    type = Receiver
    default = 100
  []
[]
[Preconditioning]
  [pc]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  start_time = 0
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 2
  []
  dtmax = 50
  end_time = 10
  line_search = basic
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_rel_tol = 1e-7
  nl_abs_tol = 1e-7
  nl_max_its = 25
  fixed_point_min_its = 1
  fixed_point_max_its = 5
  accept_on_max_fixed_point_iteration = true
  auto_advance = true
  relaxation_factor = 0.5
[]
[Outputs]
  csv = true
  [console]
    type = Console
    max_rows = 1
    outlier_variable_norms = false
  []
  print_linear_residuals = false
[]
################################################################################
# A multiapp that couples THM to subchannel
################################################################################
[MultiApps]
  # active = ''
  [subchannel]
    type = FullSolveMultiApp
    input_files = 'subchannel.i'
    execute_on = 'timestep_end'
    positions = '0 0 0'
    max_procs_per_app = 1
    output_in_position = true
    bounding_box_padding = '0 0 0.1'
  []
[]
[Transfers]
  # active = ''
  [pressure_drop_transfer] # Get pressure drop to THM from subchannel
    type = MultiAppPostprocessorTransfer
    from_multi_app = subchannel
    from_postprocessor = total_pressure_drop_SC
    to_postprocessor = core_delta_p_tgt
    reduction_type = average
    execute_on = 'timestep_end'
  []
  [power_transfer] # Get Total power to THM from subchannel
    type = MultiAppPostprocessorTransfer
    from_multi_app = subchannel
    from_postprocessor = Total_power
    to_postprocessor = core_power
    reduction_type = average
    execute_on = 'timestep_end'
  []
  [mass_flux_tranfer] # Send mass_flux at the inlet of THM core to subchannel
    type = MultiAppPostprocessorTransfer
    to_multi_app = subchannel
    from_postprocessor = inlet_mass_flux
    to_postprocessor = report_mass_flux_inlet
    execute_on = 'timestep_end'
  []
  [outlet_pressure_tranfer] # Send pressure at the outlet of THM core to subchannel
    type = MultiAppPostprocessorTransfer
    to_multi_app = subchannel
    from_postprocessor = outlet_pressure
    to_postprocessor = report_pressure_outlet
    execute_on = 'timestep_end'
  []
  [inlet_temperature_transfer]
    type = MultiAppPostprocessorTransfer
    to_multi_app = subchannel
    from_postprocessor = inlet_temperature
    to_postprocessor = report_temperature_inlet
    execute_on = 'timestep_end'
  []
[]
(modules/thermal_hydraulics/test/tests/materials/ad_convective_heat_transfer_coefficient/test.i)
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
  allow_renumbering = false
[]
[Problem]
  solve = false
[]
[Materials]
  [props]
    type = ADGenericConstantMaterial
    prop_names = 'Nu k D_h'
    prop_values = '1000 2 20'
  []
  [Hw_material]
    type = ADConvectiveHeatTransferCoefficientMaterial
    Nu = Nu
  []
[]
[Executioner]
  type = Steady
[]
[Postprocessors]
  [Hw]
    type = ADElementAverageMaterialProperty
    mat_prop = Hw
  []
[]
[Outputs]
  csv = true
  execute_on = 'TIMESTEP_END'
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/planar/generalized_plane_strain/pull_2D.i)
constraint_types = 'none none none none none none none none strain'
targets = '0'
[GlobalParams]
  displacements = 'disp_x disp_y'
  large_kinematics = true
  stabilize_strain = true
  macro_gradient = hvar
  constraint_types = ${constraint_types}
  targets = ${targets}
[]
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 5
    ny = 5
  []
  use_displaced_mesh = false
[]
[Variables]
  [disp_x]
  []
  [disp_y]
  []
  [hvar]
    family = SCALAR
    order = FIRST
  []
[]
[Kernels]
  [sdx]
    type = HomogenizedTotalLagrangianStressDivergence
    variable = disp_x
    component = 0
    scalar_variable = hvar
  []
  [sdy]
    type = HomogenizedTotalLagrangianStressDivergence
    variable = disp_y
    component = 1
    scalar_variable = hvar
  []
[]
[BCs]
  [fix_x]
    type = DirichletBC
    variable = disp_x
    boundary = 'top bottom'
    value = 0
  []
  [fix_y]
    type = DirichletBC
    variable = disp_y
    boundary = 'bottom'
    value = 0
  []
  [disp_y]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = 'top'
    function = 't'
  []
[]
[Materials]
  [elastic_tensor]
    type = ComputeIsotropicElasticityTensor
    youngs_modulus = 1000.0
    poissons_ratio = 0.25
  []
  [compute_homogenization_gradient]
    type = ComputeHomogenizedLagrangianStrain
  []
  [compute_strain]
    type = ComputeLagrangianStrain
    homogenization_gradient_names = 'homogenization_gradient'
  []
  [stress]
    type = ComputeLagrangianLinearElasticStress
  []
  [stress_zz]
    type = RankTwoCartesianComponent
    rank_two_tensor = cauchy_stress
    index_i = 2
    index_j = 2
    property_name = stress_zz
  []
  [strain_zz]
    type = RankTwoCartesianComponent
    rank_two_tensor = mechanical_strain
    index_i = 2
    index_j = 2
    property_name = strain_zz
  []
[]
[Executioner]
  type = Transient
  dt = 0.01
  end_time = 0.1
  solve_type = 'newton'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_abs_tol = 1e-10
  nl_rel_tol = 1e-10
[]
[Postprocessors]
  [strain_zz]
    type = ElementAverageMaterialProperty
    mat_prop = strain_zz
  []
  [stress_zz]
    type = ElementAverageMaterialProperty
    mat_prop = stress_zz
  []
[]
[Outputs]
  csv = true
[]
(test/tests/materials/derivative_material_interface/old_older.i)
#
# This test validates the correct application of the chain rule to coupled
# material properties within DerivativeParsedMaterials
#
[Mesh]
  type = GeneratedMesh
  dim = 1
[]
[Problem]
  solve = false
  kernel_coverage_check = false
[]
[Variables]
  [dummy]
  []
[]
[Materials]
  [t_square]
    type = GenericFunctionMaterial
    prop_names = t2
    prop_values = 't^2'
  []
  [t2_old]
    type = ParsedMaterial
    property_name = t2_old
    expression = t2_old
    material_property_names = 't2_old:=Old[t2]'
  []
  [t2_older]
    type = ParsedMaterial
    property_name = t2_older
    expression = t2_older
    material_property_names = 't2_older:=Older[t2]'
  []
[]
[Executioner]
  type = Transient
  dt = 1.5
  num_steps = 5
[]
[Postprocessors]
  [t2]
    type = ElementAverageMaterialProperty
    mat_prop = t2
  []
  [t2_old]
    type = ElementAverageMaterialProperty
    mat_prop = t2_old
  []
  [t2_older]
    type = ElementAverageMaterialProperty
    mat_prop = t2_older
  []
[]
[Outputs]
  csv = true
  print_linear_residuals = false
[]
(modules/thermal_hydraulics/test/tests/materials/binary_diffusion_coef/binary_diffusion_coef.i)
p = 1e5
T = 300
collision_diam = 0.3e-9
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
[]
[FluidProperties]
  [fp1]
    type = IdealGasFluidProperties
    gamma = 1.4
    molar_mass = 0.029
  []
  [fp2]
    type = IdealGasFluidProperties
    gamma = 1.5
    molar_mass = 0.04
  []
  [mixture_fp]
    type = IdealGasMixtureFluidProperties
    component_fluid_properties = 'fp1 fp2'
  []
[]
[Materials]
  [pT_mat]
    type = ADGenericConstantMaterial
    prop_names = 'p T'
    prop_values = '${p} ${T}'
  []
  [test_mat]
    type = BinaryDiffusionCoefMaterial
    primary_collision_diameter = ${collision_diam}
    secondary_collision_diameter = ${collision_diam}
    vapor_mixture_fp = mixture_fp
  []
[]
[Postprocessors]
  [diffcoef]
    type = ADElementAverageMaterialProperty
    mat_prop = mass_diffusion_coefficient
    execute_on = 'INITIAL'
  []
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Steady
[]
[Outputs]
  csv = true
  execute_on = 'INITIAL'
[]
(modules/solid_mechanics/test/tests/rom_stress_update/3tile_json.i)
# Tests the tile and partition assembly for overlapping partitions and
# a variety of different overlapping tile conditions.
# Creep_rate should always be 2.718281828459
endtime = 1.9
[Mesh]
  type = GeneratedMesh
  dim = 3
[]
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
  [temperature]
  []
[]
[AuxKernels]
  [temp_aux]
    type = FunctionAux
    variable = temperature
    function = temp_fcn
    execute_on = 'initial timestep_begin'
  []
[]
[Functions]
  [rhom_fcn]
    type = PiecewiseConstant
    x = '0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9'
    y = '5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12'
    direction = LEFT_INCLUSIVE
  []
  [rhoi_fcn]
    type = PiecewiseConstant
    x = '0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9'
    y = '4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11'
    direction = LEFT_INCLUSIVE
  []
  [vmJ2_fcn]
    type = PiecewiseConstant
    x = '0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9'
    y = '25.68 25.68 45.0 55.28 63.0 67.12 85.0 85.0 85.0 85.0 85.0 85.0 55.28 63.0 67.12 63.0 63.0 55.28 96.72 63.0'
    direction = LEFT_INCLUSIVE
  []
  [evm_fcn]
    type = PiecewiseConstant
    x = '0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9'
    y = '0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01'
    direction = LEFT_INCLUSIVE
  []
  [temp_fcn]
    type = PiecewiseConstant
    x = '0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9'
    y = '940.0 940.0 940.0 940.0 940.0 940.0 940.0 905.0 897.0 881.0 860.0 821.0 860.0 881.0 897.0 897.0 905.0 897.0 860.0 860.0'
    direction = LEFT_INCLUSIVE
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = FINITE
    add_variables = true
    generate_output = 'vonmises_stress'
  []
[]
[BCs]
  [symmx]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [symmy]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0
  []
  [symmz]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0
  []
  [pull_x]
    type = DirichletBC
    variable = disp_x
    boundary = right
    value = 1e-5 # This is required to make a non-zero effective trial stress so radial return is engaged
  []
[]
[Materials]
  [elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    shear_modulus = 1e13
    poissons_ratio = 0.3
  []
  [stress]
    type = ComputeMultipleInelasticStress
    inelastic_models = rom_stress_prediction
  []
  [rom_stress_prediction]
    type = LAROMANCEPartitionStressUpdate
    model = solid_mechanics:laromance/test/3tile.json
    temperature = temperature
    effective_inelastic_strain_name = effective_creep_strain
    internal_solve_full_iteration_history = true
    apply_strain = false
    outputs = all
    verbose = true
    wall_dislocation_density_forcing_function = rhoi_fcn
    cell_dislocation_density_forcing_function = rhom_fcn
    old_creep_strain_forcing_function = evm_fcn
    wall_input_window_low_failure = ERROR
    wall_input_window_high_failure = ERROR
    cell_input_window_low_failure = ERROR
    cell_input_window_high_failure = ERROR
    temperature_input_window_low_failure = DONOTHING
    temperature_input_window_high_failure = ERROR
    stress_input_window_low_failure = DONOTHING
    stress_input_window_high_failure = ERROR
    old_strain_input_window_low_failure = ERROR
    old_strain_input_window_high_failure = ERROR
    environment_input_window_low_failure = ERROR
    environment_input_window_high_failure = ERROR
    effective_stress_forcing_function = vmJ2_fcn
    initial_cell_dislocation_density = 4.0e12
    max_relative_cell_dislocation_increment = 0.5
    initial_wall_dislocation_density = 5.0e12
    max_relative_wall_dislocation_increment = 0.5
  []
[]
[Executioner]
  type = Transient
  solve_type = 'NEWTON'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_abs_tol = 1e-1 # Nothing is really being solved here, so loose tolerances are okay
  dt = 0.1
  end_time = ${endtime}
  timestep_tolerance = 1e-3
[]
[Postprocessors]
  [extrapolation]
    type = ElementAverageValue
    variable = ROM_extrapolation
    outputs = console
  []
  [old_strain_in]
    type = FunctionValuePostprocessor
    function = evm_fcn
    execute_on = 'TIMESTEP_END initial'
    outputs = console
  []
  [temperature]
    type = ElementAverageValue
    variable = temperature
  []
  [partition_weight]
    type = ElementAverageMaterialProperty
    mat_prop = partition_weight
  []
  [rhom_in]
    type = FunctionValuePostprocessor
    function = rhom_fcn
    execute_on = 'TIMESTEP_END initial'
    outputs = console
  []
  [rhoi_in]
    type = FunctionValuePostprocessor
    function = rhoi_fcn
    execute_on = 'TIMESTEP_END initial'
    outputs = console
  []
  [vmJ2_in]
    type = FunctionValuePostprocessor
    function = vmJ2_fcn
    execute_on = 'TIMESTEP_END initial'
  []
  [creep_rate]
    type = ElementAverageMaterialProperty
    mat_prop = creep_rate
  []
  [rhom_rate]
    type = ElementAverageMaterialProperty
    mat_prop = cell_dislocation_rate
  []
  [rhoi_rate]
    type = ElementAverageMaterialProperty
    mat_prop = wall_dislocation_rate
  []
[]
[Outputs]
  csv = true
  execute_on = 'INITIAL TIMESTEP_END FINAL'
[]
(modules/thermal_hydraulics/test/tests/materials/ad_prandtl_number/test.i)
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
  allow_renumbering = false
[]
[Problem]
  solve = false
[]
[Materials]
  [props]
    type = ADGenericConstantMaterial
    prop_names = 'cp mu k'
    prop_values = '1 2 4'
  []
  [Pr_material]
    type = ADPrandtlNumberMaterial
  []
[]
[Executioner]
  type = Steady
[]
[Postprocessors]
  [Pr]
    type = ADElementAverageMaterialProperty
    mat_prop = Pr
  []
[]
[Outputs]
  csv = true
  execute_on = 'TIMESTEP_END'
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/planar/generalized_plane_strain/pull_3D.i)
nz = 1
z = '${fparse nz*0.2}'
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
  large_kinematics = true
  stabilize_strain = true
[]
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 3
    nx = 5
    ny = 5
    nz = ${nz}
    zmax = ${z}
  []
  use_displaced_mesh = false
[]
[Variables]
  [disp_x]
  []
  [disp_y]
  []
  [disp_z]
  []
[]
[Kernels]
  [sdx]
    type = TotalLagrangianStressDivergence
    variable = disp_x
    component = 0
  []
  [sdy]
    type = TotalLagrangianStressDivergence
    variable = disp_y
    component = 1
  []
  [sdz]
    type = TotalLagrangianStressDivergence
    variable = disp_z
    component = 2
  []
[]
[BCs]
  [fix_x]
    type = DirichletBC
    boundary = 'top bottom'
    variable = disp_x
    value = 0
  []
  [fix_y]
    type = DirichletBC
    boundary = 'bottom'
    variable = disp_y
    value = 0
  []
  [fix_z]
    type = DirichletBC
    boundary = 'top bottom'
    variable = disp_z
    value = 0
  []
  [disp_y]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = 'top'
    function = 't'
  []
[]
[Materials]
  [elastic_tensor]
    type = ComputeIsotropicElasticityTensor
    youngs_modulus = 1000.0
    poissons_ratio = 0.25
  []
  [strain]
    type = ComputeLagrangianStrain
  []
  [stress]
    type = ComputeLagrangianLinearElasticStress
  []
  [stress_zz]
    type = RankTwoCartesianComponent
    rank_two_tensor = cauchy_stress
    index_i = 2
    index_j = 2
    property_name = stress_zz
  []
  [strain_zz]
    type = RankTwoCartesianComponent
    rank_two_tensor = mechanical_strain
    index_i = 2
    index_j = 2
    property_name = strain_zz
  []
[]
[Executioner]
  type = Transient
  dt = 0.01
  end_time = 0.1
  solve_type = 'newton'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_abs_tol = 1e-8
  nl_rel_tol = 1e-6
[]
[Postprocessors]
  [strain_zz]
    type = ElementAverageMaterialProperty
    mat_prop = strain_zz
  []
  [stress_zz]
    type = ElementAverageMaterialProperty
    mat_prop = stress_zz
  []
[]
[Outputs]
  csv = true
  file_base = 'pull_3D_nz_${nz}'
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/volumetric_eigenstrain_parabolic.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  [cube]
    type = GeneratedMeshGenerator
    dim = 3
    nx = 2
    ny = 2
    nz = 2
    elem_type = HEX27
  []
[]
[AuxVariables]
  [temperature]
    order = FIRST
    family = LAGRANGE
  []
  [linear_void_strain]
    order = CONSTANT
    family = MONOMIAL
  []
  [e_total_xx]
    order = CONSTANT
    family = MONOMIAL
  []
  [e_total_yy]
    order = CONSTANT
    family = MONOMIAL
  []
  [e_void_xx]
    order = CONSTANT
    family = MONOMIAL
  []
  [e_void_yy]
    order = CONSTANT
    family = MONOMIAL
  []
  [e_void_zz]
    order = CONSTANT
    family = MONOMIAL
  []
  [f_void_zz]
    order = CONSTANT
    family = MONOMIAL
  []
  [pk2_zz]
    order = CONSTANT
    family = MONOMIAL
  []
  [fp_zz]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Physics/SolidMechanics/QuasiStatic/all]
  strain = FINITE
  incremental = true
  add_variables = true
[]
[Functions]
  [temperature_ramp]
    type = ParsedFunction
    expression = '600.0 + t'
  []
[]
[AuxKernels]
  [temperature]
    type = FunctionAux
    variable = temperature
    function = 'temperature_ramp'
    execute_on = timestep_begin
  []
  [linear_void_strain]
    type = MaterialRealAux
    variable = linear_void_strain
    property = equivalent_linear_change
    execute_on = timestep_end
  []
  [e_total_xx]
    type = RankTwoAux
    variable = e_total_xx
    rank_two_tensor = total_lagrangian_strain
    index_j = 0
    index_i = 0
    execute_on = timestep_end
  []
  [e_total_yy]
    type = RankTwoAux
    variable = e_total_yy
    rank_two_tensor = total_lagrangian_strain
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  []
  [e_void_xx]
    type = RankTwoAux
    variable = e_void_xx
    rank_two_tensor = void_eigenstrain
    index_j = 0
    index_i = 0
    execute_on = timestep_end
  []
  [e_void_yy]
    type = RankTwoAux
    variable = e_void_yy
    rank_two_tensor = void_eigenstrain
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  []
  [e_void_zz]
    type = RankTwoAux
    variable = e_void_zz
    rank_two_tensor = void_eigenstrain
    index_j = 2
    index_i = 2
    execute_on = timestep_end
  []
  [f_void_zz]
    type = RankTwoAux
    variable = f_void_zz
    rank_two_tensor = volumetric_deformation_gradient
    index_j = 2
    index_i = 2
    execute_on = timestep_end
  []
  [pk2_zz]
    type = RankTwoAux
    variable = pk2_zz
    rank_two_tensor = second_piola_kirchhoff_stress
    index_j = 2
    index_i = 2
    execute_on = timestep_end
  []
  [fp_zz]
    type = RankTwoAux
    variable = fp_zz
    rank_two_tensor = plastic_deformation_gradient
    index_j = 2
    index_i = 2
    execute_on = timestep_end
  []
[]
[BCs]
  [symmy]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0
  []
  [symmx]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [symmz]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0
  []
  [hold_front]
    type = DirichletBC
    variable = disp_z
    boundary = front
    value = 0
  []
[]
[Materials]
  [elasticity_tensor]
    type = ComputeElasticityTensorCP
    C_ijkl = '1.98e5 1.25e5 1.25e5 1.98e5 1.25e5 1.98e5 1.22e5 1.22e5 1.22e5'
    fill_method = symmetric9
  []
  [stress]
    type = ComputeMultipleCrystalPlasticityStress
    crystal_plasticity_models = 'trial_xtalpl'
    eigenstrain_names = void_eigenstrain
    tan_mod_type = exact
    line_search_method = CUT_HALF
    use_line_search = true
    maximum_substep_iteration = 5
  []
  [trial_xtalpl]
    type = CrystalPlasticityKalidindiUpdate
    number_slip_systems = 12
    slip_sys_file_name = input_slip_sys.txt
  []
  [void_eigenstrain]
    type = ComputeCrystalPlasticityVolumetricEigenstrain
    eigenstrain_name = void_eigenstrain
    deformation_gradient_name = volumetric_deformation_gradient
    mean_spherical_void_radius = void_radius
    spherical_void_number_density = void_density
  []
  [void_density]
    type = ParsedMaterial
    property_name = void_density
    coupled_variables = temperature
    expression = 'if(temperature<601.0, 1.0e6, (-1.0e6 * (temperature - 603)^2.0 + 5.0e6))'
  []
  [void_radius]
    type = ParsedMaterial
    property_name = void_radius
    coupled_variables = temperature
    expression = 'if(temperature<601.0, 1.0e-6, (-2.25e-6 * (temperature - 603)^2.0 + 1.0e-5))'
  []
[]
[Postprocessors]
  [linear_void_strain]
    type = ElementAverageValue
    variable = linear_void_strain
  []
  [e_void_xx]
    type = ElementAverageValue
    variable = e_void_xx
  []
  [e_void_yy]
    type = ElementAverageValue
    variable = e_void_yy
  []
  [e_void_zz]
    type = ElementAverageValue
    variable = e_void_zz
  []
  [f_void_zz]
    type = ElementAverageValue
    variable = f_void_zz
  []
  [void_density]
    type = ElementAverageMaterialProperty
    mat_prop = void_density
    execute_on = TIMESTEP_END
  []
  [void_radius]
    type = ElementAverageMaterialProperty
    mat_prop = void_radius
    execute_on = TIMESTEP_END
  []
  [pk2_zz]
   type = ElementAverageValue
   variable = pk2_zz
  []
  [fp_zz]
    type = ElementAverageValue
    variable = fp_zz
  []
  [e_total_xx]
    type = ElementAverageValue
    variable = e_total_xx
  []
  [e_total_yy]
    type = ElementAverageValue
    variable = e_total_yy
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason'
  petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
  petsc_options_value = ' asm      2              lu            gmres     200'
  line_search = 'none'
  nl_abs_tol = 1e-12
  nl_rel_tol = 1e-8
  nl_forced_its = 1
  dt = 1.0
  dtmin = 1.0e-4
  end_time  = 5.0
[]
[Outputs]
  csv = true
  perf_graph = true
[]
(test/tests/materials/material_property_interface/nonexistent_mat_prop.i)
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
[]
[Postprocessors]
  [pp]
    type = ElementAverageMaterialProperty
    mat_prop = blah
  []
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Steady
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/3d_bar_orthotropic_90deg_rotation_ad_creep_x_no_rotation.i)
[Mesh]
  [generated_mesh]
    type = GeneratedMeshGenerator
    dim = 3
    xmin = 0
    xmax = 2
    ymin = 0
    ymax = 10
    zmin = 0
    zmax = 2
    nx = 1
    ny = 1
    nz = 1
    elem_type = HEX8
  []
  [corner]
    type = ExtraNodesetGenerator
    new_boundary = 101
    coord = '0 0 0'
    input = generated_mesh
  []
  [side]
    type = ExtraNodesetGenerator
    new_boundary = 102
    coord = '2 0 0'
    input = corner
  []
[]
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = FINITE
    add_variables = true
    volumetric_locking_correction = true
    use_automatic_differentiation = true
    generate_output = 'elastic_strain_xx stress_xx creep_strain_xx creep_strain_yy creep_strain_zz'
  []
[]
[Materials]
  [elastic_strain]
    type = ADComputeMultipleInelasticStress
    inelastic_models = "trial_creep"
    max_iterations = 50
    absolute_tolerance = 1e-18
  []
  [hill_tensor]
    type = ADHillConstants
    # F G H L M N
    hill_constants = "0.25 0.4 0.65 1.5 1.5 1.5"
  []
  [trial_creep]
    type = ADHillCreepStressUpdate
    coefficient = 5e-14
    n_exponent = 10
    m_exponent = 0
    activation_energy = 0
    max_inelastic_increment = 0.00003
    absolute_tolerance = 1e-18
    relative_tolerance = 1e-18
    # Force it to not use integration error
    max_integration_error = 100.0
  []
  [elasticity_tensor]
    type = ADComputeIsotropicElasticityTensor
    youngs_modulus = 500
    poissons_ratio = 0.0
  []
[]
[BCs]
  [fix_x]
    type = ADDirichletBC
    variable = disp_x
    boundary = bottom
    value = 0
  []
  [rot_z]
    type = DisplacementAboutAxis
    boundary = bottom
    function = 0
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '1. 0. 1.0e-13'
    component = 2
    variable = disp_z
  []
  #
  [rot_y]
    type = DisplacementAboutAxis
    boundary = bottom
    function = 0
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '1. 0. 1.0e-13'
    component = 1
    variable = disp_y
  []
  [rot_z90]
    type = DisplacementAboutAxis
    boundary = bottom
    function = 0
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '1. 0. 1.0e-13'
    component = 2
    variable = disp_z
  []
  #
  [rot_y90]
    type = DisplacementAboutAxis
    boundary = bottom
    function = 0
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '1. 0. 1.0e-13'
    component = 1
    variable = disp_y
  []
  [press]
    type = Pressure
    boundary = top
    function = '-1.0*(t-90)*0.1'
    use_displaced_mesh = true
    displacements = 'disp_x disp_y disp_z'
    variable = disp_y
  []
[]
[Postprocessors]
  [creep_strain_yy]
    type = ADElementAverageMaterialProperty
    mat_prop = creep_strain_yy
  []
[]
[Controls]
  [c1]
    type = TimePeriod
    enable_objects = 'BCs::rot_z BCs::rot_y'
    disable_objects = 'BCs::rot_z90 BCs::rot_y90 BCs::press'
    start_time = '0'
    end_time = '90'
  []
  [c190plus]
    type = TimePeriod
    enable_objects = 'BCs::rot_z90 BCs::rot_y90 BCs::press'
    disable_objects = 'BCs::rot_z BCs::rot_y '
    start_time = '90'
    end_time = '390'
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp_ew'
  petsc_options_iname = '-ksp_gmres_restart'
  petsc_options_value = '101'
  line_search = 'none'
  nl_rel_tol = 1e-11
  nl_abs_tol = 1e-11
  nl_max_its = 50
  l_tol = 1e-4
  l_max_its = 50
  start_time = 0.0
  dt = 0.1
  dtmin = 0.1
  num_steps = 1200
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/solid_mechanics/test/tests/scalar_material_damage/ad_nonlocal_scalar_damage.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  xmin = -0.5
  xmax = 0.5
  nx = 5
  ny = 5
  nz = 5
  elem_type = HEX8
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = SMALL
    incremental = true
    add_variables = true
    generate_output = 'stress_xx strain_xx'
    use_automatic_differentiation = true
  []
[]
[BCs]
  [symmy]
    type = ADDirichletBC
    variable = disp_y
    boundary = bottom
    value = 0
  []
  [symmx]
    type = ADDirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [symmz]
    type = ADDirichletBC
    variable = disp_z
    boundary = back
    value = 0
  []
  [axial_load]
    type = ADDirichletBC
    variable = disp_x
    boundary = right
    value = 0.01
  []
[]
[Functions]
  [func]
    type = ParsedFunction
    expression = 'if(x>=0,0.5*t, t)'
  []
[]
[UserObjects]
  [ele_avg]
    type = RadialAverage
    prop_name = local_damage_reg
    weights = constant
    execute_on = "INITIAL timestep_end"
    radius = 0.55
  []
[]
[Materials]
  [non_ad_local_damage]
    type = MaterialADConverter
    ad_props_in = local_damage
    reg_props_out = local_damage_reg
  []
  [local_damage_index]
    type = ADGenericFunctionMaterial
    prop_names = local_damage_index
    prop_values = func
  []
  [local_damage]
    type = ADScalarMaterialDamage
    damage_index = local_damage_index
    damage_index_name = local_damage
  []
  [damage]
    type = ADNonlocalDamage
    average_UO = ele_avg
    local_damage_model = local_damage
    damage_index_name = nonlocal_damage
  []
  [elasticity]
    type = ADComputeIsotropicElasticityTensor
    poissons_ratio = 0.2
    youngs_modulus = 10e9
  []
  [stress]
    type = ADComputeDamageStress
    damage_model = damage
  []
[]
[Postprocessors]
  [stress_xx]
    type = ElementAverageValue
    variable = stress_xx
  []
  [strain_xx]
    type = ElementAverageValue
    variable = strain_xx
  []
  [nonlocal_damage]
    type = ADElementAverageMaterialProperty
    mat_prop = nonlocal_damage
  []
  [local_damage]
    type = ADElementAverageMaterialProperty
    mat_prop = local_damage
  []
[]
[Executioner]
  type = Transient
  l_max_its = 50
  l_tol = 1e-8
  nl_max_its = 20
  nl_rel_tol = 1e-12
  nl_abs_tol = 1e-8
  dt = 0.2
  dtmin = 0.1
  end_time = 1
[]
[Outputs]
  csv = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/3d_bar_orthotropic_90deg_rotation_ad_creep_z.i)
[Mesh]
  [generated_mesh]
    type = GeneratedMeshGenerator
    dim = 3
    xmin = 0
    xmax = 2
    ymin = 0
    ymax = 10
    zmin = 0
    zmax = 2
    nx = 1
    ny = 1
    nz = 1
    elem_type = HEX8
  []
  [corner]
    type = ExtraNodesetGenerator
    new_boundary = 101
    coord = '0 0 0'
    input = generated_mesh
  []
  [side]
    type = ExtraNodesetGenerator
    new_boundary = 102
    coord = '2 0 0'
    input = corner
  []
[]
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = FINITE
    add_variables = true
    volumetric_locking_correction = true
    use_automatic_differentiation = true
    generate_output = 'elastic_strain_xx stress_xx creep_strain_xx'
  []
[]
[Materials]
  [elastic_strain]
    type = ADComputeMultipleInelasticStress
    inelastic_models = "trial_creep"
    max_iterations = 50
    absolute_tolerance = 1e-18
  []
  [hill_tensor]
    type = ADHillConstants
    # F G H L M N
    hill_constants = "0.5 1.0 0.5 1.5 1.5 1.5"
    use_large_rotation = true
  []
  [trial_creep]
    type = ADHillCreepStressUpdate
    coefficient = 5e-14
    n_exponent = 10
    m_exponent = 0
    activation_energy = 0
    max_inelastic_increment = 0.00003
    absolute_tolerance = 1e-18
    relative_tolerance = 1e-18
    # Force it to not use integration error
    max_integration_error = 100.0
    use_transformation = true
  []
  [elasticity_tensor]
    type = ADComputeIsotropicElasticityTensor
    youngs_modulus = 500
    poissons_ratio = 0.0
  []
[]
[BCs]
  [fix_z]
    type = ADDirichletBC
    variable = disp_z
    boundary = bottom
    value = 0
  []
  [rot_y]
    type = DisplacementAboutAxis
    boundary = bottom
    function = t
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '0. 0. 1.'
    component = 1
    variable = disp_y
  []
  #
  [rot_x]
    type = DisplacementAboutAxis
    boundary = bottom
    function = t
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '0. 0. 1.'
    component = 0
    variable = disp_x
  []
  [rot_y90]
    type = DisplacementAboutAxis
    boundary = bottom
    function = 90
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '0. 0. 1.'
    component = 1
    variable = disp_y
  []
  #
  [rot_x90]
    type = DisplacementAboutAxis
    boundary = bottom
    function = 90
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '0. 0. 1.'
    component = 0
    variable = disp_x
  []
  [press]
    boundary = top
    function = '-1.0*(t-90)*0.1'
    use_displaced_mesh = true
    displacements = 'disp_x disp_y disp_z'
    type = Pressure
    variable = disp_x
  []
[]
[Postprocessors]
  [creep_strain_xx]
    type = ADElementAverageMaterialProperty
    mat_prop = creep_strain_xx
  []
[]
[Controls]
  [c1]
    type = TimePeriod
    enable_objects = 'BCs::rot_x BCs::rot_y'
    disable_objects = 'BCs::rot_x90 BCs::rot_y90 BCs::press'
    start_time = '0'
    end_time = '90'
  []
  [c190plus]
    type = TimePeriod
    enable_objects = 'BCs::rot_x90 BCs::rot_y90 BCs::press'
    disable_objects = 'BCs::rot_x BCs::rot_y '
    start_time = '90'
    end_time = '390'
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp_ew'
  petsc_options_iname = '-ksp_gmres_restart'
  petsc_options_value = '101'
  line_search = 'none'
  nl_rel_tol = 1e-12
  nl_abs_tol = 1e-12
  nl_max_its = 50
  automatic_scaling = true
  l_tol = 1e-4
  l_max_its = 50
  start_time = 0.0
  dt = 0.1
  dtmin = 0.1
  num_steps = 1200
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/thermal_hydraulics/test/tests/materials/wall_friction_cheng/cheng_ff_test.i)
#Fluid Properties:
rho = 2000
vel = 1
mu = 1
#Geometric Parameters
Dh = 1
PoD = 1.10
[GlobalParams]
  execute_on = 'initial'
[]
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
  allow_renumbering = false
[]
[Materials]
  [props]
    type = ADGenericConstantMaterial
    prop_names = 'rho vel mu D_h'
    prop_values = '${rho} ${vel} ${mu} ${Dh}'
  []
  [turb]
    type = ADGenericConstantMaterial
    prop_names = 'rho_turb'
    prop_values = '2200'
  []
  [warnings]
    type = ADWallFrictionChengMaterial
    f_D = "warnings"
    PoD = ${PoD}
    bundle_array = SQUARE
    subchannel_type = INTERIOR
  []
  [PoD_105_interior_sqr_lam]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_105_interior_sqr_lam"
    PoD = 1.05
    bundle_array = SQUARE
    subchannel_type = INTERIOR
  []
  [PoD_105_edge_sqr_lam]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_105_edge_sqr_lam"
    PoD = 1.05
    bundle_array = SQUARE
    subchannel_type = EDGE
  []
  [PoD_105_corner_sqr_lam]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_105_corner_sqr_lam"
    PoD = 1.05
    bundle_array = SQUARE
    subchannel_type = CORNER
  []
  [PoD_110_interior_sqr_lam]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_110_interior_sqr_lam"
    PoD = 1.10
    bundle_array = SQUARE
    subchannel_type = INTERIOR
  []
  [PoD_110_edge_sqr_lam]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_110_edge_sqr_lam"
    PoD = 1.10
    bundle_array = SQUARE
    subchannel_type = EDGE
  []
  [PoD_110_corner_sqr_lam]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_110_corner_sqr_lam"
    PoD = 1.10
    bundle_array = SQUARE
    subchannel_type = CORNER
  []
  [PoD_105_interior_sqr_turb]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_105_interior_sqr_turb"
    PoD = 1.05
    bundle_array = SQUARE
    subchannel_type = INTERIOR
    rho = rho_turb
  []
  [PoD_105_edge_sqr_turb]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_105_edge_sqr_turb"
    PoD = 1.05
    bundle_array = SQUARE
    subchannel_type = EDGE
    rho = rho_turb
  []
  [PoD_105_corner_sqr_turb]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_105_corner_sqr_turb"
    PoD = 1.05
    bundle_array = SQUARE
    subchannel_type = CORNER
    rho = rho_turb
  []
  [PoD_110_interior_sqr_turb]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_110_interior_sqr_turb"
    PoD = 1.10
    bundle_array = SQUARE
    subchannel_type = INTERIOR
    rho = rho_turb
  []
  [PoD_110_edge_sqr_turb]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_110_edge_sqr_turb"
    PoD = 1.10
    bundle_array = SQUARE
    subchannel_type = EDGE
    rho = rho_turb
  []
  [PoD_110_corner_sqr_turb]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_110_corner_sqr_turb"
    PoD = 1.10
    bundle_array = SQUARE
    subchannel_type = CORNER
    rho = rho_turb
  []
  [PoD_105_interior_hex_lam]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_105_interior_hex_lam"
    PoD = 1.05
    bundle_array = HEXAGONAL
    subchannel_type = INTERIOR
  []
  [PoD_105_edge_hex_lam]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_105_edge_hex_lam"
    PoD = 1.05
    bundle_array = HEXAGONAL
    subchannel_type = EDGE
  []
  [PoD_105_corner_hex_lam]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_105_corner_hex_lam"
    PoD = 1.05
    bundle_array = HEXAGONAL
    subchannel_type = CORNER
  []
  [PoD_110_interior_hex_lam]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_110_interior_hex_lam"
    PoD = 1.10
    bundle_array = HEXAGONAL
    subchannel_type = INTERIOR
  []
  [PoD_110_edge_hex_lam]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_110_edge_hex_lam"
    PoD = 1.10
    bundle_array = HEXAGONAL
    subchannel_type = EDGE
  []
  [PoD_110_corner_hex_lam]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_110_corner_hex_lam"
    PoD = 1.10
    bundle_array = HEXAGONAL
    subchannel_type = CORNER
  []
  [PoD_105_interior_hex_turb]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_105_interior_hex_turb"
    PoD = 1.05
    bundle_array = HEXAGONAL
    subchannel_type = INTERIOR
    rho = rho_turb
  []
  [PoD_105_edge_hex_turb]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_105_edge_hex_turb"
    PoD = 1.05
    bundle_array = HEXAGONAL
    subchannel_type = EDGE
    rho = rho_turb
  []
  [PoD_105_corner_hex_turb]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_105_corner_hex_turb"
    PoD = 1.05
    bundle_array = HEXAGONAL
    subchannel_type = CORNER
    rho = rho_turb
  []
  [PoD_110_interior_hex_turb]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_110_interior_hex_turb"
    PoD = 1.10
    bundle_array = HEXAGONAL
    subchannel_type = INTERIOR
    rho = rho_turb
  []
  [PoD_110_edge_hex_turb]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_110_edge_hex_turb"
    PoD = 1.10
    bundle_array = HEXAGONAL
    subchannel_type = EDGE
    rho = rho_turb
  []
  [PoD_110_corner_hex_turb]
    type = ADWallFrictionChengMaterial
    f_D = "PoD_110_corner_hex_turb"
    PoD = 1.10
    bundle_array = HEXAGONAL
    subchannel_type = CORNER
    rho = rho_turb
  []
[]
[Postprocessors]
  [PoD_105_interior_sqr_lam]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_105_interior_sqr_lam
  []
  [PoD_105_edge_sqr_lam]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_105_edge_sqr_lam
  []
  [PoD_105_corner_sqr_lam]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_105_corner_sqr_lam
  []
  [PoD_110_interior_sqr_lam]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_110_interior_sqr_lam
  []
  [PoD_110_edge_sqr_lam]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_110_edge_sqr_lam
  []
  [PoD_110_corner_sqr_lam]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_110_corner_sqr_lam
  []
  [PoD_105_interior_sqr_turb]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_105_interior_sqr_turb
  []
  [PoD_105_edge_sqr_turb]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_105_edge_sqr_turb
  []
  [PoD_105_corner_sqr_turb]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_105_corner_sqr_turb
  []
  [PoD_110_interior_sqr_turb]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_110_interior_sqr_turb
  []
  [PoD_110_edge_sqr_turb]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_110_edge_sqr_turb
  []
  [PoD_110_corner_sqr_turb]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_110_corner_sqr_turb
  []
  [PoD_105_interior_hex_lam]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_105_interior_hex_lam
  []
  [PoD_105_edge_hex_lam]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_105_edge_hex_lam
  []
  [PoD_105_corner_hex_lam]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_105_corner_hex_lam
  []
  [PoD_110_interior_hex_lam]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_110_interior_hex_lam
  []
  [PoD_110_edge_hex_lam]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_110_edge_hex_lam
  []
  [PoD_110_corner_hex_lam]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_110_corner_hex_lam
  []
  [PoD_105_interior_hex_turb]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_105_interior_hex_turb
  []
  [PoD_105_edge_hex_turb]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_105_edge_hex_turb
  []
  [PoD_105_corner_hex_turb]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_105_corner_hex_turb
  []
  [PoD_110_interior_hex_turb]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_110_interior_hex_turb
  []
  [PoD_110_edge_hex_turb]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_110_edge_hex_turb
  []
  [PoD_110_corner_hex_turb]
    type = ADElementAverageMaterialProperty
    mat_prop = PoD_110_corner_hex_turb
  []
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Steady
[]
[Outputs]
  csv = true
[]
(modules/solid_mechanics/test/tests/rom_stress_update/3tile_strain.i)
# This is a test to check that changing the finite_difference_width does indeed change convergence
# The number of nonlinear iterations should be greater a width of 1e-20 than 1e-2
[Mesh]
  type = GeneratedMesh
  dim = 3
[]
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Problem]
  type = ReferenceResidualProblem
  reference_vector = 'ref'
  extra_tag_vectors = 'ref'
  group_variables = 'disp_x disp_y disp_z'
[]
[AuxVariables]
  [temperature]
    initial_condition = 920
  []
[]
[AuxKernels]
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = FINITE
    add_variables = true
    generate_output = 'vonmises_stress'
    extra_vector_tags = 'ref'
  []
[]
[BCs]
  [symmx]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [symmy]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0
  []
  [symmz]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0
  []
  [pull_x]
    type = DirichletBC
    variable = disp_x
    boundary = right
    value = 5e-4
  []
[]
[Materials]
  [elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    youngs_modulus = 1e11
    poissons_ratio = 0.3
  []
  [stress]
    type = ComputeMultipleInelasticStress
    inelastic_models = rom_stress_prediction
  []
  [rom_stress_prediction]
    type = LAROMANCE3TileTest
    temperature = temperature
    outputs = all
    initial_cell_dislocation_density = 5.7e12
    initial_wall_dislocation_density = 4.83e11
  []
[]
[Executioner]
  type = Transient
  solve_type = 'NEWTON'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  dt = 1e-5
  num_steps = 5
[]
[Postprocessors]
  [extrapolation]
    type = ElementAverageValue
    variable = ROM_extrapolation
    outputs = console
  []
  [temperature]
    type = ElementAverageValue
    variable = temperature
    outputs = 'console'
  []
  [partition_weight]
    type = ElementAverageMaterialProperty
    mat_prop = partition_weight
    outputs = 'console'
  []
  [creep_rate]
    type = ElementAverageMaterialProperty
    mat_prop = creep_rate
  []
  [rhom_rate]
    type = ElementAverageMaterialProperty
    mat_prop = cell_dislocation_rate
    outputs = 'console'
  []
  [rhoi_rate]
    type = ElementAverageMaterialProperty
    mat_prop = wall_dislocation_rate
    outputs = 'console'
  []
  [vonmises]
    type = ElementAverageValue
    variable = vonmises_stress
    outputs = 'console'
  []
  [nl_its]
    type = NumNonlinearIterations
    outputs = none
  []
  [total_nl_its]
    type = CumulativeValuePostprocessor
    postprocessor = nl_its
    outputs = 'console'
  []
[]
[Outputs]
  csv = true
  perf_graph = true
[]
(modules/combined/test/tests/subchannel_thm_coupling/THM_SCM_coupling.i)
# THM file based on https://mooseframework.inl.gov/modules/thermal_hydraulics/tutorials/single_phase_flow/step05.html
# Used to loosely couple THM with SCM
# This is a simple open loop with fixed massflow at the inlet and pressure at the outlet.
# THM sends massflux and temperature at the inlet of the core, and pressure at the outlet of the core
# to subchannel. Subchannel returns total pressure drop of the assembly and total power to THM and THM calculates an
# average friction factor for the core region.
T_in = 583.0 # K
m_dot_in = 1 # kg/s
press = 2e5 # Pa
SC_core = 0.0004980799633447909 #m2
# core parameters
core_length = 1. # m
core_n_elems = 1
A_core = 0.005 #dummy
# pipe parameters
pipe_dia = '${units 10. cm -> m}'
A_pipe = '${fparse 0.25 * pi * pipe_dia^2}'
# heat exchanger parameters
hx_dia_inner = '${units 12. cm -> m}'
hx_wall_thickness = '${units 5. mm -> m}'
hx_dia_outer = '${units 50. cm -> m}'
hx_radius_wall = '${fparse hx_dia_inner / 2. + hx_wall_thickness}'
hx_length = 1.5 # m
hx_n_elems = 25
m_dot_sec_in = 1. # kg/s
[GlobalParams]
  initial_p = ${press}
  initial_vel = 0.0001
  initial_T = ${T_in}
  initial_vel_x = 0
  initial_vel_y = 0
  initial_vel_z = 0
  gravity_vector = '0 0 0'
  rdg_slope_reconstruction = minmod
  scaling_factor_1phase = '1 1e-2 1e-4'
  scaling_factor_rhoV = 1
  scaling_factor_rhouV = 1e-2
  scaling_factor_rhovV = 1e-2
  scaling_factor_rhowV = 1e-2
  scaling_factor_rhoEV = 1e-4
  closures = thm_closures
  fp = sodium_eos
[]
[Functions]
  [q_wall_fn]
    type = ParsedFunction
    symbol_names = 'core_power length'
    symbol_values = 'core_power  ${core_length}'
    expression = 'core_power/length'
  []
[]
[FluidProperties]
  [water]
    type = StiffenedGasFluidProperties
    gamma = 2.35
    cv = 1816.0
    q = -1.167e6
    p_inf = 1.0e9
    q_prime = 0
  []
  [sodium_eos]
    type = StiffenedGasFluidProperties
    gamma = 1.24
    cv = 1052.8
    q = -2.6292e+05
    p_inf = 1.1564e+08
    q_prime = 0
    mu = 3.222e-04
    k = 73.82
  []
[]
[Closures]
  [thm_closures]
    type = Closures1PhaseTHM
  []
  [none_closures]
    type = Closures1PhaseNone
  []
[]
[Materials]
  [f_mat]
    type = ADParsedMaterial
    property_name = f_D
    postprocessor_names = 'core_f'
    expression = 'core_f'
    block = 'core_chan'
  []
[]
[HeatStructureMaterials]
  [steel]
    type = SolidMaterialProperties
    rho = 8050
    k = 45
    cp = 466
  []
[]
[Components]
  [inlet]
    type = InletMassFlowRateTemperature1Phase
    input = 'bottom_2:in'
    m_dot = ${m_dot_in}
    T = ${T_in}
  []
  [outlet]
    type = Outlet1Phase
    input = 'bottom_1:out'
    p = ${press}
  []
  [up_pipe_1]
    type = FlowChannel1Phase
    position = '0 0 -0.5'
    orientation = '0 0 1'
    length = 0.5
    n_elems = 15
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct1]
    type = JunctionParallelChannels1Phase
    position = '0 0 0'
    connections = 'up_pipe_1:out core_chan:in'
    volume = 1e-5
  []
  [core_chan]
    type = FlowChannel1Phase
    position = '0 0 0'
    orientation = '0 0 1'
    length = ${core_length}
    n_elems = ${core_n_elems}
    A = ${A_core}
    closures = none_closures
  []
  [core_ht]
    type = HeatTransferFromHeatFlux1Phase
    flow_channel = core_chan
    q_wall = q_wall_fn
    P_hf = 1
  []
  [jct2]
    type = JunctionParallelChannels1Phase
    position = '0 0 1'
    connections = 'core_chan:out up_pipe_2:in'
    volume = 1e-5
  []
  [up_pipe_2]
    type = FlowChannel1Phase
    position = '0 0 1'
    orientation = '0 0 1'
    length = 0.5
    n_elems = 10
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct3]
    type = JunctionOneToOne1Phase
    connections = 'up_pipe_2:out top_pipe_1:in'
  []
  [top_pipe_1]
    type = FlowChannel1Phase
    position = '0 0 1.5'
    orientation = '1 0 0'
    length = 0.5
    n_elems = 10
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [top_pipe_2]
    type = FlowChannel1Phase
    position = '0.5 0 1.5'
    orientation = '1 0 0'
    length = 0.5
    n_elems = 10
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct4]
    type = VolumeJunction1Phase
    position = '0.5 0 1.5'
    volume = 1e-5
    connections = 'top_pipe_1:out top_pipe_2:in'
  []
  [jct5]
    type = JunctionOneToOne1Phase
    connections = 'top_pipe_2:out down_pipe_1:in'
  []
  [down_pipe_1]
    type = FlowChannel1Phase
    position = '1 0 1.5'
    orientation = '0 0 -1'
    length = 0.25
    A = ${A_pipe}
    n_elems = 5
  []
  [jct6]
    type = JunctionParallelChannels1Phase
    position = '1 0 1.25'
    connections = 'down_pipe_1:out hx/pri:in'
    volume = 1e-5
  []
  [hx]
    [pri]
      type = FlowChannel1Phase
      position = '1 0 1.25'
      orientation = '0 0 -1'
      length = ${hx_length}
      n_elems = ${hx_n_elems}
      roughness = 1e-5
      A = '${fparse pi * hx_dia_inner * hx_dia_inner / 4.}'
      D_h = ${hx_dia_inner}
    []
    [ht_pri]
      type = HeatTransferFromHeatStructure1Phase
      hs = hx/wall
      hs_side = inner
      flow_channel = hx/pri
      P_hf = '${fparse pi * hx_dia_inner}'
    []
    [wall]
      type = HeatStructureCylindrical
      position = '1 0 1.25'
      orientation = '0 0 -1'
      length = ${hx_length}
      n_elems = ${hx_n_elems}
      widths = '${hx_wall_thickness}'
      n_part_elems = '3'
      materials = 'steel'
      names = '0'
      inner_radius = '${fparse hx_dia_inner / 2.}'
    []
    [ht_sec]
      type = HeatTransferFromHeatStructure1Phase
      hs = hx/wall
      hs_side = outer
      flow_channel = hx/sec
      P_hf = '${fparse 2 * pi * hx_radius_wall}'
    []
    [sec]
      type = FlowChannel1Phase
      position = '${fparse 1 + hx_wall_thickness} 0 -0.25'
      orientation = '0 0 1'
      length = ${hx_length}
      n_elems = ${hx_n_elems}
      A = '${fparse pi * (hx_dia_outer * hx_dia_outer / 4. - hx_radius_wall * hx_radius_wall)}'
      D_h = '${fparse hx_dia_outer - (2 * hx_radius_wall)}'
      fp = water
      initial_T = 300
    []
  []
  [jct7]
    type = JunctionParallelChannels1Phase
    position = '1 0 -0.25'
    connections = 'hx/pri:out down_pipe_2:in'
    volume = 1e-5
  []
  [down_pipe_2]
    type = FlowChannel1Phase
    position = '1 0 -0.25'
    orientation = '0 0 -1'
    length = 0.25
    n_elems = 10
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct8]
    type = JunctionOneToOne1Phase
    connections = 'down_pipe_2:out bottom_1:in'
  []
  [bottom_1]
    type = FlowChannel1Phase
    position = '1 0 -0.5'
    orientation = '-1 0 0'
    length = 0.5
    n_elems = 5
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [bottom_2]
    type = FlowChannel1Phase
    position = '0.5 0 -0.5'
    orientation = '-1 0 0'
    length = 0.5
    n_elems = 5
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct9]
    type = JunctionOneToOne1Phase
    connections = 'bottom_2:out up_pipe_1:in'
  []
  [inlet_sec]
    type = InletMassFlowRateTemperature1Phase
    input = 'hx/sec:in'
    m_dot = ${m_dot_sec_in}
    T = 300
  []
  [outlet_sec]
    type = Outlet1Phase
    input = 'hx/sec:out'
    p = 1e5
  []
[]
[Postprocessors]
  [power_to_coolant]
    type = ADHeatRateDirectFlowChannel
    q_wall_prop = q_wall
    block = core_chan
    P_hf = 1
  []
  [core_T_out]
    type = SideAverageValue
    boundary = core_chan:out
    variable = T
  []
  [T_out]
    type = SideAverageValue
    boundary = bottom_1:out
    variable = T
  []
  [core_p_in]
    type = SideAverageValue
    boundary = up_pipe_1:out
    variable = p
  []
  [core_p_out]
    type = SideAverageValue
    boundary = up_pipe_2:in
    variable = p
  []
  [core_delta_p]
    type = ParsedPostprocessor
    pp_names = 'core_p_in core_p_out'
    expression = 'core_p_in - core_p_out'
  []
  [hx_pri_T_out]
    type = SideAverageValue
    boundary = hx/pri:out
    variable = T
  []
  [hx_sec_T_in]
    type = SideAverageValue
    boundary = inlet_sec
    variable = T
  []
  [hx_sec_T_out]
    type = SideAverageValue
    boundary = outlet_sec
    variable = T
  []
  [m_dot_sec]
    type = ADFlowBoundaryFlux1Phase
    boundary = inlet_sec
    equation = mass
  []
  ############## Friction Factor Calculation #############
  [av_rhouA]
    type = ElementAverageValue
    variable = 'rhouA'
    block = 'core_chan'
  []
  [av_rho]
    type = ElementAverageValue
    variable = 'rho'
    block = 'core_chan'
  []
  [Kloss]
    type = ParsedPostprocessor
    pp_names = 'core_delta_p_tgt av_rhouA av_rho'
    expression = '2.0 * core_delta_p_tgt * av_rho * ${A_core} * ${A_core} / (av_rhouA * av_rhouA)'
  []
  [Dh]
    type = ADElementAverageMaterialProperty
    mat_prop = D_h
    block = core_chan
  []
  [core_f]
    type = ParsedPostprocessor
    pp_names = 'Kloss Dh'
    expression = 'Kloss * Dh / ${core_length}'
  []
  ### INFO to send to SC
  [outlet_pressure]
    type = SideAverageValue
    boundary = up_pipe_2:in
    variable = p
  []
  [inlet_mass_flow_rate]
    type = ADFlowJunctionFlux1Phase
    boundary = up_pipe_1:out
    connection_index = 0
    equation = mass
    junction = jct1
  []
  [inlet_temperature]
    type = SideAverageValue
    boundary = up_pipe_1:out
    variable = T
  []
  [inlet_mass_flux]
    type = ParsedPostprocessor
    pp_names = 'inlet_mass_flow_rate'
    expression = 'abs(inlet_mass_flow_rate/${SC_core})'
  []
  #####
  ##### Info received from subchannel
  [core_delta_p_tgt]
    type = Receiver
    default = 100
  []
  [core_power]
    type = Receiver
    default = 100
  []
[]
[Preconditioning]
  [pc]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  start_time = 0
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 0.01
  []
  # dtmax = 5
  end_time = 5
  line_search = basic
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_rel_tol = 1e-8
  nl_abs_tol = 1e-8
  nl_max_its = 25
[]
[Outputs]
  csv = true
  [console]
    type = Console
    max_rows = 1
    outlier_variable_norms = false
  []
  print_linear_residuals = false
[]
################################################################################
# A multiapp that couples THM to subchannel
################################################################################
[MultiApps]
  [subchannel]
    type = FullSolveMultiApp
    input_files = 'subchannel.i'
    execute_on = 'timestep_end'
    positions = '0 0 0'
    max_procs_per_app = 1
    output_in_position = true
    bounding_box_padding = '0 0 0.1'
  []
[]
[Transfers]
  [pressure_drop_transfer] # Get pressure drop to THM from subchannel
    type = MultiAppPostprocessorTransfer
    from_multi_app = subchannel
    from_postprocessor = total_pressure_drop_SC
    to_postprocessor = core_delta_p_tgt
    reduction_type = average
    execute_on = 'timestep_end'
  []
  [power_transfer] # Get Total power to THM from subchannel
    type = MultiAppPostprocessorTransfer
    from_multi_app = subchannel
    from_postprocessor = Total_power
    to_postprocessor = core_power
    reduction_type = average
    execute_on = 'timestep_end'
  []
  [mass_flux_tranfer] # Send mass_flux at the inlet of THM core to subchannel
    type = MultiAppPostprocessorTransfer
    to_multi_app = subchannel
    from_postprocessor = inlet_mass_flux
    to_postprocessor = report_mass_flux_inlet
    execute_on = 'timestep_end'
  []
  [outlet_pressure_tranfer] # Send pressure at the outlet of THM core to subchannel
    type = MultiAppPostprocessorTransfer
    to_multi_app = subchannel
    from_postprocessor = outlet_pressure
    to_postprocessor = report_pressure_outlet
    execute_on = 'timestep_end'
  []
  [inlet_temperature_transfer]
    type = MultiAppPostprocessorTransfer
    to_multi_app = subchannel
    from_postprocessor = inlet_temperature
    to_postprocessor = report_temperature_inlet
    execute_on = 'timestep_end'
  []
[]
(modules/solid_mechanics/test/tests/neml2/laromance/laromance_interpolate.i)
sample_file = "models/sampled_combinations.csv"
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 1
  []
[]
[Variables]
  [dummy_var]
  []
[]
[Problem]
  kernel_coverage_check = false
[]
[Functions]
  [vmStress_fcn]
    type = PiecewiseConstant
    data_file = ${sample_file}
    x_index_in_file = 0
    y_index_in_file = 1
    format = columns
    xy_in_file_only = false
    direction = LEFT_INCLUSIVE
  []
  [temperature_fcn]
    type = PiecewiseConstant
    data_file = ${sample_file}
    x_index_in_file = 0
    y_index_in_file = 2
    format = columns
    xy_in_file_only = false
    direction = LEFT_INCLUSIVE
  []
  [epStrain_fcn]
    type = PiecewiseConstant
    data_file = ${sample_file}
    x_index_in_file = 0
    y_index_in_file = 3
    format = columns
    xy_in_file_only = false
    direction = LEFT_INCLUSIVE
  []
  [celldd_fcn]
    type = PiecewiseConstant
    data_file = ${sample_file}
    x_index_in_file = 0
    y_index_in_file = 4
    format = columns
    xy_in_file_only = false
    direction = LEFT_INCLUSIVE
  []
  [walldd_fcn]
    type = PiecewiseConstant
    data_file = ${sample_file}
    x_index_in_file = 0
    y_index_in_file = 5
    format = columns
    xy_in_file_only = false
    direction = LEFT_INCLUSIVE
  []
  [env_fcn]
    type = PiecewiseConstant
    data_file = ${sample_file}
    x_index_in_file = 0
    y_index_in_file = 6
    format = columns
    xy_in_file_only = false
    direction = LEFT_INCLUSIVE
  []
[]
[Materials]
  [in_materials]
    type = GenericFunctionMaterial
    prop_names = 'vmStress temperature epStrain celldd walldd env'
    prop_values = 'vmStress_fcn temperature_fcn epStrain_fcn celldd_fcn walldd_fcn env_fcn'
  []
[]
[NEML2]
  input = 'models/laromance_matl_interp.i'
  [all]
    model = 'combined_model'
    verbose = true
    device = 'cpu'
    moose_input_types = 'MATERIAL MATERIAL MATERIAL MATERIAL MATERIAL MATERIAL'
    moose_inputs =      'epStrain vmStress temperature celldd walldd env'
    neml2_inputs =      'state/ep state/s forces/T forces/cell_dd forces/wall_dd forces/env_fac'
    moose_output_types = 'MATERIAL MATERIAL MATERIAL'
    moose_outputs = 'ep_rate cell_rate wall_rate'
    neml2_outputs = 'state/ep_rate state/cell_rate state/wall_rate'
  []
[]
[Executioner]
  type = Transient
  nl_abs_tol = 1e-1 # Nothing is really being solved here, so loose tolerances are okay
  dt = 1
  dtmin=1
  end_time = 40
  timestep_tolerance = 1e-3
[]
[Postprocessors]
  [cell_rate_pp]
    type = ElementAverageMaterialProperty
    mat_prop = cell_rate
  []
  [wall_rate_pp]
    type = ElementAverageMaterialProperty
    mat_prop = wall_rate
  []
  [creep_rate_pp]
    type = ElementAverageMaterialProperty
    mat_prop = ep_rate
  []
[]
[Outputs]
  csv = true
  execute_on = 'INITIAL TIMESTEP_END FINAL'
[]
(modules/solid_mechanics/test/tests/scalar_material_damage/nonlocal_scalar_damage.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  xmin = -0.5
  xmax = 0.5
  nx = 5
  ny = 5
  nz = 5
  elem_type = HEX8
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = SMALL
    incremental = true
    add_variables = true
    generate_output = 'stress_xx strain_xx'
  []
[]
[BCs]
  [symmy]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0
  []
  [symmx]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [symmz]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0
  []
  [axial_load]
    type = DirichletBC
    variable = disp_x
    boundary = right
    value = 0.01
  []
[]
[Functions]
  [func]
    type = ParsedFunction
    expression = 'if(x>=0,0.5*t, t)'
  []
[]
[UserObjects]
  [ele_avg]
    type = RadialAverage
    prop_name = local_damage
    weights = constant
    execute_on = "INITIAL timestep_end"
    radius = 0.55
  []
[]
[Materials]
  [local_damage_index]
    type = GenericFunctionMaterial
    prop_names = local_damage_index
    prop_values = func
  []
  [local_damage]
    type = ScalarMaterialDamage
    damage_index = local_damage_index
    damage_index_name = local_damage
  []
  [damage]
    type = NonlocalDamage
    average_UO = ele_avg
    local_damage_model = local_damage
    damage_index_name = nonlocal_damage
  []
  [stress]
    type = ComputeDamageStress
    damage_model = damage
  []
  [elasticity]
    type = ComputeIsotropicElasticityTensor
    poissons_ratio = 0.2
    youngs_modulus = 10e9
  []
[]
[Postprocessors]
  [stress_xx]
    type = ElementAverageValue
    variable = stress_xx
  []
  [strain_xx]
    type = ElementAverageValue
    variable = strain_xx
  []
  [nonlocal_damage]
    type = ElementAverageMaterialProperty
    mat_prop = nonlocal_damage
  []
  [local_damage]
    type = ElementAverageMaterialProperty
    mat_prop = local_damage
  []
[]
[Executioner]
  type = Transient
  l_max_its = 50
  l_tol = 1e-8
  nl_max_its = 20
  nl_rel_tol = 1e-12
  nl_abs_tol = 1e-8
  dt = 0.2
  dtmin = 0.1
  end_time = 1
[]
[Outputs]
  csv = true
[]
(modules/solid_mechanics/test/tests/eigen_decomp_material/prescribed_strain_3D.i)
[Debug]
  show_material_props = true
[]
[Problem]
  kernel_coverage_check = false
  solve = false
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  nx = 1
  ny = 1
  nz = 1
  displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
  [disp_y]
    initial_condition = 0
  []
  [disp_x]
    initial_condition = 0
  []
  [disp_z]
    initial_condition = 0
  []
[]
[AuxKernels]
  # The applied displacements will cause the max eigenvector to change directions.
  # At t=5, the body undergoes simple shear, producing a nonsymmetric deformation gradient.
  [disp_x]
    execute_on = 'TIMESTEP_BEGIN'
    type = ParsedAux
    variable = disp_x
    use_xyzt = true
    expression = "if(t<4.1,4e-1*x*t,x)"
  []
  [disp_y]
    execute_on = 'TIMESTEP_BEGIN'
    type = ParsedAux
    variable = disp_y
    use_xyzt = true
    expression = "if(t<4.1,3e-1*y*t^2,1e-1*y*t+1e-1*x*t)"
  []
  [disp_z]
    execute_on = 'TIMESTEP_BEGIN'
    type = ParsedAux
    variable = disp_z
    use_xyzt = true
    expression = "if(t<4.1,1e-1*z*t^3,z)"
  []
[]
[Materials]
  [compute_strain]
    type = ComputeLagrangianStrain
    displacements = 'disp_x disp_y disp_z'
    large_kinematics = true
  []
  [nonAD_strain]
    type = RankTwoTensorMaterialADConverter
    reg_props_in = mechanical_strain
    ad_props_out = AD_mechanical_strain
  []
  [eig_decomp]
    type = ADEigenDecompositionMaterial
    rank_two_tensor = AD_mechanical_strain
    outputs = exodus
    output_properties = "max_eigen_vector mid_eigen_vector min_eigen_vector max_eigen_value "
                        "mid_eigen_value min_eigen_value"
  []
  [nonADeig_decomp]
    type = EigenDecompositionMaterial
    rank_two_tensor = mechanical_strain
    base_name = nonAD
    outputs = exodus
    output_properties = "nonAD_max_eigen_vector nonAD_mid_eigen_vector nonAD_min_eigen_vector "
                        "nonAD_max_eigen_value nonAD_mid_eigen_value nonAD_min_eigen_value"
  []
  [non_symmetric_eig_decomp_error]
    type = EigenDecompositionMaterial
    rank_two_tensor = deformation_gradient
    base_name = nonSym
  []
[]
[BCs]
[]
[Executioner]
  type = Transient
  solve_type = LINEAR
  dt = 1
  end_time = 5
[]
[Postprocessors]
  [sxx]
    type = MaterialTensorAverage
    rank_two_tensor = mechanical_strain
    index_i = 0
    index_j = 0
    execute_on = 'TIMESTEP_END'
  []
  [sxy]
    type = MaterialTensorAverage
    rank_two_tensor = mechanical_strain
    index_i = 0
    index_j = 1
    execute_on = 'TIMESTEP_END'
  []
  [syy]
    type = MaterialTensorAverage
    rank_two_tensor = mechanical_strain
    index_i = 1
    index_j = 1
  []
  [szz]
    type = MaterialTensorAverage
    rank_two_tensor = mechanical_strain
    index_i = 1
    index_j = 0
  []
  [AD_eigval_max]
    type = ADElementAverageMaterialProperty
    mat_prop = max_eigen_value
  []
  [AD_eigval_mid]
    type = ADElementAverageMaterialProperty
    mat_prop = mid_eigen_value
  []
  [AD_eigval_min]
    type = ADElementAverageMaterialProperty
    mat_prop = min_eigen_value
  []
  [nonAD_eigval_max]
    type = ElementAverageMaterialProperty
    mat_prop = nonAD_max_eigen_value
  []
  [nonAD_eigval_mid]
    type = ElementAverageMaterialProperty
    mat_prop = nonAD_mid_eigen_value
  []
  [nonAD_eigval_min]
    type = ElementAverageMaterialProperty
    mat_prop = nonAD_min_eigen_value
  []
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/eigen_decomp_material/pipe_2d.i)
# pipe with outer diameter = 24", wall thickness 0.979"
# units in MPa, meters
[GlobalParams]
  order = SECOND
  family = LAGRANGE
  displacements = 'disp_x disp_y'
[]
[Mesh]
  coord_type = RZ
  [pipe]
    type = GeneratedMeshGenerator
    dim = 2
    xmin = 0.2799334 #12"-0.979"
    xmax = .3048 #12"
    ymin = 0
    ymax = 0.00497 #0.979"/5
    nx = 5
    ny = 1
    elem_type = quad9
  []
[]
[Variables]
  [disp_x]
  []
  [disp_y]
  []
[]
[Physics]
  [SolidMechanics]
    [QuasiStatic]
      [all]
        strain = SMALL
        add_variables = true
        new_system = true
        formulation = TOTAL
        volumetric_locking_correction = false
      []
    []
  []
[]
[Functions]
  [inner_pressure]
    type = ConstantFunction
    value = 3
  []
  [big_pipe]
    type = ParsedFunction
    expression = -(p*11.021*11.021)/(12*12-11.021*11.021)
    symbol_names = 'p'
    symbol_values = 3
  []
[]
[BCs]
  [fixBottom]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0.0
    preset = true
  []
  [Pressure]
    [inside]
      boundary = left
      function = inner_pressure
    []
    [axial]
      boundary = top
      function = big_pipe
    []
  []
[]
[Constraints]
  [top]
    type = EqualValueBoundaryConstraint
    variable = disp_y
    secondary = top
    penalty = 1e+14
    formulation = penalty
  []
[]
[Materials]
  [elastic_tensor]
    type = ComputeIsotropicElasticityTensor
    youngs_modulus = 168000
    poissons_ratio = 0.31
  []
  [compute_stress]
    type = ComputeLagrangianLinearElasticStress
  []
  [nonADeig_decomp]
    type = EigenDecompositionMaterial
    rank_two_tensor = cauchy_stress
    outputs = exodus
    output_properties = "max_eigen_vector mid_eigen_vector min_eigen_vector "
                        "max_eigen_valuemid_eigen_value min_eigen_value"
  []
[]
[Executioner]
  type = Steady
  solve_type = 'NEWTON'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
  petsc_options_value = 'lu       superlu_dist'
  nl_rel_tol = 5e-8
  line_search = NONE
[]
[Postprocessors]
  [eigval_max]
    type = ElementAverageMaterialProperty
    mat_prop = max_eigen_value
  []
[]
[Outputs]
  exodus = on
  console = true
[]
(modules/thermal_hydraulics/test/tests/materials/wall_friction_factor/churchill.i)
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
  allow_renumbering = false
[]
[Variables]
  [rhoA]
  []
  [rhouA]
  []
  [rhoEA]
  []
[]
[Materials]
  [props]
    type = GenericConstantMaterial
    prop_names = 'rho vel D_h mu '
    prop_values = '1000 0.1 0.15 0.001'
  []
  [fD_material]
    type = WallFrictionChurchillMaterial
    rho = rho
    vel = vel
    D_h = D_h
    mu = mu
    f_D = 'f_D'
    rhoA = rhoA
    rhouA = rhouA
    rhoEA = rhoEA
    roughness = 0.5
  []
[]
[Postprocessors]
  [fD]
    type = ElementAverageMaterialProperty
    mat_prop = f_D
  []
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Transient
  num_steps = 1
[]
[Outputs]
  csv = true
  execute_on = 'FINAL'
[]
(modules/thermal_hydraulics/test/tests/closures/THM_1phase/thm1phase.i)
D = 0.1
A = '${fparse (1./4.)*pi*D^2}'
P_hf = '${fparse pi*D}'
D_h = '${fparse 4*A/P_hf}'
mdot = 0.04
file_base = 'db_churchill'
[GlobalParams]
  gravity_vector = '0 0 0'
  initial_vel = 0.003
  initial_p = 1e5
  initial_T = 300
  D_h = ${D_h}
  A = ${A}
  P_hf = ${P_hf}
  m_dot = ${mdot}
  closures = thm
  execute_on = 'initial timestep_begin'
[]
[FluidProperties]
  [water]
    type = StiffenedGasFluidProperties
    gamma = 2.35
    cv = 1816.0
    q = -1.167e6
    p_inf = 1.0e9
    q_prime = 0
    k = 0.56361
    mu = 8.84e-05
  []
[]
[Closures]
  [thm]
    type = Closures1PhaseTHM
    wall_htc_closure = dittus_boelter
    wall_ff_closure = churchill
  []
[]
[Components]
  [pipe]
    type = FlowChannel1Phase
    fp = water
    position = '0 0 0'
    orientation = '1 0 0'
    length = 1
    n_elems = 10
  []
  #--------------Pipe BCs-------------#
  [inlet]
    type = InletMassFlowRateTemperature1Phase
    input = 'pipe:in'
    T = 300
  []
  [outlet]
    type = Outlet1Phase
    input = 'pipe:out'
    p = 1e5
  []
  [ht]
    type = HeatTransferFromSpecifiedTemperature1Phase
    flow_channel = 'pipe'
    T_wall = 500
  []
[]
[Preconditioning]
  [pc]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  num_steps = 1
  dt = 1e-5
[]
[Postprocessors]
  [Hw]
    type = ADElementAverageMaterialProperty
    mat_prop = Hw
  []
  [f]
    type = ADElementAverageMaterialProperty
    mat_prop = f_D
    block = pipe
  []
[]
[Outputs]
  csv = true
  file_base = ${file_base}
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/hcp_volumetric_eigenstrain_decrease.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  nx = 2
  ny = 2
  nz = 2
  elem_type = HEX8
[]
[AuxVariables]
  [temperature]
    order = FIRST
    family = LAGRANGE
  []
  [e_void_xx]
    order = CONSTANT
    family = MONOMIAL
  []
  [e_void_yy]
    order = CONSTANT
    family = MONOMIAL
  []
  [e_void_zz]
    order = CONSTANT
    family = MONOMIAL
  []
  [f_void_zz]
    order = CONSTANT
    family = MONOMIAL
  []
  [fp_zz]
    order = CONSTANT
    family = MONOMIAL
  []
  [resolved_shear_stress_3]
    order = CONSTANT
    family = MONOMIAL
  []
  [resolved_shear_stress_4]
    order = CONSTANT
    family = MONOMIAL
  []
  [resolved_shear_stress_9]
    order = CONSTANT
    family = MONOMIAL
  []
  [resolved_shear_stress_14]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Physics/SolidMechanics/QuasiStatic/all]
  strain = FINITE
  incremental = true
  add_variables = true
[]
[AuxKernels]
  [temperature]
    type = FunctionAux
    variable = temperature
    function = '300+400*t' # temperature increases at a constant rate
    execute_on = timestep_begin
  []
  [e_void_xx]
    type = RankTwoAux
    variable = e_void_xx
    rank_two_tensor = void_eigenstrain
    index_j = 0
    index_i = 0
    execute_on = timestep_end
  []
  [e_void_yy]
    type = RankTwoAux
    variable = e_void_yy
    rank_two_tensor = void_eigenstrain
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  []
  [e_void_zz]
    type = RankTwoAux
    variable = e_void_zz
    rank_two_tensor = void_eigenstrain
    index_j = 2
    index_i = 2
    execute_on = timestep_end
  []
  [f_void_zz]
    type = RankTwoAux
    variable = f_void_zz
    rank_two_tensor = volumetric_deformation_gradient
    index_j = 2
    index_i = 2
    execute_on = timestep_end
  []
  [fp_zz]
    type = RankTwoAux
    variable = fp_zz
    rank_two_tensor = plastic_deformation_gradient
    index_j = 2
    index_i = 2
    execute_on = timestep_end
  []
  [tau_3]
    type = MaterialStdVectorAux
    variable = resolved_shear_stress_3
    property = applied_shear_stress
    index = 3
    execute_on = timestep_end
  []
  [tau_4]
    type = MaterialStdVectorAux
    variable = resolved_shear_stress_4
    property = applied_shear_stress
    index = 4
    execute_on = timestep_end
  []
  [tau_9]
    type = MaterialStdVectorAux
    variable = resolved_shear_stress_9
    property = applied_shear_stress
    index = 9
    execute_on = timestep_end
  []
  [tau_14]
    type = MaterialStdVectorAux
    variable = resolved_shear_stress_14
    property = applied_shear_stress
    index = 14
    execute_on = timestep_end
  []
[]
[BCs]
  [symmy]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0
  []
  [symmx]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [symmz]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0
  []
  [tdisp]
    type = DirichletBC
    variable = disp_z
    boundary = front
    value = 0
  []
[]
[Materials]
  [elasticity_tensor]
    type = ComputeElasticityTensorCP
    C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
    fill_method = symmetric9
  []
  [stress]
    type = ComputeMultipleCrystalPlasticityStress
    crystal_plasticity_models = 'trial_xtalpl'
    eigenstrain_names = void_eigenstrain
    tan_mod_type = exact
    maximum_substep_iteration = 5
  []
  [trial_xtalpl]
    type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
    number_slip_systems = 15
    slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
    unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
    temperature = temperature
    initial_forest_dislocation_density = 15.0e3
    initial_substructure_density = 1.0e3
    slip_system_modes = 2
    number_slip_systems_per_mode = '3 12'
    lattice_friction_per_mode = '9 22' #Knezevic et al MSEA 654 (2013)
    effective_shear_modulus_per_mode = '4.7e2 4.7e2' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
    burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
    slip_generation_coefficient_per_mode = '1.25e5 2.25e7' #from Beyerlein and Tome 2008 IJP
    normalized_slip_activiation_energy_per_mode = '3.73e-3 3.2e-2' #from Beyerlein and Tome 2008 IJP
    slip_energy_proportionality_factor_per_mode = '330 100' #from Beyerlein and Tome 2008 IJP
    substructure_rate_coefficient_per_mode = '355 0.4' #from Capolungo et al MSEA (2009)
    applied_strain_rate = 0.001
    gamma_o = 1.0e-3
    Hall_Petch_like_constant_per_mode = '0.2 0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
    grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
  []
  [void_eigenstrain]
    type = ComputeCrystalPlasticityVolumetricEigenstrain
    eigenstrain_name = void_eigenstrain
    deformation_gradient_name = volumetric_deformation_gradient
    mean_spherical_void_radius = void_radius
    spherical_void_number_density = void_density
  []
  [void_radius]
    type = ParsedMaterial
    property_name = void_radius
    coupled_variables = temperature
    expression = 'if(temperature<321.0, 1.0e-5, (1.0e-5  - 5.0e-8 * (temperature - 320)))' #mm
  []
  [void_density]
    type = GenericConstantMaterial
    prop_names = void_density
    prop_values = '1.0e8'  ###1/mm^3
  []
[]
[Postprocessors]
  [e_void_xx]
    type = ElementAverageValue
    variable = e_void_xx
  []
  [e_void_yy]
    type = ElementAverageValue
    variable = e_void_yy
  []
  [e_void_zz]
    type = ElementAverageValue
    variable = e_void_zz
  []
  [f_void_zz]
    type = ElementAverageValue
    variable = f_void_zz
  []
  [void_density]
    type = ElementAverageMaterialProperty
    mat_prop = void_density
    execute_on = TIMESTEP_END
  []
  [void_radius]
    type = ElementAverageMaterialProperty
    mat_prop = void_radius
    execute_on = TIMESTEP_END
  []
  [fp_zz]
    type = ElementAverageValue
    variable = fp_zz
  []
  [tau_3]
    type = ElementAverageValue
    variable = resolved_shear_stress_3
  []
  [tau_4]
    type = ElementAverageValue
    variable = resolved_shear_stress_4
  []
  [tau_9]
    type = ElementAverageValue
    variable = resolved_shear_stress_9
  []
  [tau_14]
    type = ElementAverageValue
    variable = resolved_shear_stress_14
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Debug]
  show_var_residual_norms = true
[]
[Executioner]
  type = Transient
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason'
  petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
  petsc_options_value = ' asm      2              lu            gmres     200'
  nl_abs_tol = 1e-10
  nl_rel_tol = 1e-8
  nl_abs_step_tol = 1e-10
  dt = 0.05
  dtmin = 1e-4
  num_steps = 10
[]
[Outputs]
  csv = true
  perf_graph = true
[]
(modules/solid_mechanics/test/tests/rom_stress_update/3tile.i)
# Tests the tile and partition assembly for overlapping partitions and
# a variety of different overlapping tile conditions.
# Creep_rate should always be 2.718281828459
endtime = 1.9
[Mesh]
  type = GeneratedMesh
  dim = 3
[]
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
  [temperature]
  []
[]
[AuxKernels]
  [temp_aux]
    type = FunctionAux
    variable = temperature
    function = temp_fcn
    execute_on = 'initial timestep_begin'
  []
[]
[Functions]
  [rhom_fcn]
    type = PiecewiseConstant
    x = '0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9'
    y = '5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12 5.7e12'
    direction = LEFT_INCLUSIVE
  []
  [rhoi_fcn]
    type = PiecewiseConstant
    x = '0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9'
    y = '4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11 4.83e11'
    direction = LEFT_INCLUSIVE
  []
  [vmJ2_fcn]
    type = PiecewiseConstant
    x = '0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9'
    y = '25.68 25.68 45.0 55.28 63.0 67.12 85.0 85.0 85.0 85.0 85.0 85.0 55.28 63.0 67.12 63.0 63.0 55.28 96.72 63.0'
    direction = LEFT_INCLUSIVE
  []
  [evm_fcn]
    type = PiecewiseConstant
    x = '0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9'
    y = '0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01'
    direction = LEFT_INCLUSIVE
  []
  [temp_fcn]
    type = PiecewiseConstant
    x = '0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9'
    y = '940.0 940.0 940.0 940.0 940.0 940.0 940.0 905.0 897.0 881.0 860.0 821.0 860.0 881.0 897.0 897.0 905.0 897.0 860.0 860.0'
    direction = LEFT_INCLUSIVE
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = FINITE
    add_variables = true
    generate_output = 'vonmises_stress'
  []
[]
[BCs]
  [symmx]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [symmy]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0
  []
  [symmz]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0
  []
  [pull_x]
    type = DirichletBC
    variable = disp_x
    boundary = right
    value = 1e-5 # This is required to make a non-zero effective trial stress so radial return is engaged
  []
[]
[Materials]
  [elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    shear_modulus = 1e13
    poissons_ratio = 0.3
  []
  [stress]
    type = ComputeMultipleInelasticStress
    inelastic_models = rom_stress_prediction
  []
  [rom_stress_prediction]
    type = LAROMANCE3TileTest
    temperature = temperature
    effective_inelastic_strain_name = effective_creep_strain
    internal_solve_full_iteration_history = true
    apply_strain = false
    outputs = all
    verbose = true
    wall_dislocation_density_forcing_function = rhoi_fcn
    cell_dislocation_density_forcing_function = rhom_fcn
    old_creep_strain_forcing_function = evm_fcn
    wall_input_window_low_failure = ERROR
    wall_input_window_high_failure = ERROR
    cell_input_window_low_failure = ERROR
    cell_input_window_high_failure = ERROR
    temperature_input_window_low_failure = DONOTHING
    temperature_input_window_high_failure = ERROR
    stress_input_window_low_failure = DONOTHING
    stress_input_window_high_failure = ERROR
    old_strain_input_window_low_failure = ERROR
    old_strain_input_window_high_failure = ERROR
    environment_input_window_low_failure = ERROR
    environment_input_window_high_failure = ERROR
    effective_stress_forcing_function = vmJ2_fcn
  []
[]
[Executioner]
  type = Transient
  solve_type = 'NEWTON'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_abs_tol = 1e-1 # Nothing is really being solved here, so loose tolerances are okay
  dt = 0.1
  end_time = ${endtime}
  timestep_tolerance = 1e-3
[]
[Postprocessors]
  [extrapolation]
    type = ElementAverageValue
    variable = ROM_extrapolation
    outputs = console
  []
  [old_strain_in]
    type = FunctionValuePostprocessor
    function = evm_fcn
    execute_on = 'TIMESTEP_END initial'
    outputs = console
  []
  [temperature]
    type = ElementAverageValue
    variable = temperature
  []
  [partition_weight]
    type = ElementAverageMaterialProperty
    mat_prop = partition_weight
  []
  [rhom_in]
    type = FunctionValuePostprocessor
    function = rhom_fcn
    execute_on = 'TIMESTEP_END initial'
    outputs = console
  []
  [rhoi_in]
    type = FunctionValuePostprocessor
    function = rhoi_fcn
    execute_on = 'TIMESTEP_END initial'
    outputs = console
  []
  [vmJ2_in]
    type = FunctionValuePostprocessor
    function = vmJ2_fcn
    execute_on = 'TIMESTEP_END initial'
  []
  [creep_rate]
    type = ElementAverageMaterialProperty
    mat_prop = creep_rate
  []
  [rhom_rate]
    type = ElementAverageMaterialProperty
    mat_prop = cell_dislocation_rate
  []
  [rhoi_rate]
    type = ElementAverageMaterialProperty
    mat_prop = wall_dislocation_rate
  []
[]
[Outputs]
  csv = true
  execute_on = 'INITIAL TIMESTEP_END FINAL'
[]
(modules/stochastic_tools/test/tests/multiapps/batch_commandline_control/sub.i)
[Mesh]
  type = GeneratedMesh
  dim = 1
[]
[Variables]
  [u]
    initial_condition = 1980
  []
[]
[Problem]
  type = FEProblem
  solve = false
[]
[Executioner]
  type = Steady
[]
[Materials]
  [const]
    type = GenericConstantMaterial
    prop_names = 'A B C D'
    prop_values = '1.0 2.0 3.0 4.0'
  []
[]
[Postprocessors]
  [size]
    type = AverageElementSize
    execute_on = 'initial'
  []
  [prop_A]
    type = ElementAverageMaterialProperty
    mat_prop = A
    execute_on = 'initial'
  []
  [prop_B]
    type = ElementAverageMaterialProperty
    mat_prop = B
    execute_on = 'initial'
  []
  [prop_C]
    type = ElementAverageMaterialProperty
    mat_prop = C
    execute_on = 'initial'
  []
  [prop_D]
    type = ElementAverageMaterialProperty
    mat_prop = D
    execute_on = 'initial'
  []
[]
(test/tests/batch_material/test.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 100
    ny = 100
  []
[]
[Variables]
  [v]
  []
[]
[Kernels]
  [dt]
    type = TimeDerivative
    variable = v
  []
  [diff]
    type = Diffusion
    variable = v
  []
[]
[BCs]
  [left]
    type = DirichletBC
    variable = v
    boundary = left
    value = 0
  []
  [right]
    type = DirichletBC
    variable = v
    boundary = right
    value = 1
  []
[]
[UserObjects]
  [batch]
    type = BatchMaterialTest
    var1 = v
    prop1 = tensor
    prop2 = number
    execute_on = 'LINEAR'
  []
[]
[Materials]
  [prop1]
    type = GenericConstantRankTwoTensor
    tensor_name = tensor
    tensor_values = '1 2 3 4 5 6 7 8 9'
  []
  [prop2]
    type = GenericFunctionMaterial
    prop_names = number
    prop_values = 'x^2+sin(y*3)+cos(t*10)'
  []
  [test]
    type = BatchTestMaterial
    var1 = v
    prop1 = tensor
    prop2 = number
    batch_uo = batch
  []
[]
[Postprocessors]
  [average1]
    type = ElementAverageMaterialProperty
    mat_prop = batch_out1
  []
  [average2]
    type = ElementAverageMaterialProperty
    mat_prop = batch_out2
  []
[]
[Executioner]
  type = Transient
  solve_type = NEWTON
  dt = 0.1
  num_steps = 3
[]
(modules/solid_properties/test/tests/materials/constant_density_thermal_solid_properties/constant_density_thermal_solid_properties.i)
# The gold density value should reflect the reference temperature value, not
# the temperature variable value.
T_initial = 300
T_ref = 500
[GlobalParams]
  execute_on = 'INITIAL'
[]
[Mesh]
  type = GeneratedMesh
  dim = 1
  xmin = 0
  xmax = 1
  nx = 1
[]
[SolidProperties]
  [ss316_sp]
    type = ThermalSS316Properties
  []
[]
[Materials]
  [sp_mat]
    type = ADConstantDensityThermalSolidPropertiesMaterial
    temperature = T
    sp = ss316_sp
    T_ref = ${T_ref}
  []
[]
[AuxVariables]
  [T]
    family = MONOMIAL
    order = CONSTANT
  []
[]
[AuxKernels]
  [T_ak]
    type = ConstantAux
    variable = T
    value = ${T_initial}
  []
[]
[Postprocessors]
  [density]
    type = ADElementAverageMaterialProperty
    mat_prop = density
  []
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Steady
[]
[Outputs]
  csv = true
[]
(modules/thermal_hydraulics/test/tests/closures/wall_temperature_1phase/multiple.i)
!include base.i
[Materials]
  [f_Hw_mat]
    type = ADGenericConstantMaterial
    block = 'pipe'
    prop_names = 'f_D Hw:1 Hw:2'
    prop_values = '0 100 100'
  []
[]
[Components]
  [ht2]
    type = HeatTransferFromSpecifiedTemperature1Phase
    flow_channel = pipe
    T_wall = 700
  []
[]
[Postprocessors]
  [T_wall_1]
    type = ADElementAverageMaterialProperty
    mat_prop = T_wall:1
    execute_on = 'INITIAL'
  []
  [T_wall_2]
    type = ADElementAverageMaterialProperty
    mat_prop = T_wall:2
    execute_on = 'INITIAL'
  []
[]
(tutorials/darcy_thermo_mech/step10_multiapps/problems/step10_micro.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 10
    ny = 10
    ymax = 0.1
    xmax = 0.1
  []
  uniform_refine = 0
[]
[Adaptivity]
  max_h_level = 4
  initial_steps = 6
  initial_marker = error_marker
  cycles_per_step = 2
  marker = error_marker
  [Indicators/phi_jump]
    type = GradientJumpIndicator
    variable = phi
  []
  [Markers/error_marker]
    type = ErrorFractionMarker
    indicator = phi_jump
    refine = 0.8
    coarsen = 0.1
  []
[]
[Variables/temperature]
  initial_condition = 300
[]
[AuxVariables/phi]
[]
[AuxKernels/corrosion]
  type = RandomCorrosion
  variable = phi
  reference_temperature = 300
  temperature = temperature_in
  execute_on = 'INITIAL TIMESTEP_END'
[]
[Kernels/heat_conduction]
  type = ADHeatConduction
  variable = temperature
[]
[BCs]
  [left]
    type = PostprocessorDirichletBC
    variable = temperature
    boundary = left
    postprocessor = temperature_in
  []
  [right]
    type = NeumannBC
    variable = temperature
    boundary = right
    value = 100 # prescribed flux
  []
[]
[Materials/column]
  type = PackedColumn
  temperature = temperature
  radius = 1 # mm
  phase = phi
[]
[Postprocessors]
  [temperature_in]
    type = Receiver
    default = 301
  []
  [k_eff]
    type = ThermalConductivity
    variable = temperature
    T_hot = temperature_in
    flux = 100
    dx = 0.1
    boundary = right
    length_scale = 1
    k0 = 12.05
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [average_porosity]
    type = ADElementAverageMaterialProperty
    mat_prop = porosity
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [t_right]
    type = SideAverageValue
    boundary = right
    variable = temperature
    execute_on = 'INITIAL TIMESTEP_END'
  []
[]
[Executioner]
  type = Transient
  end_time = 1000
  dt = 1
  steady_state_tolerance = 1e-9
  steady_state_detection = true
  solve_type = NEWTON
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
  automatic_scaling = true
[]
[Outputs]
  execute_on = 'initial timestep_end'
  exodus = true
[]
[ICs/close_pack]
  radius = 0.01 # meter
  outvalue = 0 # water
  variable = phi
  invalue = 1 # steel
  type = ClosePackIC
[]
(test/tests/materials/projected_stateful_materials/test.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 4
    ny = 4
  []
[]
[Variables]
  [u]
  []
[]
[Kernels]
  [diff]
    type = Diffusion
    variable = u
  []
[]
[ProjectedStatefulMaterialStorage]
  [all]
    projected_props = 'test_real test_realvectorvalue test_ranktwotensor test_rankfourtensor'
    family = MONOMIAL
    order = FIRST
  []
[]
[Materials]
  [test]
    type = ProjectedStatefulPropertiesTestMaterial
  []
[]
[Postprocessors]
  [average_diff]
    type = ElementAverageMaterialProperty
    mat_prop = diff_norm
  []
[]
[Executioner]
  type = Transient
  num_steps = 4
[]
[Debug]
  show_material_props = true
[]
[Outputs]
  csv = true
  # in initial the freshly set up old state of the material properties differes
  # from the interpolated state as the MAT->AUX->MAT dependency cannot be
  # resolved (as both the computation of the current state as well as the
  # testing are done in the same material object)
  execute_on = 'TIMESTEP_END'
[]
(test/tests/interfaces/coupleable/coupled_dots.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 1
    nx = 2
  []
[]
[Functions]
  [linear]
    type = ParsedFunction
    expression = 'x + 10*t + 2*t*t'
  []
[]
[AuxVariables]
  [base]
    family = MONOMIAL
    order = CONSTANT
  []
[]
[AuxKernels]
  [base_aux]
    type = FunctionAux
    function = 'linear'
    variable = 'base'
  []
[]
[Executioner]
  type = Transient
  num_steps = 3
  [TimeIntegrator]
    type = CentralDifference
  []
[]
[Problem]
  solve = false
[]
[Materials]
  [coupled]
    type = CoupledValuesMaterial
    variable = 'base'
  []
  [ad_coupled]
    type = ADCoupledValuesMaterial
    variable = 'base'
    declare_suffix = 'ad'
  []
[]
[Postprocessors]
  [dot]
    type = ElementAverageMaterialProperty
    mat_prop = 'base_dot'
  []
  [dot_dot]
    type = ElementAverageMaterialProperty
    mat_prop = 'base_dot_dot'
  []
  [ad_dot]
    type = ADElementAverageMaterialProperty
    mat_prop = 'base_dot_ad'
  []
  [ad_dot_dot]
    type = ADElementAverageMaterialProperty
    mat_prop = 'base_dot_dot_ad'
  []
[]
[Outputs]
  csv = true
[]
(modules/thermal_hydraulics/test/tests/components/heat_transfer_from_heat_flux_1phase/phy.q_wall_multiple_3eqn.i)
# Tests that energy conservation is satisfied in 1-phase flow when there are
# multiple heat transfer components connected to the same pipe, using specified
# wall heat flux.
#
# This problem has 2 wall heat flux sources, each with differing parameters.
# Solid wall boundary conditions are imposed such that there should be no flow,
# and the solution should be spatially uniform. With no other sources, the
# energy balance is
#   (rho*e*A)^{n+1} = (rho*e*A)^n + dt * [(q1*P1) + (q2*P2)]
# Note that spatial integration is dropped here due to spatial uniformity, and
# E has been replaced with e since velocity should be zero.
#
# For the initial conditions
#   p = 100 kPa
#   T = 300 K
# the density and specific internal energy should be
#   rho = 1359.792245 kg/m^3
#   e = 1.1320645935e+05 J/kg
#
# With the following heat source parameters:
#   q1 = 10 MW/m^2     P1 = 0.2 m
#   q2 = 20 MW/m^2     P2 = 0.4 m
# and A = 1 m^2 and dt = 2 s, the new energy solution value should be
#   (rho*e*A)^{n+1} = 1359.792245 * 1.1320645935e+05 * 1 + 2 * (10e6 * 0.2 + 20e6 * 0.4)
#                   = 173937265.50803775 J/m
#
[GlobalParams]
  gravity_vector = '0 0 0'
  initial_T = 300
  initial_p = 100e3
  initial_vel = 0
  closures = simple_closures
[]
[FluidProperties]
  [fp]
    type = StiffenedGasFluidProperties
    gamma = 2.35
    q = -1167e3
    q_prime = 0
    p_inf = 1.e9
    cv = 1816
  []
[]
[Closures]
  [simple_closures]
    type = Closures1PhaseSimple
  []
[]
[Components]
  [pipe]
    type = FlowChannel1Phase
    fp = fp
    position = '0 0 0'
    orientation = '1 0 0'
    A = 1
    f = 0
    # length and number of elements should be arbitrary for the test
    length = 10
    n_elems = 1
  []
  [ht1]
    type = HeatTransferFromHeatFlux1Phase
    flow_channel = pipe
    q_wall = 10e6
    P_hf = 0.2
    Hw = 1
  []
  [ht2]
    type = HeatTransferFromHeatFlux1Phase
    flow_channel = pipe
    q_wall = 20e6
    P_hf = 0.4
    Hw = 1
  []
  [left]
    type = SolidWall1Phase
    input = 'pipe:in'
  []
  [right]
    type = SolidWall1Phase
    input = 'pipe:out'
  []
[]
[Preconditioning]
  [preconditioner]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  scheme = 'bdf2'
  start_time = 0
  dt = 2
  num_steps = 1
  abort_on_solve_fail = true
  solve_type = 'NEWTON'
  line_search = 'basic'
  nl_rel_tol = 0
  nl_abs_tol = 1e-6
  nl_max_its = 5
  l_tol = 1e-10
  l_max_its = 10
[]
[Postprocessors]
  [rhoEA_predicted]
    type = ElementAverageValue
    variable = rhoEA
    block = pipe
  []
  # This is included to test the naming of heat transfer quantities in the case
  # of multiple heat transfers connected to a flow channel. This PP is not used
  # in output but just included to ensure that an error does not occur (which is
  # the case if the expected material property name does not exist).
  # See https://github.com/idaholab/moose/issues/26286.
  [q_wall_name_check]
    type = ADElementAverageMaterialProperty
    mat_prop = 'q_wall:2'
  []
[]
[Outputs]
  [out]
    type = CSV
    show = 'rhoEA_predicted'
    execute_on = 'final'
  []
[]
(modules/fluid_properties/test/tests/materials/saturation_pressure_material/saturation_pressure_material.i)
# This tests SaturationPressureMaterial, which computes a saturation pressure material
# property from a temperature material property and a TwoPhaseFluidProperties object.
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
  xmin = 0
  xmax = 1
[]
[FluidProperties]
  [fp_2phase]
    type = StiffenedGasTwoPhaseFluidProperties
  []
[]
[Materials]
  [T_mat]
    type = ADGenericConstantMaterial
    prop_names = 'T'
    prop_values = '400'
  []
  [p_sat_mat]
    type = ADSaturationPressureMaterial
    T = T
    p_sat = p_sat
    fp_2phase = fp_2phase
  []
[]
[Postprocessors]
  [p_sat_pp]
    type = ADElementAverageMaterialProperty
    mat_prop = p_sat
    execute_on = 'INITIAL'
  []
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Steady
[]
[Outputs]
  csv = true
  execute_on = 'INITIAL'
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/3d_bar_orthotropic_90deg_rotation_ad_creep_x.i)
[Mesh]
  [generated_mesh]
    type = GeneratedMeshGenerator
    dim = 3
    xmin = 0
    xmax = 2
    ymin = 0
    ymax = 10
    zmin = 0
    zmax = 2
    nx = 1
    ny = 1
    nz = 1
    elem_type = HEX8
  []
  [corner]
    type = ExtraNodesetGenerator
    new_boundary = 101
    coord = '0 0 0'
    input = generated_mesh
  []
  [side]
    type = ExtraNodesetGenerator
    new_boundary = 102
    coord = '2 0 0'
    input = corner
  []
[]
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = FINITE
    add_variables = true
    volumetric_locking_correction = true
    use_automatic_differentiation = true
    generate_output = 'elastic_strain_xx stress_xx creep_strain_xx creep_strain_yy creep_strain_zz'
  []
[]
[Materials]
  [elastic_strain]
    type = ADComputeMultipleInelasticStress
    inelastic_models = "trial_creep"
    max_iterations = 50
    absolute_tolerance = 1e-18
  []
  [hill_tensor]
    type = ADHillConstants
    # F G H L M N
    hill_constants = "0.25 0.4 0.65 1.5 1.5 1.5"
    use_large_rotation = true
  []
  [trial_creep]
    type = ADHillCreepStressUpdate
    coefficient = 5e-14
    n_exponent = 10
    m_exponent = 0
    activation_energy = 0
    max_inelastic_increment = 0.00003
    absolute_tolerance = 1e-18
    relative_tolerance = 1e-18
    # Force it to not use integration error
    max_integration_error = 100.0
    use_transformation = true
  []
  [elasticity_tensor]
    type = ADComputeIsotropicElasticityTensor
    youngs_modulus = 500
    poissons_ratio = 0.0
  []
[]
[BCs]
  [fix_x]
    type = ADDirichletBC
    variable = disp_x
    boundary = bottom
    value = 0
  []
  [rot_z]
    type = DisplacementAboutAxis
    boundary = bottom
    function = t
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '1. 0. 1.0e-13'
    component = 2
    variable = disp_z
  []
  #
  [rot_y]
    type = DisplacementAboutAxis
    boundary = bottom
    function = t
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '1. 0. 1.0e-13'
    component = 1
    variable = disp_y
  []
  [rot_z90]
    type = DisplacementAboutAxis
    boundary = bottom
    function = 90
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '1. 0. 1.0e-13'
    component = 2
    variable = disp_z
  []
  #
  [rot_y90]
    type = DisplacementAboutAxis
    boundary = bottom
    function = 90
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '1. 0. 1.0e-13'
    component = 1
    variable = disp_y
  []
  [press]
    type = Pressure
    boundary = top
    function = '-1.0*(t-90)*0.1'
    use_displaced_mesh = true
    displacements = 'disp_x disp_y disp_z'
    variable = disp_z
  []
[]
[Postprocessors]
  # The strain is along Z axis, naming it creep_strain_yy
  # for better comparison.
  [creep_strain_yy]
    type = ADElementAverageMaterialProperty
    mat_prop = creep_strain_zz
  []
[]
[Controls]
  [c1]
    type = TimePeriod
    enable_objects = 'BCs::rot_z BCs::rot_y'
    disable_objects = 'BCs::rot_z90 BCs::rot_y90 BCs::press'
    start_time = '0'
    end_time = '90'
  []
  [c190plus]
    type = TimePeriod
    enable_objects = 'BCs::rot_z90 BCs::rot_y90 BCs::press'
    disable_objects = 'BCs::rot_z BCs::rot_y '
    start_time = '90'
    end_time = '390'
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp_ew'
  petsc_options_iname = '-ksp_gmres_restart'
  petsc_options_value = '101'
  line_search = 'none'
  nl_rel_tol = 1e-11
  nl_abs_tol = 1e-11
  nl_max_its = 50
  l_tol = 1e-4
  l_max_its = 50
  start_time = 0.0
  dt = 0.1
  dtmin = 0.1
  num_steps = 1200
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/3d_bar_orthotropic_90deg_rotation_ad_creep_z_no_rotation.i)
[Mesh]
  [generated_mesh]
    type = GeneratedMeshGenerator
    dim = 3
    xmin = 0
    xmax = 2
    ymin = 0
    ymax = 10
    zmin = 0
    zmax = 2
    nx = 1
    ny = 1
    nz = 1
    elem_type = HEX8
  []
  [corner]
    type = ExtraNodesetGenerator
    new_boundary = 101
    coord = '0 0 0'
    input = generated_mesh
  []
  [side]
    type = ExtraNodesetGenerator
    new_boundary = 102
    coord = '2 0 0'
    input = corner
  []
[]
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = FINITE
    add_variables = true
    volumetric_locking_correction = true
    use_automatic_differentiation = true
    generate_output = 'elastic_strain_yy stress_yy creep_strain_yy'
  []
[]
[Materials]
  [elastic_strain]
    type = ADComputeMultipleInelasticStress
    inelastic_models = "trial_creep"
    max_iterations = 50
    absolute_tolerance = 1e-18
  []
  [hill_tensor]
    type = ADHillConstants
    # F G H L M N
    hill_constants = "0.5 1.0 0.5 1.5 1.5 1.5"
    use_large_rotation = true
  []
  [trial_creep]
    type = ADHillCreepStressUpdate
    coefficient = 5e-14
    n_exponent = 10
    m_exponent = 0
    activation_energy = 0
    max_inelastic_increment = 0.00003
    absolute_tolerance = 1e-18
    relative_tolerance = 1e-18
    # Force it to not use integration error
    max_integration_error = 100.0
    use_transformation = true
  []
  [elasticity_tensor]
    type = ADComputeIsotropicElasticityTensor
    youngs_modulus = 500
    poissons_ratio = 0.0
  []
[]
[BCs]
  [fix_z]
    type = ADDirichletBC
    variable = disp_z
    boundary = bottom
    value = 0
  []
  [rot_y]
    type = DisplacementAboutAxis
    boundary = bottom
    function = 0
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '0. 0. 1.'
    component = 1
    variable = disp_y
  []
  #
  [rot_x]
    type = DisplacementAboutAxis
    boundary = bottom
    function = 0
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '0. 0. 1.'
    component = 0
    variable = disp_x
  []
  [rot_y90]
    type = DisplacementAboutAxis
    boundary = bottom
    function = 0
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '0. 0. 1.'
    component = 1
    variable = disp_y
  []
  #
  [rot_x90]
    type = DisplacementAboutAxis
    boundary = bottom
    function = 0
    angle_units = degrees
    axis_origin = '0. 0. 0.'
    axis_direction = '0. 0. 1.'
    component = 0
    variable = disp_x
  []
  [press]
    boundary = top
    function = '-1.0*(t-90)*0.1'
    use_displaced_mesh = true
    displacements = 'disp_x disp_y disp_z'
    type = Pressure
    variable = disp_y
  []
[]
[Controls]
  [c1]
    type = TimePeriod
    enable_objects = 'BCs::rot_x BCs::rot_y'
    disable_objects = 'BCs::rot_x90 BCs::rot_y90 BCs::press'
    start_time = '0'
    end_time = '90'
  []
  [c190plus]
    type = TimePeriod
    enable_objects = 'BCs::rot_x90 BCs::rot_y90 BCs::press'
    disable_objects = 'BCs::rot_x BCs::rot_y '
    start_time = '90'
    end_time = '390'
  []
[]
[Postprocessors]
  [creep_strain_xx]
    type = ADElementAverageMaterialProperty
    mat_prop = creep_strain_yy
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp_ew'
  petsc_options_iname = '-ksp_gmres_restart'
  petsc_options_value = '101'
  line_search = 'none'
  nl_rel_tol = 1e-12
  nl_abs_tol = 1e-12
  nl_max_its = 50
  automatic_scaling = true
  l_tol = 1e-4
  l_max_its = 50
  start_time = 0.0
  dt = 0.1
  dtmin = 0.1
  num_steps = 1200
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/solid_mechanics/test/tests/neml2/laromance/laromance_return_mapping.i)
# NEML2 file in MPA
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 3
    nx = 2
    ny = 2
    nz = 2
  []
[]
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Physics]
  [SolidMechanics]
    [QuasiStatic]
      [all]
        strain = SMALL
        new_system = true
        add_variables = true
        formulation = TOTAL
        volumetric_locking_correction = true
      []
    []
  []
[]
[BCs]
  [xfix]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [yfix]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0
  []
  [zfix]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0
  []
  [pressure_x]
    type = Pressure
    variable = disp_x
    boundary = right
    function = pressure_fcn
  []
[]
[Functions]
  [pressure_fcn]
    type = ParsedFunction
    expression = 'if(t<200,t,200)' #MPa
  []
[]
[Materials]
  [init_dd]
    type = GenericConstantMaterial
    prop_names = 'T init_cell_dd init_wall_dd init_envFac'
    prop_values = '750 1e11 8e12 2e15'
  []
[]
[NEML2]
  input = 'models/laromance_matl_radial_return.i'
  [all]
    model = 'model'
    verbose = true
    device = 'cpu'
    moose_input_types = 'MATERIAL MATERIAL     MATERIAL         MATERIAL             MATERIAL          MATERIAL          MATERIAL       POSTPROCESSOR POSTPROCESSOR'
    moose_inputs = 'T        neml2_strain inelastic_strain eff_inelastic_strain cell_dd           wall_dd           init_envFac    time          time'
    neml2_inputs = 'forces/T forces/E     old_state/Ep     old_state/ep         old_state/cell_dd old_state/wall_dd forces/env_fac forces/t      old_forces/t'
    moose_output_types = 'Material     MATERIAL         MATERIAL             MATERIAL                  MATERIAL        MATERIAL        MATERIAL        MATERIAL      MATERIAL'
    moose_outputs = 'neml2_stress inelastic_strain eff_inelastic_strain eff_inelastic_strain_rate vonmises_stress cell_rate       wall_rate       cell_dd       wall_dd'
    neml2_outputs = 'state/S      state/Ep         state/ep             state/ep_rate             state/s         state/cell_rate state/wall_rate state/cell_dd state/wall_dd'
    initialize_outputs = 'wall_dd      cell_dd      init_envFac'
    initialize_output_values = 'init_wall_dd init_cell_dd init_envFac'
    moose_derivative_types = 'MATERIAL'
    moose_derivatives = 'neml2_jacobian'
    neml2_derivatives = 'state/S forces/E'
  []
[]
[Materials]
  [convert_strain]
    type = RankTwoTensorToSymmetricRankTwoTensor
    from = 'mechanical_strain'
    to = 'neml2_strain'
  []
  [stress]
    type = ComputeLagrangianObjectiveCustomSymmetricStress
    custom_small_stress = 'neml2_stress'
    custom_small_jacobian = 'neml2_jacobian'
  []
[]
[Executioner]
  type = Transient
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  automatic_scaling = true
  nl_rel_tol = 1e-10
  nl_abs_tol = 1e-12
  dt = 50
  dtmin = 50
  num_steps = 10
  residual_and_jacobian_together = true
[]
[Postprocessors]
  [time]
    type = TimePostprocessor
    execute_on = 'INITIAL TIMESTEP_BEGIN'
    outputs = 'none'
  []
  [eff_inelastic_strain]
    type = ElementAverageMaterialProperty
    mat_prop = eff_inelastic_strain
  []
  [eff_inelastic_strain_rate]
    type = ElementAverageMaterialProperty
    mat_prop = eff_inelastic_strain_rate
  []
  [rhom_rate]
    type = ElementAverageMaterialProperty
    mat_prop = cell_rate
  []
  [rhoi_rate]
    type = ElementAverageMaterialProperty
    mat_prop = wall_rate
  []
  [rhom_dd]
    type = ElementAverageMaterialProperty
    mat_prop = cell_dd
  []
  [rhoi_dd]
    type = ElementAverageMaterialProperty
    mat_prop = wall_dd
  []
  [vm_stress]
    type = ElementAverageMaterialProperty
    mat_prop = vonmises_stress
  []
[]
[Outputs]
  csv = true
[]
(test/tests/materials/derivative_material_interface/required_property.i)
#
# This test validates the error checking for required coupled
# material properties within ParsedMaterials and DerivativeParsedMaterials
#
[Mesh]
  type = GeneratedMesh
  dim = 1
[]
[Variables]
  [c]
  []
[]
[Materials]
  [prime]
    type = DerivativeParsedMaterial
    expression = Q
    property_name = P
  []
  [second]
    type = DerivativeParsedMaterial
    expression = c
    derivative_order = 1
    coupled_variables = c
    property_name = S
  []
[]
[Postprocessors]
  [avg]
    type = ElementAverageMaterialProperty
    mat_prop = P
  []
[]
[Problem]
  kernel_coverage_check = false
[]
[Executioner]
  type = Transient
  num_steps = 1
  solve_type = NEWTON
[]
[Outputs]
  csv = true
[]
(modules/solid_properties/test/tests/materials/tungsten/tungsten_thermal_properties.i)
# Analytic formulas are taken from Milner, J. L., Karkos, P., & Bowers, J. J. (2024).
# Space Nuclear Propulsion (SNP) Material Property Handbook (No. SNP-HDBK-0008).
# National Aeronautics and Space Administration (NASA). https://ntrs.nasa.gov/citations/20240004217
[Mesh]
  [f]
    type = GeneratedMeshGenerator
    dim = 1
    xmin = 11
    xmax = 3600
    nx = 100
  []
[]
[Materials]
  [tungsten]
    type = TungstenThermalPropertiesMaterial
    temperature = temperature
    outputs = 'all'
  []
[]
[AuxVariables]
  [temperature]
    [AuxKernel]
      type = FunctionAux
      function = linear_x
      execute_on = 'INITIAL'
    []
  []
  [k_from_functions]
    family = MONOMIAL
    order = CONSTANT
    [AuxKernel]
      type = FunctionAux
      function = 'k_parsed_combination'
    []
  []
  [c_p_from_functions]
    family = MONOMIAL
    order = CONSTANT
    [AuxKernel]
      type = FunctionAux
      function = 'c_p_parsed_combination'
    []
  []
  [rho_from_functions]
    family = MONOMIAL
    order = CONSTANT
    [AuxKernel]
      type = FunctionAux
      function = 'density_analytic'
    []
  []
  [k_diff]
    family = MONOMIAL
    order = CONSTANT
    [AuxKernel]
      type = ParsedAux
      expression = 'thermal_conductivity - k_from_functions'
      coupled_variables = 'thermal_conductivity k_from_functions'
    []
  []
  [c_p_diff]
    family = MONOMIAL
    order = CONSTANT
    [AuxKernel]
      type = ParsedAux
      expression = 'specific_heat - c_p_from_functions'
      coupled_variables = 'specific_heat c_p_from_functions'
    []
  []
  [rho_diff]
    family = MONOMIAL
    order = CONSTANT
    [AuxKernel]
      type = ParsedAux
      expression = 'density - rho_from_functions'
      coupled_variables = 'density rho_from_functions'
    []
  []
[]
[Functions]
  [linear_x]
      type = ParsedFunction
      expression = 'x'
  []
  [x_coord]
    type = ParsedFunction
    expression = 'x'
  []
  [k_analytic_T_less_than_55]
      type = ParsedFunction
      symbol_names = 'T'
      symbol_values = 'x_coord'
      expression = '7.348e5*(T/1000)^0.874/(1+25.44*T/1000-8.304e3*(T/1000)^2+1.18e6*(T/1000)^3)'
  []
  [k_analytic_T_between_55_and_3653]
      type = ParsedFunction
      symbol_names = 'T'
      symbol_values = 'x_coord'
      expression = '(-3.679+1.181e2*T/1000+58.79*(T/1000)*(T/1000)+2.867*(T/1000)*(T/1000)*(T/1000))/(-2.052e-2+4.741e-1*T/1000+(T/1000)*(T/1000))'
  []
  [k_parsed_combination]
    type = ParsedFunction
    expression = 'if(x < 55, k_analytic_T_less_than_55, k_analytic_T_between_55_and_3653)'
    symbol_names = 'k_analytic_T_less_than_55 k_analytic_T_between_55_and_3653'
    symbol_values = 'k_analytic_T_less_than_55 k_analytic_T_between_55_and_3653'
  []
  [c_p_analytic_T_less_than_293]
      type = ParsedFunction
      symbol_names = 'T'
      symbol_values = 'x_coord'
      expression = '3.103e2*(T/1000)^3.03/(1-8.815*T/1000+1.295e2*(T/1000)^2+1.874e3*(T/1000)^3)'
  []
  [c_p_analytic_T_between_293_and_3700]
      type = ParsedFunction
      symbol_names = 'T'
      symbol_values = 'x_coord'
      expression = '1.301e-1+2.225e-2*T/1000-7.224e-3*(T/1000)^2+3.539e-3*(T/1000)^3-3.061e-4/(T/1000)^2'
  []
  [c_p_parsed_combination]
    type = ParsedFunction
    expression = 'if(x < 293, c_p_analytic_T_less_than_293, c_p_analytic_T_between_293_and_3700)'
    symbol_names = 'c_p_analytic_T_less_than_293 c_p_analytic_T_between_293_and_3700'
    symbol_values = 'c_p_analytic_T_less_than_293 c_p_analytic_T_between_293_and_3700'
  []
  [dL_L0_analytic_T_less_than_294]
      type = ParsedFunction
      symbol_names = 'T'
      symbol_values = 'x_coord'
      expression = '-8.529e-2 - 9.915e-2 * T/1000 + 2.257 * (T/1000)^2 - 3.157 * (T/1000)^3'
  []
  [dL_L0_analytic_T_between_294_and_3600]
      type = ParsedFunction
      symbol_names = 'T'
      symbol_values = 'x_coord'
      expression = '-1.4e-1 + 4.869e-1 * T/1000 -3.056e-2 * (T/1000)^2 + 2.234e-2 * (T/1000)^3'
  []
  [dL_L0_parsed_combination]
    type = ParsedFunction
    expression = 'if(x < 294, dL_L0_analytic_T_less_than_294, dL_L0_analytic_T_between_294_and_3600)'
    symbol_names = 'dL_L0_analytic_T_less_than_294 dL_L0_analytic_T_between_294_and_3600'
    symbol_values = 'dL_L0_analytic_T_less_than_294 dL_L0_analytic_T_between_294_and_3600'
  []
  [density_analytic]
      type = ParsedFunction
      symbol_names = 'dL_L0'
      symbol_values = 'dL_L0_parsed_combination'
      expression = '19250 / (1 + dL_L0 / 100)^3'
  []
[]
[Problem]
  solve = false
[]
[Postprocessors]
  [thermal_conductivity_avg]
    type = ElementAverageMaterialProperty
    mat_prop = thermal_conductivity
  []
  [specific_heat_avg]
    type = ElementAverageMaterialProperty
    mat_prop = specific_heat
  []
  [density_avg]
    type = ElementAverageMaterialProperty
    mat_prop = density
  []
[]
[VectorPostprocessors]
  [props_and_diffs]
    type = LineValueSampler
    variable = 'thermal_conductivity specific_heat density k_diff c_p_diff rho_diff'
    start_point = '11 0 0'
    end_point = '3600 0 0'
    num_points = 100
    sort_by = x
  []
[]
[Executioner]
  type = Steady
[]
[Outputs]
  exodus = true
  [csv]
    type = CSV
    execute_on = final
  []
[]
(modules/thermal_hydraulics/test/tests/materials/ad_convection_heat_flux_hs/ad_convection_heat_flux_hs.i)
# Gold value should be the following:
#   q_wall = kappa * htc_wall * (T_wall - T)
#          = 0.5 * 100 * (500 - 400)
#          = 5000
[GlobalParams]
  execute_on = 'initial'
[]
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
[]
[Materials]
  [props]
    type = ADGenericConstantMaterial
    prop_names = 'T T_wall htc_wall kappa'
    prop_values = '400 500 100 0.5'
  []
  [q_wall_mat]
    type = ADConvectionHeatFluxHSMaterial
    q_wall = q_wall_prop
    T = T
    T_wall = T_wall
    htc_wall = htc_wall
    kappa = kappa
  []
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Postprocessors]
  [q_wall_pp]
    type = ADElementAverageMaterialProperty
    mat_prop = q_wall_prop
  []
[]
[Outputs]
  csv = true
[]
(modules/thermal_hydraulics/test/tests/materials/ad_wall_htc_gnielinski_annular/ad_wall_htc_gnielinski_annular.i)
rho = 3.1176
vel = 100
k = 0.38220
mu = 4.8587e-05
cp = 5189.8
p = 100e3
T = 1073
T_wall = 1074
D_inner = 0.01
D_outer = 0.015
length = 0.5
[GlobalParams]
  execute_on = 'INITIAL'
[]
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
[]
[FluidProperties]
  [fp]
    type = IdealGasFluidProperties
  []
[]
[Materials]
  [props]
    type = ADGenericConstantMaterial
    prop_names = 'rho vel k mu cp p T T_wall'
    prop_values = '${rho} ${vel} ${k} ${mu} ${cp} ${p} ${T} ${T_wall}'
  []
  [test_material]
    type = ADWallHTCGnielinskiAnnularMaterial
    htc_wall = htc_wall
    D_inner = ${D_inner}
    D_outer = ${D_outer}
    channel_length = ${length}
    at_inner_wall = true
    fluid_is_gas = true
    gas_heating_correction_exponent = 0.15
    fluid_properties = fp
  []
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Steady
[]
[Postprocessors]
  [htc_wall]
    type = ADElementAverageMaterialProperty
    mat_prop = htc_wall
  []
[]
[Outputs]
  csv = true
[]
(modules/thermal_hydraulics/tutorials/single_phase_flow/06_custom_closures.i)
T_in = 300. # K
m_dot_in = 1e-2 # kg/s
press = 10e5 # Pa
# core parameters
core_length = 1. # m
core_n_elems = 25
core_dia = '${units 2. cm -> m}'
core_pitch = '${units 8.7 cm -> m}'
A_core = '${fparse core_pitch^2 - 0.25 *pi * core_dia^2}'
P_wet_core = '${fparse 4*core_pitch + pi * core_dia}'
Dh_core = '${fparse 4 * A_core / P_wet_core}'
# pipe parameters
pipe_dia = '${units 10. cm -> m}'
A_pipe = '${fparse 0.25 * pi * pipe_dia^2}'
tot_power = 2000 # W
# heat exchanger parameters
hx_dia_inner = '${units 12. cm -> m}'
hx_wall_thickness = '${units 5. mm -> m}'
hx_dia_outer = '${units 50. cm -> m}'
hx_radius_wall = '${fparse hx_dia_inner / 2. + hx_wall_thickness}'
hx_length = 1.5 # m
hx_n_elems = 25
m_dot_sec_in = 1. # kg/s
[GlobalParams]
  initial_p = ${press}
  initial_vel = 0.0001
  initial_T = ${T_in}
  initial_vel_x = 0
  initial_vel_y = 0
  initial_vel_z = 0
  gravity_vector = '0 0 0'
  rdg_slope_reconstruction = minmod
  scaling_factor_1phase = '1 1e-2 1e-4'
  scaling_factor_rhoV = 1
  scaling_factor_rhouV = 1e-2
  scaling_factor_rhovV = 1e-2
  scaling_factor_rhowV = 1e-2
  scaling_factor_rhoEV = 1e-4
  closures = thm_closures
  fp = he
[]
[Functions]
  [m_dot_sec_fn]
    type = PiecewiseLinear
    xy_data = '
      0    0
      10 ${m_dot_sec_in}'
  []
[]
[FluidProperties]
  [he]
    type = IdealGasFluidProperties
    molar_mass = 4e-3
    gamma = 1.67
    k = 0.2556
    mu = 3.22639e-5
  []
  [water]
    type = StiffenedGasFluidProperties
    gamma = 2.35
    cv = 1816.0
    q = -1.167e6
    p_inf = 1.0e9
    q_prime = 0
  []
[]
[Closures]
  [thm_closures]
    type = Closures1PhaseTHM
  []
[]
[Materials]
  [Re_mat]
    type = ADReynoldsNumberMaterial
    Re = Re
    rho = rho
    vel = vel
    D_h = D_h
    mu = mu
    block = hx/pri
  []
  [f_mat]
    type = ADParsedMaterial
    property_name = f_D
    constant_names = 'a b c'
    constant_expressions = '1 0.1 -0.5'
    material_property_names = 'Re'
    expression = 'a + b * Re^c'
    block = hx/pri
  []
  [Pr_mat]
    type = ADPrandtlNumberMaterial
    Pr = Pr
    cp = cp
    mu = mu
    k = k
    block = hx/pri
  []
  [Nu_mat]
    type = ADParsedMaterial
    property_name = 'Nu'
    constant_names = 'a b c'
    constant_expressions = '0.03 0.9 0.5'
    material_property_names = 'Re Pr'
    expression = 'a * Re ^b * Pr^c'
    block = hx/pri
  []
  [Hw_mat]
    type = ADConvectiveHeatTransferCoefficientMaterial
    D_h = D_h
    k = k
    Nu = Nu
    Hw = Hw
    block = hx/pri
  []
[]
[SolidProperties]
  [steel]
    type = ThermalFunctionSolidProperties
    rho = 8050
    k = 45
    cp = 466
  []
[]
[Components]
  [total_power]
    type = TotalPower
    power = ${tot_power}
  []
  [up_pipe_1]
    type = FlowChannel1Phase
    position = '0 0 0'
    orientation = '0 0 1'
    length = 0.5
    n_elems = 15
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct1]
    type = JunctionParallelChannels1Phase
    position = '0 0 0.5'
    connections = 'up_pipe_1:out core_chan:in'
    volume = 1e-5
  []
  [core_chan]
    type = FlowChannel1Phase
    position = '0 0 0.5'
    orientation = '0 0 1'
    length = ${core_length}
    n_elems = ${core_n_elems}
    roughness = .0001
    A = ${A_core}
    D_h = ${Dh_core}
  []
  [core_hs]
    type = HeatStructureCylindrical
    position = '0 0 0.5'
    orientation = '0 0 1'
    length = ${core_length}
    n_elems = ${core_n_elems}
    names = 'block'
    widths = '${fparse core_dia / 2.}'
    solid_properties = 'steel'
    solid_properties_T_ref = '300'
    n_part_elems = 3
  []
  [core_heating]
    type = HeatSourceFromTotalPower
    hs = core_hs
    regions = block
    power = total_power
  []
  [core_ht]
    type = HeatTransferFromHeatStructure1Phase
    flow_channel = core_chan
    hs = core_hs
    hs_side = outer
    P_hf = '${fparse pi * core_dia}'
  []
  [jct2]
    type = JunctionParallelChannels1Phase
    position = '0 0 1.5'
    connections = 'core_chan:out up_pipe_2:in'
    volume = 1e-5
  []
  [up_pipe_2]
    type = FlowChannel1Phase
    position = '0 0 1.5'
    orientation = '0 0 1'
    length = 0.5
    n_elems = 10
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct3]
    type = JunctionOneToOne1Phase
    connections = 'up_pipe_2:out top_pipe_1:in'
  []
  [top_pipe_1]
    type = FlowChannel1Phase
    position = '0 0 2'
    orientation = '1 0 0'
    length = 0.5
    n_elems = 10
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [top_pipe_2]
    type = FlowChannel1Phase
    position = '0.5 0 2'
    orientation = '1 0 0'
    length = 0.5
    n_elems = 10
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct4]
    type = VolumeJunction1Phase
    position = '0.5 0 2'
    volume = 1e-5
    connections = 'top_pipe_1:out top_pipe_2:in press_pipe:in'
  []
  [press_pipe]
    type = FlowChannel1Phase
    position = '0.5 0 2'
    orientation = '0 1 0'
    length = 0.2
    n_elems = 5
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [pressurizer]
    type = InletStagnationPressureTemperature1Phase
    p0 = ${press}
    T0 = ${T_in}
    input = press_pipe:out
  []
  [jct5]
    type = JunctionOneToOne1Phase
    connections = 'top_pipe_2:out down_pipe_1:in'
  []
  [down_pipe_1]
    type = FlowChannel1Phase
    position = '1 0 2'
    orientation = '0 0 -1'
    length = 0.25
    A = ${A_pipe}
    n_elems = 5
  []
  [jct6]
    type = JunctionParallelChannels1Phase
    position = '1 0 1.75'
    connections = 'down_pipe_1:out hx/pri:in'
    volume = 1e-5
  []
  [hx]
    [pri]
      type = FlowChannel1Phase
      position = '1 0 1.75'
      orientation = '0 0 -1'
      length = ${hx_length}
      n_elems = ${hx_n_elems}
      roughness = 1e-5
      A = '${fparse pi * hx_dia_inner * hx_dia_inner / 4.}'
      D_h = ${hx_dia_inner}
      closures = ''
    []
    [ht_pri]
      type = HeatTransferFromHeatStructure1Phase
      hs = hx/wall
      hs_side = inner
      flow_channel = hx/pri
      P_hf = '${fparse pi * hx_dia_inner}'
    []
    [wall]
      type = HeatStructureCylindrical
      position = '1 0 1.75'
      orientation = '0 0 -1'
      length = ${hx_length}
      n_elems = ${hx_n_elems}
      widths = '${hx_wall_thickness}'
      n_part_elems = '3'
      solid_properties = 'steel'
      solid_properties_T_ref = '300'
      names = '0'
      inner_radius = '${fparse hx_dia_inner / 2.}'
    []
    [ht_sec]
      type = HeatTransferFromHeatStructure1Phase
      hs = hx/wall
      hs_side = outer
      flow_channel = hx/sec
      P_hf = '${fparse 2 * pi * hx_radius_wall}'
    []
    [sec]
      type = FlowChannel1Phase
      position = '${fparse 1 + hx_wall_thickness} 0 0.25'
      orientation = '0 0 1'
      length = ${hx_length}
      n_elems = ${hx_n_elems}
      A = '${fparse pi * (hx_dia_outer * hx_dia_outer / 4. - hx_radius_wall * hx_radius_wall)}'
      D_h = '${fparse hx_dia_outer - (2 * hx_radius_wall)}'
      fp = water
      initial_T = 300
    []
  []
  [jct7]
    type = JunctionParallelChannels1Phase
    position = '1 0 0.5'
    connections = 'hx/pri:out down_pipe_2:in'
    volume = 1e-5
  []
  [down_pipe_2]
    type = FlowChannel1Phase
    position = '1 0 0.25'
    orientation = '0 0 -1'
    length = 0.25
    n_elems = 10
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct8]
    type = JunctionOneToOne1Phase
    connections = 'down_pipe_2:out bottom_1:in'
  []
  [bottom_1]
    type = FlowChannel1Phase
    position = '1 0 0'
    orientation = '-1 0 0'
    length = 0.5
    n_elems = 5
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [pump]
    type = Pump1Phase
    position = '0.5 0 0'
    connections = 'bottom_1:out bottom_2:in'
    volume = 1e-4
    A_ref = ${A_pipe}
    head = 0
  []
  [bottom_2]
    type = FlowChannel1Phase
    position = '0.5 0 0'
    orientation = '-1 0 0'
    length = 0.5
    n_elems = 5
    A = ${A_pipe}
    D_h = ${pipe_dia}
  []
  [jct9]
    type = JunctionOneToOne1Phase
    connections = 'bottom_2:out up_pipe_1:in'
  []
  [inlet_sec]
    type = InletMassFlowRateTemperature1Phase
    input = 'hx/sec:in'
    m_dot = 0
    T = 300
  []
  [outlet_sec]
    type = Outlet1Phase
    input = 'hx/sec:out'
    p = 1e5
  []
[]
[ControlLogic]
  [set_point]
    type = GetFunctionValueControl
    function = ${m_dot_in}
  []
  [pid]
    type = PIDControl
    initial_value = 0.0
    set_point = set_point:value
    input = m_dot_pump
    K_p = 1.
    K_i = 4.
    K_d = 0
  []
  [set_pump_head]
    type = SetComponentRealValueControl
    component = pump
    parameter = head
    value = pid:output
  []
  [m_dot_sec_inlet_ctrl]
    type = GetFunctionValueControl
    function = m_dot_sec_fn
  []
  [set_m_dot_sec_ctrl]
    type = SetComponentRealValueControl
    component = inlet_sec
    parameter = m_dot
    value = m_dot_sec_inlet_ctrl:value
  []
[]
[Postprocessors]
  [power_to_coolant]
    type = ADHeatRateConvection1Phase
    block = core_chan
    P_hf = '${fparse pi *core_dia}'
  []
  [m_dot_pump]
    type = ADFlowJunctionFlux1Phase
    boundary = core_chan:in
    connection_index = 1
    equation = mass
    junction = jct7
  []
  [core_T_out]
    type = SideAverageValue
    boundary = core_chan:out
    variable = T
  []
  [core_p_in]
    type = SideAverageValue
    boundary = core_chan:in
    variable = p
  []
  [core_p_out]
    type = SideAverageValue
    boundary = core_chan:out
    variable = p
  []
  [core_delta_p]
    type = ParsedPostprocessor
    pp_names = 'core_p_in core_p_out'
    expression = 'core_p_in - core_p_out'
  []
  [hx_pri_T_out]
    type = SideAverageValue
    boundary = hx/pri:out
    variable = T
  []
  [hx_sec_T_in]
    type = SideAverageValue
    boundary = inlet_sec
    variable = T
  []
  [hx_sec_T_out]
    type = SideAverageValue
    boundary = outlet_sec
    variable = T
  []
  [m_dot_sec]
    type = ADFlowBoundaryFlux1Phase
    boundary = inlet_sec
    equation = mass
  []
  [Hw_hx_pri]
    type = ADElementAverageMaterialProperty
    mat_prop = Hw
    block = hx/pri
  []
  [fD_hx_pri]
    type = ADElementAverageMaterialProperty
    mat_prop = f_D
    block = hx/pri
  []
[]
[Preconditioning]
  [pc]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  start_time = 0
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1
  []
  dtmax = 5
  end_time = 500
  line_search = basic
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_rel_tol = 1e-8
  nl_abs_tol = 1e-8
  nl_max_its = 25
[]
[Outputs]
  exodus = true
  [console]
    type = Console
    max_rows = 1
    outlier_variable_norms = false
  []
  print_linear_residuals = false
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/volumetric_eigenstrain_increase.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  [cube]
    type = GeneratedMeshGenerator
    dim = 3
    nx = 2
    ny = 2
    nz = 2
    elem_type = HEX27
  []
[]
[AuxVariables]
  [temperature]
    order = FIRST
    family = LAGRANGE
  []
  [linear_void_strain]
    order = CONSTANT
    family = MONOMIAL
  []
  [e_void_xx]
    order = CONSTANT
    family = MONOMIAL
  []
  [e_void_yy]
    order = CONSTANT
    family = MONOMIAL
  []
  [e_void_zz]
    order = CONSTANT
    family = MONOMIAL
  []
  [f_void_zz]
    order = CONSTANT
    family = MONOMIAL
  []
  [pk2_zz]
    order = CONSTANT
    family = MONOMIAL
  []
  [fp_zz]
    order = CONSTANT
    family = MONOMIAL
  []
  [tau_0]
    order = FIRST
    family = MONOMIAL
  []
  [tau_10]
    order = FIRST
    family = MONOMIAL
  []
[]
[Physics/SolidMechanics/QuasiStatic/all]
  strain = FINITE
  incremental = true
  add_variables = true
[]
[Functions]
  [temperature_ramp]
    type = ParsedFunction
    expression = '600.0 + t'
  []
[]
[AuxKernels]
  [temperature]
    type = FunctionAux
    variable = temperature
    function = 'temperature_ramp'
    execute_on = timestep_begin
  []
  [linear_void_strain]
    type = MaterialRealAux
    variable = linear_void_strain
    property = equivalent_linear_change
    execute_on = timestep_end
  []
  [e_void_xx]
    type = RankTwoAux
    variable = e_void_xx
    rank_two_tensor = void_eigenstrain
    index_j = 0
    index_i = 0
    execute_on = timestep_end
  []
  [e_void_yy]
    type = RankTwoAux
    variable = e_void_yy
    rank_two_tensor = void_eigenstrain
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  []
  [e_void_zz]
    type = RankTwoAux
    variable = e_void_zz
    rank_two_tensor = void_eigenstrain
    index_j = 2
    index_i = 2
    execute_on = timestep_end
  []
  [f_void_zz]
    type = RankTwoAux
    variable = f_void_zz
    rank_two_tensor = volumetric_deformation_gradient
    index_j = 2
    index_i = 2
    execute_on = timestep_end
  []
  [pk2_zz]
    type = RankTwoAux
    variable = pk2_zz
    rank_two_tensor = second_piola_kirchhoff_stress
    index_j = 2
    index_i = 2
    execute_on = timestep_end
  []
  [fp_zz]
    type = RankTwoAux
    variable = fp_zz
    rank_two_tensor = plastic_deformation_gradient
    index_j = 2
    index_i = 2
    execute_on = timestep_end
  []
  [tau_0]
    type = MaterialStdVectorAux
    variable = tau_0
    property = applied_shear_stress
    index = 0
    execute_on = timestep_end
  []
  [tau_10]
    type = MaterialStdVectorAux
    variable = tau_10
    property = applied_shear_stress
    index = 10
    execute_on = timestep_end
  []
[]
[BCs]
  [symmy]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0
  []
  [symmx]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [symmz]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0
  []
  [hold_front]
    type = DirichletBC
    variable = disp_z
    boundary = front
    value = 0
  []
[]
[Materials]
  [elasticity_tensor]
    type = ComputeElasticityTensorCP
    C_ijkl = '1.98e5 1.25e5 1.25e5 1.98e5 1.25e5 1.98e5 1.22e5 1.22e5 1.22e5'
    fill_method = symmetric9
  []
  [stress]
    type = ComputeMultipleCrystalPlasticityStress
    crystal_plasticity_models = 'trial_xtalpl'
    eigenstrain_names = void_eigenstrain
    tan_mod_type = exact
    line_search_method = CUT_HALF
    use_line_search = true
    maximum_substep_iteration = 5
  []
  [trial_xtalpl]
    type = CrystalPlasticityKalidindiUpdate
    number_slip_systems = 12
    slip_sys_file_name = input_slip_sys.txt
  []
  [void_eigenstrain]
    type = ComputeCrystalPlasticityVolumetricEigenstrain
    eigenstrain_name = void_eigenstrain
    deformation_gradient_name = volumetric_deformation_gradient
    mean_spherical_void_radius = void_radius
    spherical_void_number_density = void_density
  []
  [void_density]
    type = ParsedMaterial
    property_name = void_density
    coupled_variables = temperature
    expression = '1.0e8 * (temperature - 600.0)'
  []
  [void_radius]
    type = GenericConstantMaterial
    prop_names = void_radius
    prop_values = '1.0e-6'  ##1 nm avg particle radius
  []
[]
[Postprocessors]
  [linear_void_strain]
    type = ElementAverageValue
    variable = linear_void_strain
  []
  [e_void_xx]
    type = ElementAverageValue
    variable = e_void_xx
  []
  [e_void_yy]
    type = ElementAverageValue
    variable = e_void_yy
  []
  [e_void_zz]
    type = ElementAverageValue
    variable = e_void_zz
  []
  [f_void_zz]
    type = ElementAverageValue
    variable = f_void_zz
  []
  [density]
    type = ElementAverageMaterialProperty
    mat_prop = void_density
    execute_on = TIMESTEP_END
  []
  [radius]
    type = ElementAverageMaterialProperty
    mat_prop = void_radius
    execute_on = TIMESTEP_END
  []
  [pk2_zz]
   type = ElementAverageValue
   variable = pk2_zz
  []
  [fp_zz]
    type = ElementAverageValue
    variable = fp_zz
  []
  [tau_0]
    type = ElementAverageValue
    variable = tau_0
  []
  [tau_10]
    type = ElementAverageValue
    variable = tau_10
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason'
  petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
  petsc_options_value = ' asm      2              lu            gmres     200'
  line_search = 'none'
  nl_abs_tol = 1e-12
  nl_rel_tol = 1e-8
  nl_forced_its = 1
  dt = 1.0
  dtmin = 0.1
  end_time  = 5.0
[]
[Outputs]
  csv = true
  perf_graph = true
[]
(modules/thermal_hydraulics/test/tests/materials/ad_material_function_product/ad_material_function_product.i)
# Gold value should be the following:
#   product = scale * func
#           = 0.5 * 100
#           = 50
[GlobalParams]
  execute_on = 'initial'
[]
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 1
[]
[Functions]
  [func]
    type = ConstantFunction
    value = 100
  []
[]
[Materials]
  [scale_mat]
    type = ADGenericConstantMaterial
    prop_names = 'scale'
    prop_values = '0.5'
  []
  [product_mat]
    type = ADMaterialFunctionProductMaterial
    mat_prop_product = product
    mat_prop_scale = scale
    function = func
  []
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Postprocessors]
  [product_pp]
    type = ADElementAverageMaterialProperty
    mat_prop = product
  []
[]
[Outputs]
  csv = true
[]