- propertyThe material property name.C++ Type:MaterialPropertyName Unit:(no unit assumed) Controllable:No Description:The material property name. 
- variableThe name of the variable that this object applies toC++ Type:AuxVariableName Unit:(no unit assumed) Controllable:No Description:The name of the variable that this object applies to 
MaterialRealVectorValueAux
Capture a component of a vector material property in an auxiliary variable.
Converting a field from the material system, here a component of a vector material property (MaterialRealVectorValueAux) or a vector valued functor (FunctorMaterialRealVectorValueAux), to a variable may be desirable for several reasons: to match the format expected by certain kernels, for lagging the field between time steps or for output/testing/debugging.
This is particularly useful to examine anisotropic material properties. For output purposes only, an alternative is to use the output_properties argument of the Material or specify output_material_properties in the parameters of the desired output type nested in the [Outputs] block.
The AD system currently does not support auxiliary variables. If you convert material properties or functors, which do support automatic differentiation, to auxiliary variables, the derivatives will be ignored.
Example syntax
In this example, the MaterialRealVectorValueAux is being used to examine different cracking criteria for a smear cracking model.
[AuxKernels<<<{"href": "../../syntax/AuxKernels/index.html"}>>>]
  [./crack_flags1]
    type = MaterialRealVectorValueAux<<<{"description": "Capture a component of a vector material property in an auxiliary variable.", "href": "MaterialRealVectorValueAux.html"}>>>
    property<<<{"description": "The material property name."}>>> = crack_flags
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = crack_flags1
    component<<<{"description": "The vector component to consider for this kernel"}>>> = 0
  [../]
  [./crack_flags2]
    type = MaterialRealVectorValueAux<<<{"description": "Capture a component of a vector material property in an auxiliary variable.", "href": "MaterialRealVectorValueAux.html"}>>>
    property<<<{"description": "The material property name."}>>> = crack_flags
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = crack_flags2
    component<<<{"description": "The vector component to consider for this kernel"}>>> = 1
  [../]
  [./crack_flags3]
    type = MaterialRealVectorValueAux<<<{"description": "Capture a component of a vector material property in an auxiliary variable.", "href": "MaterialRealVectorValueAux.html"}>>>
    property<<<{"description": "The material property name."}>>> = crack_flags
    variable<<<{"description": "The name of the variable that this object applies to"}>>> = crack_flags3
    component<<<{"description": "The vector component to consider for this kernel"}>>> = 2
  [../]
[]Input Parameters
- blockThe list of blocks (ids or names) that this object will be appliedC++ Type:std::vector<SubdomainName> Controllable:No Description:The list of blocks (ids or names) that this object will be applied 
- boundaryThe list of boundaries (ids or names) from the mesh where this object appliesC++ Type:std::vector<BoundaryName> Controllable:No Description:The list of boundaries (ids or names) from the mesh where this object applies 
- check_boundary_restrictedTrueWhether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a meshDefault:True C++ Type:bool Controllable:No Description:Whether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh 
- component0The vector component to consider for this kernelDefault:0 C++ Type:unsigned int Controllable:No Description:The vector component to consider for this kernel 
- execute_onLINEAR TIMESTEP_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:LINEAR 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, PRE_DISPLACE 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. 
- factor1The factor by which to multiply your material property for visualizationDefault:1 C++ Type:double Unit:(no unit assumed) Controllable:No Description:The factor by which to multiply your material property for visualization 
- offset0The offset to add to your material property for visualizationDefault:0 C++ Type:double Unit:(no unit assumed) Controllable:No Description:The offset to add to your material property for visualization 
Optional 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. 
- search_methodnearest_node_connected_sidesChoice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes).Default:nearest_node_connected_sides C++ Type:MooseEnum Options:nearest_node_connected_sides, all_proximate_sides Controllable:No Description:Choice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes). 
- seed0The seed for the master random number generatorDefault:0 C++ Type:unsigned int Controllable:No Description:The seed for the master random number generator 
- selected_qpEvaluate the material property at a specified quadrature point. This only needs to be used if you are interested in a particular quadrature point in each element. Otherwise do not include this parameter in your input file.C++ Type:unsigned int Controllable:No Description:Evaluate the material property at a specified quadrature point. This only needs to be used if you are interested in a particular quadrature point in each element. Otherwise do not include this parameter in your input file. 
- 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/solid_mechanics/test/tests/beam/static/euler_pipe_axial_force.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/euler_angles/euler_angle_auxvar.i)
- (modules/solid_mechanics/test/tests/beam/static/euler_pipe_bend.i)
- (test/tests/materials/types/test.i)
- (modules/solid_mechanics/test/tests/beam/constraints/frictional_constraint.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/prop_block_read.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/euler_angles/euler_angle_conflict.i)
- (modules/solid_mechanics/test/tests/ad_smeared_cracking/cracking_function.i)
- (modules/solid_mechanics/test/tests/ad_smeared_cracking/cracking_rotation.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_euler_angle.i)
- (modules/solid_mechanics/test/tests/beam/constraints/glued_constraint.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/save_euler.i)
- (modules/solid_mechanics/test/tests/beam/constraints/frictionless_constraint.i)
- (modules/solid_mechanics/test/tests/beam/static/euler_pipe_axial_disp.i)
- (modules/solid_mechanics/test/tests/smeared_cracking/cracking_function.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_save_euler.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/rotation_matrix_update_euler_angle_111_orientation.i)
- (modules/solid_mechanics/test/tests/smeared_cracking/cracking_rotation.i)
(modules/solid_mechanics/test/tests/smeared_cracking/cracking_rotation.i)
# This test is to ensure that the smeared cracking model correctly handles finite
# rotation of cracked elements.
# This consists of a single element that is first  subjected to tensile loading
# in the y-direction via a prescribed displacement. This loading is sufficiently
# high to crack the material in that direction, but not completely unload. The
# prescribed displacement is then reversed so that the element is returned to its
# original configuration.
# In the next phase of the analysis, this element is then rotated 90 degrees by
# prescribing the displacement of the bottom of the element. The prescribed
# displacement BC used to crack the element in the first phase is deactivated.
# Once the element is fully rotated, a new BC is activated on what was originally
# the top surface (but is now the surface on the right hand side) to pull in
# the x-direction.
# If everything is working correctly, the model should re-load on the original
# crack (which should be rotated along with the elemnent) up to the peak stress
# in the first phase of the analysis, and then continue the unloading process
# as the crack strains continue to increase. Throughout this analysis, there should
# only be a single crack, as manifested in the crack_flags variables.
[Mesh]
  file = cracking_test.e
[]
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    strain = FINITE
    add_variables = true
    generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
  [../]
[]
[AuxVariables]
  [./crack_flags1]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./crack_flags2]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./crack_flags3]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[AuxKernels]
  [./crack_flags1]
    type = MaterialRealVectorValueAux
    property = crack_flags
    variable = crack_flags1
    component = 0
  [../]
  [./crack_flags2]
    type = MaterialRealVectorValueAux
    property = crack_flags
    variable = crack_flags2
    component = 1
  [../]
  [./crack_flags3]
    type = MaterialRealVectorValueAux
    property = crack_flags
    variable = crack_flags3
    component = 2
  [../]
[]
[BCs]
  [./x_pin]
    type = DirichletBC
    variable = disp_x
    boundary = '15 16'
    value = 0.0
  [../]
  [./y_pin]
    type = DirichletBC
    variable = disp_y
    boundary = '15 16'
    value = 0.0
  [../]
  [./z_all]
    type = DirichletBC
    variable = disp_z
    boundary = '11 12 13 14 15 16 17 18'
    value = 0.0
  [../]
  [./x_lb]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = '11 12'
    function = 'if(t<10,0,if(t>=100,1,1-cos((t-10)*pi/180)))'
  [../]
  [./y_lb]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = '11 12'
    function = 'if(t<10,0,if(t>=100,1,sin((t-10)*pi/180)))'
  [../]
  [./x_lt]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = '13 14'
    function = '2+(t-100)*0.01'
  [../]
  [./x_rt]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = '17 18'
    function = '1+(t-100)*0.01'
  [../]
  [./top_pull]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = '13 14 17 18'
    function = 'if(t<5,t*0.01,0.05-(t-5)*0.01)'
  [../]
[]
[Materials]
  [./elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    youngs_modulus = 100.e9
    poissons_ratio = 0.
  [../]
  [./cracking_stress]
    type = ComputeSmearedCrackingStress
    shear_retention_factor = 0.1
    cracking_stress = 3.e9
    cracked_elasticity_type = FULL
    softening_models = exponential_softening
  [../]
  [./exponential_softening]
    type = ExponentialSoftening
  [../]
[]
[Executioner]
  type = Transient
  petsc_options_iname = '-ksp_gmres_restart -pc_type'
  petsc_options_value = '101                lu'
  line_search = 'none'
  l_max_its = 100
  l_tol = 1e-5
  nl_max_its = 100
  nl_abs_tol = 1e-5
  nl_rel_tol = 1e-12
  start_time = 0
  end_time = 110
  dt = 1
[]
[Controls]
  [./p1]
    type = TimePeriod
    start_time = 0.0
    end_time = 10.0
    disable_objects = 'BCs/x_lt BCs/x_rt'
    enable_objects = 'BCs/top_pull'
    reverse_on_false = false
    execute_on = 'initial timestep_begin'
  [../]
  [./p2]
    type = TimePeriod
    start_time = 10.0
    end_time = 101.0
    disable_objects = 'BCs/x_lt BCs/x_rt BCs/top_pull'
    reverse_on_false = false
    execute_on = 'initial timestep_begin'
  [../]
  [./p3]
    type = TimePeriod
    start_time = 101.0
    end_time = 110.0
    enable_objects = 'BCs/x_lt BCs/x_rt'
    disable_objects = 'BCs/top_pull'
    reverse_on_false = false
    execute_on = 'initial timestep_begin'
  [../]
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/beam/static/euler_pipe_axial_force.i)
# Test for small strain Euler beam axial loading in x direction.
# Modeling a pipe with an OD of 10 inches and ID of 8 inches
# The length of the pipe is 5 feet (60 inches) and E = 30e6
# G = 11.5384615385e6 with nu = 0.3
# The applied axial load is 50000 lb which results in a
# displacement of 3.537e-3 inches at the end
# delta = PL/AE = 50000 * 60 / pi (5^2 - 4^2) * 30e6 = 3.537e-3
# In this analysis the applied force is used as a BC
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 10
  xmin = 0.0
  xmax = 60.0
  displacements = 'disp_x disp_y disp_z'
[]
[Variables]
  [disp_x]
    order = FIRST
    family = LAGRANGE
  []
  [disp_y]
    order = FIRST
    family = LAGRANGE
  []
  [disp_z]
    order = FIRST
    family = LAGRANGE
  []
  [rot_x]
    order = FIRST
    family = LAGRANGE
  []
  [rot_y]
    order = FIRST
    family = LAGRANGE
  []
  [rot_z]
    order = FIRST
    family = LAGRANGE
  []
[]
[BCs]
  [fixx1]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0.0
  []
  [fixy1]
    type = DirichletBC
    variable = disp_y
    boundary = left
    value = 0.0
  []
  [fixz1]
    type = DirichletBC
    variable = disp_z
    boundary = left
    value = 0.0
  []
  [fixr1]
    type = DirichletBC
    variable = rot_x
    boundary = left
    value = 0.0
  []
  [fixr2]
    type = DirichletBC
    variable = rot_y
    boundary = left
    value = 0.0
  []
  [fixr3]
    type = DirichletBC
    variable = rot_z
    boundary = left
    value = 0.0
  []
[]
[NodalKernels]
  [force_x2]
    type = ConstantRate
    variable = disp_x
    boundary = right
    rate = 50000.0
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = PJFNK
  line_search = 'none'
  nl_max_its = 15
  nl_rel_tol = 1e-10
  nl_abs_tol = 1e-8
  dt = 1
  dtmin = 1
  end_time = 2
[]
[Kernels]
  [solid_disp_x]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 0
    variable = disp_x
  []
  [solid_disp_y]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 1
    variable = disp_y
  []
  [solid_disp_z]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 2
    variable = disp_z
  []
  [solid_rot_x]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 3
    variable = rot_x
  []
  [solid_rot_y]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 4
    variable = rot_y
  []
  [solid_rot_z]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 5
    variable = rot_z
  []
[]
[AuxVariables]
  [forces_x]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[AuxKernels]
  [forces_x]
    type = MaterialRealVectorValueAux
    property = forces
    variable = forces_x
    execute_on = timestep_end
  []
[]
[Materials]
  [elasticity]
    type = ComputeElasticityBeam
    shear_coefficient = 1.0
    youngs_modulus = 30e6
    poissons_ratio = 0.3
    block = 0
  []
  [strain]
    type = ComputeIncrementalBeamStrain
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    area = 28.274
    Ay = 0.0
    Az = 0.0
    Iy = 1.0
    Iz = 1.0
    y_orientation = '0.0 1.0 0.0'
  []
  [stress]
    type = ComputeBeamResultants
    block = 0
  []
[]
[Postprocessors]
  [disp_x]
    type = PointValue
    point = '60.0 0.0 0.0'
    variable = disp_x
  []
  [disp_y]
    type = PointValue
    point = '60.0 0.0 0.0'
    variable = disp_y
  []
  [forces_x]
    type = PointValue
    point = '60.0 0.0 0.0'
    variable = forces_x
  []
[]
[Outputs]
  csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/euler_angles/euler_angle_auxvar.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  elem_type = HEX8
[]
[AuxVariables]
  [euler_angle_1]
    order = CONSTANT
    family = MONOMIAL
  []
  [euler_angle_2]
    order = CONSTANT
    family = MONOMIAL
  []
  [euler_angle_3]
    order = CONSTANT
    family = MONOMIAL
  []
  # Euler angles aux variable to check the correctness of value assignments
  [check_euler_angle_1]
    order = CONSTANT
    family = MONOMIAL
  []
  [check_euler_angle_2]
    order = CONSTANT
    family = MONOMIAL
  []
  [check_euler_angle_3]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Physics]
  [SolidMechanics]
    [QuasiStatic]
      [all]
        strain = FINITE
        add_variables = true
        generate_output = stress_zz
      []
    []
  []
[]
[AuxKernels]
  [euler_angle_1]
    type = FunctionAux
    variable = euler_angle_1
    function = '10*t'
  []
  [euler_angle_2]
    type = FunctionAux
    variable = euler_angle_2
    function = '20*t'
  []
  [euler_angle_3]
    type = FunctionAux
    variable = euler_angle_3
    function = '30*t'
  []
  # output Euler angles material property to check correctness of value assignment
  [mat_euler_angle_1]
    type = MaterialRealVectorValueAux
    variable = check_euler_angle_1
    property = 'Euler_angles'
    component = 0
   []
   [mat_euler_angle_2]
    type = MaterialRealVectorValueAux
    variable = check_euler_angle_2
    property = 'Euler_angles'
    component = 1
   []
   [mat_euler_angle_3]
    type = MaterialRealVectorValueAux
    variable = check_euler_angle_3
    property = 'Euler_angles'
    component = 2
   []
[]
[BCs]
  [Periodic]
    [all]
      variable = 'disp_x'
      auto_direction = 'z'
    []
  []
  [fix_x]
    type = DirichletBC
    variable = disp_x
    boundary = 'left'
    value = 0
  []
  [fix_y]
    type = DirichletBC
    variable = disp_y
    boundary = 'bottom'
    value = 0
  []
  [fix_z]
    type = DirichletBC
    variable = disp_z
    boundary = 'back'
    value = 0
  []
  [tdisp]
    type = FunctionDirichletBC
    variable = disp_z
    boundary = 'front'
    function = '0.01*t'
  []
[]
[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
    euler_angle_variables = 'euler_angle_1 euler_angle_2 euler_angle_3'
  []
  [stress]
    type = ComputeMultipleCrystalPlasticityStress
    crystal_plasticity_models = 'trial_xtalpl'
    tan_mod_type = exact
  []
  [trial_xtalpl]
    type = CrystalPlasticityKalidindiUpdate
    number_slip_systems = 12
    slip_sys_file_name = input_slip_sys.txt
  []
[]
[Postprocessors]
  [check_euler_angle_1]
    type = ElementAverageValue
    variable = check_euler_angle_1
  []
  [check_euler_angle_2]
    type = ElementAverageValue
    variable = check_euler_angle_2
  []
  [check_euler_angle_3]
    type = ElementAverageValue
    variable = check_euler_angle_3
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type'
  petsc_options_value = ' lu '
  nl_abs_tol = 1e-10
  nl_rel_tol = 1e-10
  nl_abs_step_tol = 1e-10
  dt = 0.1
  dtmin = 0.01
  end_time = 0.5
[]
[Outputs]
  csv = true
[]
(modules/solid_mechanics/test/tests/beam/static/euler_pipe_bend.i)
# Test for small strain Euler beam bending in y direction
# Modeling a tube with an outer radius of 15 mm and inner radius of 13 mm
# The length of the tube is 1.0 m
# E = 2.068e11 Pa and G = 7.956e10 with nu = 0.3
# A load of 5 N is applied at the end of the beam in the y-dir
# The displacement at the end is given by
# y = - W * L^3 / 3 * E * I
# y = - 5 * 1.0^3 / 3 * 2.068e11 * 1.7329e-8 = 4.65e-4 m
# where I = pi/2 * (r_o^4 - r_i^4)
# I = pi /2 * (0.015^4 - 0.013^4) = 1.7329e-8
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 10
  xmin = 0.0
  xmax = 1.0
  displacements = 'disp_x disp_y disp_z'
[]
[Variables]
  [disp_x]
    order = FIRST
    family = LAGRANGE
  []
  [disp_y]
    order = FIRST
    family = LAGRANGE
  []
  [disp_z]
    order = FIRST
    family = LAGRANGE
  []
  [rot_x]
    order = FIRST
    family = LAGRANGE
  []
  [rot_y]
    order = FIRST
    family = LAGRANGE
  []
  [rot_z]
    order = FIRST
    family = LAGRANGE
  []
[]
[BCs]
  [fixx1]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0.0
  []
  [fixy1]
    type = DirichletBC
    variable = disp_y
    boundary = left
    value = 0.0
  []
  [fixz1]
    type = DirichletBC
    variable = disp_z
    boundary = left
    value = 0.0
  []
  [fixr1]
    type = DirichletBC
    variable = rot_x
    boundary = left
    value = 0.0
  []
  [fixr2]
    type = DirichletBC
    variable = rot_y
    boundary = left
    value = 0.0
  []
  [fixr3]
    type = DirichletBC
    variable = rot_z
    boundary = left
    value = 0.0
  []
[]
[NodalKernels]
  [force_y2]
    type = ConstantRate
    variable = disp_y
    boundary = right
    rate = 5.0
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = PJFNK
  line_search = 'none'
  nl_max_its = 15
  nl_rel_tol = 1e-10
  nl_abs_tol = 1e-8
  dt = 1
  dtmin = 1
  end_time = 2
[]
[Kernels]
  [solid_disp_x]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 0
    variable = disp_x
  []
  [solid_disp_y]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 1
    variable = disp_y
  []
  [solid_disp_z]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 2
    variable = disp_z
  []
  [solid_rot_x]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 3
    variable = rot_x
  []
  [solid_rot_y]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 4
    variable = rot_y
  []
  [solid_rot_z]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 5
    variable = rot_z
  []
[]
[AuxVariables]
  [forces_y]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[AuxKernels]
  [forces_y]
    type = MaterialRealVectorValueAux
    property = forces
    variable = forces_y
    component = 1
    execute_on = timestep_end
  []
[]
[Materials]
  [elasticity]
    type = ComputeElasticityBeam
    youngs_modulus = 2.068e11
    poissons_ratio = 0.3
    shear_coefficient = 1.0
    block = 0
  []
  [strain]
    type = ComputeIncrementalBeamStrain
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    area = 1.759e-4
    Ay = 0.0
    Az = 0.0
    Iy = 1.7329e-8
    Iz = 1.7329e-8
    y_orientation = '0.0 1.0 0.0'
  []
  [stress]
    type = ComputeBeamResultants
    block = 0
  []
[]
[Postprocessors]
  [disp_x]
    type = PointValue
    point = '1.0 0.0 0.0'
    variable = disp_x
  []
  [disp_y]
    type = PointValue
    point = '1.0 0.0 0.0'
    variable = disp_y
  []
  [forces_y]
    type = PointValue
    point = '1.0 0.0 0.0'
    variable = forces_y
  []
[]
[Outputs]
  csv = true
[]
(test/tests/materials/types/test.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  xmin = 0
  xmax = 1
  ymin = 0
  ymax = 1
  nx = 2
  ny = 2
[]
[Variables]
  [./u]
    order = FIRST
    family = LAGRANGE
  [../]
[]
[AuxVariables]
  [./real]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stdvec0]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stdvec1]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stdvec0_qp0]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stdvec0_qp1]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./realvec0]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./realvec1]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./realvec2]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./densemat00]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./densemat01]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./tensor00]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./tensor11]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./tensor22]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stdvecgrad00]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stdvecgrad01]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stdvecgrad02]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stdvecgrad10]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stdvecgrad11]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stdvecgrad12]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
  [../]
[]
[AuxKernels]
  [./real0]
    type = MaterialRealAux
    variable = real
    property = real_prop
    execute_on = timestep_end
  [../]
  [./stdvec0]
    type = MaterialStdVectorAux
    variable = stdvec0
    property = stdvec_prop
    index = 0
    execute_on = timestep_end
  [../]
  [./stdvec1]
    type = MaterialStdVectorAux
    variable = stdvec1
    property = stdvec_prop
    index = 1
    execute_on = timestep_end
  [../]
  [./stdvec0_qp0]
    type = MaterialStdVectorAux
    variable = stdvec0_qp0
    property = stdvec_prop_qp
    index = 0
    selected_qp = 0
    execute_on = timestep_end
  [../]
  [./stdvec0_qp1]
    type = MaterialStdVectorAux
    variable = stdvec0_qp1
    property = stdvec_prop_qp
    index = 0
    selected_qp = 1
    execute_on = timestep_end
  [../]
  [./densemat00]
    type = MaterialRealDenseMatrixAux
    variable = densemat00
    property = matrix_prop
    row = 0
    column = 0
    execute_on = timestep_end
  [../]
  [./densemat01]
    type = MaterialRealDenseMatrixAux
    variable = densemat01
    property = matrix_prop
    row = 0
    column = 1
    execute_on = timestep_end
  [../]
  [./realvec0]
    type = MaterialRealVectorValueAux
    variable = realvec0
    property = realvec_prop
    component = 0
    execute_on = timestep_end
  [../]
  [./realvec1]
    type = MaterialRealVectorValueAux
    variable = realvec1
    property = realvec_prop
    component = 1
    execute_on = timestep_end
  [../]
  [./realvec2]
    type = MaterialRealVectorValueAux
    variable = realvec2
    property = realvec_prop
    component = 2
    execute_on = timestep_end
  [../]
  [./realtensor00]
    type = MaterialRealTensorValueAux
    variable = tensor00
    property = tensor_prop
    row = 0
    column = 0
    execute_on = timestep_end
  [../]
  [./realtensor11]
    type = MaterialRealTensorValueAux
    variable = tensor11
    property = tensor_prop
    row = 1
    column = 1
    execute_on = timestep_end
  [../]
  [./realtensor22]
    type = MaterialRealTensorValueAux
    variable = tensor22
    property = tensor_prop
    row = 2
    column = 2
    execute_on = timestep_end
  [../]
  [./stdvecgrad00]
    type = MaterialStdVectorRealGradientAux
    variable = stdvecgrad00
    property = stdvec_grad_prop
  [../]
  [./stdvecgrad01]
    type = MaterialStdVectorRealGradientAux
    variable = stdvecgrad01
    property = stdvec_grad_prop
    component = 1
  [../]
  [./stdvecgrad02]
    type = MaterialStdVectorRealGradientAux
    variable = stdvecgrad02
    property = stdvec_grad_prop
    component = 2
  [../]
  [./stdvecgrad10]
    type = MaterialStdVectorRealGradientAux
    variable = stdvecgrad10
    index = 1
    property = stdvec_grad_prop
  [../]
  [./stdvecgrad11]
    type = MaterialStdVectorRealGradientAux
    variable = stdvecgrad11
    index = 1
    component = 1
    property = stdvec_grad_prop
  [../]
  [./stdvecgrad12]
    type = MaterialStdVectorRealGradientAux
    variable = stdvecgrad12
    index = 1
    component = 2
    property = stdvec_grad_prop
  [../]
[]
[BCs]
  [./left]
    type = DirichletBC
    variable = u
    boundary = 3
    value = 0
  [../]
  [./right]
    type = DirichletBC
    variable = u
    boundary = 1
    value = 1
  [../]
[]
[Materials]
  [./mat]
    type = TypesMaterial
    block = 0
  [../]
[]
[Executioner]
  type = Steady
  solve_type = PJFNK
[]
[Outputs]
  file_base = test_out
  exodus = true
[]
(modules/solid_mechanics/test/tests/beam/constraints/frictional_constraint.i)
# Test for frictional beam constraint.
#
# Using a simple L-shaped geometry with a frictional constraint at the
# corner between the two beams. The longer beam properties and loading is
# taken from an earlier beam regression test for static loading. The maximum
# applied load of 50000 lb should result in a displacement of 3.537e-3. Since
# the constraint is frictional with a low normal force (1.0) and coefficient
# of friction (0.05) and the short beam is much less stiff, the
# y-dir displacement of the long beam is still 3.537e-3. However, the y-dir
# displacement of the short beam increases until the force exceeds the
# frictional capacity which in this case is 0.05 and then remains constant
# after that point.
[Mesh]
  file = beam_cons_patch.e
  displacements = 'disp_x disp_y disp_z'
[]
[Variables]
  [disp_x]
    order = FIRST
    family = LAGRANGE
  []
  [disp_y]
    order = FIRST
    family = LAGRANGE
  []
  [disp_z]
    order = FIRST
    family = LAGRANGE
  []
  [rot_x]
    order = FIRST
    family = LAGRANGE
  []
  [rot_y]
    order = FIRST
    family = LAGRANGE
  []
  [rot_z]
    order = FIRST
    family = LAGRANGE
  []
[]
[BCs]
  [fixx1]
    type = DirichletBC
    variable = disp_x
    boundary = '1001 1003'
    value = 0.0
  []
  [fixy1]
    type = DirichletBC
    variable = disp_y
    boundary = '1001 1003'
    value = 0.0
  []
  [fixz1]
    type = DirichletBC
    variable = disp_z
    boundary = '1001 1003'
    value = 0.0
  []
  [fixr1]
    type = DirichletBC
    variable = rot_x
    boundary = '1001 1003'
    value = 0.0
  []
  [fixr2]
    type = DirichletBC
    variable = rot_y
    boundary = '1001 1003'
    value = 0.0
  []
  [fixr3]
    type = DirichletBC
    variable = rot_z
    boundary = '1001 1003'
    value = 0.0
  []
[]
[Constraints]
  [tie_y_fuel]
    type = NodalFrictionalConstraint
    normal_force = 1.0
    tangential_penalty = 1.2e5
    friction_coefficient = 0.05
    boundary = 1005
    secondary = 1004
    variable = disp_y
  []
  [tie_x_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = disp_x
  []
  [tie_z_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = disp_z
  []
  [tie_rot_y_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = rot_y
  []
  [tie_rot_x_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = rot_x
  []
  [tie_rot_z_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = rot_z
  []
[]
[Functions]
  [force_loading]
    type = PiecewiseLinear
    x = '0.0 5.0'
    y = '0.0 50000.0'
  []
[]
[NodalKernels]
  [force_x2]
    type = UserForcingFunctorNodalKernel
    variable = disp_y
    boundary = '1004'
    functor = force_loading
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = PJFNK
  line_search = 'none'
  nl_max_its = 15
  nl_rel_tol = 1e-10
  nl_abs_tol = 1e-8
  dt = 1
  dtmin = 1
  end_time = 5
[]
[Kernels]
  [solid_disp_x]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 0
    variable = disp_x
  []
  [solid_disp_y]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 1
    variable = disp_y
  []
  [solid_disp_z]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 2
    variable = disp_z
  []
  [solid_rot_x]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 3
    variable = rot_x
  []
  [solid_rot_y]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 4
    variable = rot_y
  []
  [solid_rot_z]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 5
    variable = rot_z
  []
[]
[Materials]
  [elasticity_pipe]
    type = ComputeElasticityBeam
    shear_coefficient = 1.0
    youngs_modulus = 30e6
    poissons_ratio = 0.3
    block = 1
  []
  [strain_pipe]
    type = ComputeIncrementalBeamStrain
    block = '1'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    area = 28.274
    Ay = 0.0
    Az = 0.0
    Iy = 1.0
    Iz = 1.0
    y_orientation = '0.0 0.0 1.0'
  []
  [stress_pipe]
    type = ComputeBeamResultants
    block = 1
  []
  [elasticity_cons]
    type = ComputeElasticityBeam
    shear_coefficient = 1.0
    youngs_modulus = 10e2
    poissons_ratio = 0.3
    block = 2
  []
  [strain_cons]
    type = ComputeIncrementalBeamStrain
    block = '2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    area = 1.0
    Ay = 0.0
    Az = 0.0
    Iy = 1.0
    Iz = 1.0
    y_orientation = '0.0 0.0 1.0'
  []
  [stress_cons]
    type = ComputeBeamResultants
    block = 2
  []
[]
[AuxVariables]
  [forces_y]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[AuxKernels]
  [forces_y]
    type = MaterialRealVectorValueAux
    property = forces
    variable = forces_y
    execute_on = timestep_end
    component = 1
  []
[]
[Postprocessors]
  [disp_y_n4]
    type = NodalVariableValue
    variable = disp_y
    nodeid = 3
  []
  [disp_y_n2]
    type = NodalVariableValue
    variable = disp_y
    nodeid = 1
  []
  [horz_forces_y]
    type = PointValue
    point = '9.9 60.0 0.0'
    variable = forces_y
  []
  [forces_y]
    type = PointValue
    point = '10.0 59.9 0.0'
    variable = forces_y
  []
[]
[Outputs]
  csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/prop_block_read.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    xmin = 0
    ymin = 0
    xmax = 1
    ymax = 1
    nx = 2
    ny = 2
    elem_type = QUAD4
  []
  [./subdomain_id]
    input = gen
    type = SubdomainPerElementGenerator
    subdomain_ids = '0 1
                     0 1'
  [../]
  displacements = 'disp_x disp_y'
[]
[Variables]
  [./disp_x]
  [../]
  [./disp_y]
  [../]
[]
[GlobalParams]
  volumetric_locking_correction = true
[]
[AuxVariables]
  [./stress_yy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./e_yy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./fp_yy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./gss]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./euler1]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./euler2]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./euler3]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[Functions]
  [./tdisp]
    type = ParsedFunction
    expression = 0.01*t
  [../]
[]
[UserObjects]
  [./prop_read]
    type = PropertyReadFile
    prop_file_name = 'euler_ang_file.txt'
    # Enter file data as prop#1, prop#2, .., prop#nprop
    nprop = 3
    read_type = block
    nblock= 2
  [../]
[]
[AuxKernels]
  [./stress_yy]
    type = RankTwoAux
    variable = stress_yy
    rank_two_tensor = stress
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  [../]
  [./e_yy]
    type = RankTwoAux
    variable = e_yy
    rank_two_tensor = lage
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  [../]
  [./fp_yy]
    type = RankTwoAux
    variable = fp_yy
    rank_two_tensor = fp
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  [../]
  [./gss]
    type = MaterialStdVectorAux
    variable = gss
    property = state_var_gss
    index = 0
    execute_on = timestep_end
  [../]
  [./euler1]
    type = MaterialRealVectorValueAux
    variable = euler1
    property = Euler_angles
    component = 0
    execute_on = timestep_end
  [../]
  [./euler2]
    type = MaterialRealVectorValueAux
    variable = euler2
    property = Euler_angles
    component = 1
    execute_on = timestep_end
  [../]
  [./euler3]
    type = MaterialRealVectorValueAux
    variable = euler3
    property = Euler_angles
    component = 2
    execute_on = timestep_end
  [../]
[]
[BCs]
  [./fix_x]
    type = DirichletBC
    variable = disp_x
    boundary = 'left'
    value = 0
  [../]
  [./fix_y]
    type = DirichletBC
    variable = disp_y
    boundary = 'bottom'
    value = 0
  [../]
  [./tdisp]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = top
    function = tdisp
  [../]
[]
[UserObjects]
  [./slip_rate_gss]
    type = CrystalPlasticitySlipRateGSS
    variable_size = 12
    slip_sys_file_name = input_slip_sys.txt
    num_slip_sys_flowrate_props = 2
    flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
    uo_state_var_name = state_var_gss
  [../]
  [./slip_resistance_gss]
    type = CrystalPlasticitySlipResistanceGSS
    variable_size = 12
    uo_state_var_name = state_var_gss
  [../]
  [./state_var_gss]
    type = CrystalPlasticityStateVariable
    variable_size = 12
    groups = '0 4 8 12'
    group_values = '60.8 60.8 60.8'
    uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
    scale_factor = 1.0
  [../]
  [./state_var_evol_rate_comp_gss]
    type = CrystalPlasticityStateVarRateComponentGSS
    variable_size = 12
    hprops = '1.0 541.5 109.8 2.5'
    uo_slip_rate_name = slip_rate_gss
    uo_state_var_name = state_var_gss
  [../]
[]
[Materials]
  [./crysp]
    type = FiniteStrainUObasedCP
    stol = 1e-2
    tan_mod_type = exact
    uo_slip_rates = 'slip_rate_gss'
    uo_slip_resistances = 'slip_resistance_gss'
    uo_state_vars = 'state_var_gss'
    uo_state_var_evol_rate_comps = 'state_var_evol_rate_comp_gss'
  [../]
  [./strain]
    type = ComputeFiniteStrain
    displacements = 'disp_x disp_y'
  [../]
  [./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
    read_prop_user_object = prop_read
  [../]
[]
[Postprocessors]
  [./stress_yy]
    type = ElementAverageValue
    variable = stress_yy
  [../]
  [./e_yy]
    type = ElementAverageValue
    variable = e_yy
  [../]
  [./fp_yy]
    type = ElementAverageValue
    variable = fp_yy
  [../]
  [./gss]
    type = ElementAverageValue
    variable = gss
  [../]
[]
[Preconditioning]
  [./smp]
    type = SMP
    full = true
  [../]
[]
[Executioner]
  type = Transient
  dt = 0.01
  solve_type = 'PJFNK'
  petsc_options_iname = -pc_hypre_type
  petsc_options_value = boomerang
  nl_abs_tol = 1e-10
  nl_rel_step_tol = 1e-10
  dtmax = 10.0
  nl_rel_tol = 1e-10
  end_time = 1
  dtmin = 0.01
  num_steps = 10
  nl_abs_step_tol = 1e-10
[]
[Outputs]
  exodus = true
[]
[Kernels]
  [SolidMechanics]
    displacements = 'disp_x disp_y'
    use_displaced_mesh = true
  [../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/euler_angles/euler_angle_conflict.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  xmax = 4
  nx = 4
  elem_type = HEX8
[]
[AuxVariables]
  [euler_angle_1]
    order = CONSTANT
    family = MONOMIAL
  []
  [euler_angle_2]
    order = CONSTANT
    family = MONOMIAL
  []
  [euler_angle_3]
    order = CONSTANT
    family = MONOMIAL
  []
  # Euler angles aux variable to check the correctness of value assignments
  [check_euler_angle_1]
    order = CONSTANT
    family = MONOMIAL
  []
  [check_euler_angle_2]
    order = CONSTANT
    family = MONOMIAL
  []
  [check_euler_angle_3]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Physics]
  [SolidMechanics]
    [QuasiStatic]
      [all]
        strain = FINITE
        add_variables = true
        generate_output = stress_zz
      []
    []
  []
[]
[AuxKernels]
  [euler_angle_1]
    type = FunctionAux
    variable = euler_angle_1
    function = '10*t'
  []
  [euler_angle_2]
    type = FunctionAux
    variable = euler_angle_2
    function = '20*t'
  []
  [euler_angle_3]
    type = FunctionAux
    variable = euler_angle_3
    function = '30*t'
  []
  # output Euler angles material property to check correctness of value assignment
  [mat_euler_angle_1]
    type = MaterialRealVectorValueAux
    variable = check_euler_angle_1
    property = 'Euler_angles'
    component = 0
   []
   [mat_euler_angle_2]
    type = MaterialRealVectorValueAux
    variable = check_euler_angle_2
    property = 'Euler_angles'
    component = 1
   []
   [mat_euler_angle_3]
    type = MaterialRealVectorValueAux
    variable = check_euler_angle_3
    property = 'Euler_angles'
    component = 2
   []
[]
[BCs]
  [Periodic]
    [all]
      variable = 'disp_x'
      auto_direction = 'z'
    []
  []
  [fix_x]
    type = DirichletBC
    variable = disp_x
    boundary = 'left'
    value = 0
  []
  [fix_y]
    type = DirichletBC
    variable = disp_y
    boundary = 'bottom'
    value = 0
  []
  [fix_z]
    type = DirichletBC
    variable = disp_z
    boundary = 'back'
    value = 0
  []
  [tdisp]
    type = FunctionDirichletBC
    variable = disp_z
    boundary = 'front'
    function = '0.01*t'
  []
[]
[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
    read_prop_user_object = prop_read
    euler_angle_variables = 'euler_angle_1 euler_angle_2 euler_angle_3'
  []
  [stress]
    type = ComputeMultipleCrystalPlasticityStress
    crystal_plasticity_models = 'trial_xtalpl'
    tan_mod_type = exact
  []
  [trial_xtalpl]
    type = CrystalPlasticityKalidindiUpdate
    number_slip_systems = 12
    slip_sys_file_name = input_slip_sys.txt
  []
[]
[UserObjects]
  [prop_read]
    type = PropertyReadFile
    prop_file_name = 'euler_ang_file.txt'
    # Enter file data as prop#1, prop#2, .., prop#nprop
    nprop = 3
    read_type = element
  []
[]
[Postprocessors]
  [check_euler_angle_1]
    type = ElementAverageValue
    variable = check_euler_angle_1
  []
  [check_euler_angle_2]
    type = ElementAverageValue
    variable = check_euler_angle_2
  []
  [check_euler_angle_3]
    type = ElementAverageValue
    variable = check_euler_angle_3
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type'
  petsc_options_value = ' lu '
  nl_abs_tol = 1e-10
  nl_rel_tol = 1e-10
  nl_abs_step_tol = 1e-10
  dt = 0.1
  dtmin = 0.01
  end_time = 0.5
[]
[Outputs]
  csv = true
[]
(modules/solid_mechanics/test/tests/ad_smeared_cracking/cracking_function.i)
#
# Simple pull test for cracking. This tests the option to prescribe the
# cracking strength using an AuxVariable. In this case, an elemental
# AuxVariable is used, and a function is used to prescribe its value.
# One of the elements is weaker than the others, so the crack localizes
# in that element.
#
[Mesh]
   file = plate.e
[]
[GlobalParams]
  displacements = 'disp_x disp_y'
[]
[AuxVariables]
  [./cracking_stress_fn]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./crack_flags2]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[Functions]
  [./displ]
    type = PiecewiseLinear
    x = '0 0.1 0.2 0.3 0.4'
    y = '0 0.001 0 -0.001 0'
  [../]
  [./fstress]
    type = ParsedFunction
    expression = 'if(x > 0.667, 1.1e6, 1.2e6)'
  [../]
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    strain = FINITE
    add_variables = true
    generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx strain_xx strain_yy strain_xy strain_yz'
    use_automatic_differentiation = true
  [../]
[]
[AuxKernels]
  [./cracking_stress_fn]
    type = FunctionAux
    variable = cracking_stress_fn
    function = fstress
    execute_on = initial
  [../]
  [./crack_flags2]
    type = ADMaterialRealVectorValueAux
    property = crack_flags
    variable = crack_flags2
   component = 2
  [../]
[]
[BCs]
  [./pull]
    type = ADFunctionDirichletBC
    variable = disp_x
    boundary = '3 4'
    function = displ
  [../]
  [./pin_x]
    type = ADDirichletBC
    variable = disp_x
    boundary =  '1 2'
    value = 0
  [../]
  [./pin_y]
    type = ADDirichletBC
    variable = disp_y
    boundary = '1 4'
    value = 0.0
  [../]
[]
[Materials]
  [./elasticity_tensor]
    type = ADComputeIsotropicElasticityTensor
    youngs_modulus = 200.0e7
    poissons_ratio = 0.0
  [../]
  [./elastic_stress]
    type = ADComputeSmearedCrackingStress
    cracking_stress = cracking_stress_fn
    cracked_elasticity_type = FULL
    softening_models = abrupt_softening
  [../]
  [./abrupt_softening]
    type = ADAbruptSoftening
    residual_stress = 0.0
  [../]
[]
[Postprocessors]
  [./elem_stress_xx]
    type = ElementalVariableValue
    variable = stress_xx
    elementid = 2
  [../]
  [./elem_strain_xx]
    type = ElementalVariableValue
    variable = strain_xx
    elementid = 2
  [../]
  [./elem_crack_flags_x]
    type = ElementalVariableValue
    variable = crack_flags2
    elementid = 2
  [../]
[]
[Executioner]
  type = Transient
  solve_type = Newton
  petsc_options_iname = '-ksp_gmres_restart'
  petsc_options_value = '101               '
  line_search = 'none'
  l_max_its = 100
  nl_max_its = 100
  nl_rel_tol = 1e-8
  nl_abs_tol = 1e-6
  l_tol = 1e-5
  start_time = 0.0
  end_time = 0.2
  dt = 0.0025
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/ad_smeared_cracking/cracking_rotation.i)
# This test is to ensure that the smeared cracking model correctly handles finite
# rotation of cracked elements.
# This consists of a single element that is first  subjected to tensile loading
# in the y-direction via a prescribed displacement. This loading is sufficiently
# high to crack the material in that direction, but not completely unload. The
# prescribed displacement is then reversed so that the element is returned to its
# original configuration.
# In the next phase of the analysis, this element is then rotated 90 degrees by
# prescribing the displacement of the bottom of the element. The prescribed
# displacement BC used to crack the element in the first phase is deactivated.
# Once the element is fully rotated, a new BC is activated on what was originally
# the top surface (but is now the surface on the right hand side) to pull in
# the x-direction.
# If everything is working correctly, the model should re-load on the original
# crack (which should be rotated along with the elemnent) up to the peak stress
# in the first phase of the analysis, and then continue the unloading process
# as the crack strains continue to increase. Throughout this analysis, there should
# only be a single crack, as manifested in the crack_flags variables.
[Mesh]
  file = cracking_test.e
[]
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    strain = FINITE
    add_variables = true
    generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
    use_automatic_differentiation = true
  [../]
[]
[AuxVariables]
  [./crack_flags1]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./crack_flags2]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./crack_flags3]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[AuxKernels]
  [./crack_flags1]
    type = ADMaterialRealVectorValueAux
    property = crack_flags
    variable = crack_flags1
    component = 0
  [../]
  [./crack_flags2]
    type = ADMaterialRealVectorValueAux
    property = crack_flags
    variable = crack_flags2
    component = 1
  [../]
  [./crack_flags3]
    type = ADMaterialRealVectorValueAux
    property = crack_flags
    variable = crack_flags3
    component = 2
  [../]
[]
[BCs]
  [./x_pin]
    type = ADDirichletBC
    variable = disp_x
    boundary = '15 16'
    value = 0.0
  [../]
  [./y_pin]
    type = ADDirichletBC
    variable = disp_y
    boundary = '15 16'
    value = 0.0
  [../]
  [./z_all]
    type = ADDirichletBC
    variable = disp_z
    boundary = '11 12 13 14 15 16 17 18'
    value = 0.0
  [../]
  [./x_lb]
    type = ADFunctionDirichletBC
    variable = disp_x
    boundary = '11 12'
    function = 'if(t<10,0,if(t>=100,1,1-cos((t-10)*pi/180)))'
  [../]
  [./y_lb]
    type = ADFunctionDirichletBC
    variable = disp_y
    boundary = '11 12'
    function = 'if(t<10,0,if(t>=100,1,sin((t-10)*pi/180)))'
  [../]
  [./x_lt]
    type = ADFunctionDirichletBC
    variable = disp_x
    boundary = '13 14'
    function = '2+(t-100)*0.01'
  [../]
  [./x_rt]
    type = ADFunctionDirichletBC
    variable = disp_x
    boundary = '17 18'
    function = '1+(t-100)*0.01'
  [../]
  [./top_pull]
    type = ADFunctionDirichletBC
    variable = disp_y
    boundary = '13 14 17 18'
    function = 'if(t<5,t*0.01,0.05-(t-5)*0.01)'
  [../]
[]
[Materials]
  [./elasticity_tensor]
    type = ADComputeIsotropicElasticityTensor
    youngs_modulus = 100.e9
    poissons_ratio = 0.
  [../]
  [./cracking_stress]
    type = ADComputeSmearedCrackingStress
    shear_retention_factor = 0.1
    cracking_stress = 3.e9
    cracked_elasticity_type = FULL
    softening_models = exponential_softening
  [../]
  [./exponential_softening]
    type = ADExponentialSoftening
  [../]
[]
[Executioner]
  type = Transient
  solve_type = Newton
  petsc_options_iname = '-ksp_gmres_restart -pc_type'
  petsc_options_value = '101                lu'
  line_search = 'none'
  l_max_its = 100
  l_tol = 1e-5
  nl_max_its = 100
  nl_abs_tol = 1e-5
  nl_rel_tol = 1e-12
  start_time = 0
  end_time = 110
  dt = 1
[]
[Controls]
  [./p1]
    type = TimePeriod
    start_time = 0.0
    end_time = 10.0
    disable_objects = 'BCs/x_lt BCs/x_rt'
    enable_objects = 'BCs/top_pull'
    reverse_on_false = false
    execute_on = 'initial timestep_begin'
  [../]
  [./p2]
    type = TimePeriod
    start_time = 10.0
    end_time = 101.0
    disable_objects = 'BCs/x_lt BCs/x_rt BCs/top_pull'
    reverse_on_false = false
    execute_on = 'initial timestep_begin'
  [../]
  [./p3]
    type = TimePeriod
    start_time = 101.0
    end_time = 110.0
    enable_objects = 'BCs/x_lt BCs/x_rt'
    disable_objects = 'BCs/top_pull'
    reverse_on_false = false
    execute_on = 'initial timestep_begin'
  [../]
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_euler_angle.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  elem_type = HEX8
[]
[AuxVariables]
  [euler_angle_1]
    order = CONSTANT
    family = MONOMIAL
  []
  [euler_angle_2]
    order = CONSTANT
    family = MONOMIAL
  []
  [euler_angle_3]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Physics/SolidMechanics/QuasiStatic/all]
  strain = FINITE
  add_variables = true
  generate_output = stress_zz
[]
[AuxKernels]
  [euler_angle_1]
    type = MaterialRealVectorValueAux
    variable = euler_angle_1
    property = updated_Euler_angle
    component = 0
    execute_on = timestep_end
  []
  [euler_angle_2]
    type = MaterialRealVectorValueAux
    variable = euler_angle_2
    property = updated_Euler_angle
    component = 1
    execute_on = timestep_end
  []
  [euler_angle_3]
    type = MaterialRealVectorValueAux
    variable = euler_angle_3
    property = updated_Euler_angle
    component = 2
    execute_on = timestep_end
  []
[]
[BCs]
  [Periodic]
    [all]
      variable = 'disp_x'
      auto_direction = 'z'
    []
  []
  [fix_x]
    type = DirichletBC
    variable = disp_x
    boundary = 'left'
    value = 0
  []
  [fix_y]
    type = DirichletBC
    variable = disp_y
    boundary = 'bottom'
    value = 0
  []
  [fix_z]
    type = DirichletBC
    variable = disp_z
    boundary = 'back'
    value = 0
  []
  [tdisp]
    type = FunctionDirichletBC
    variable = disp_z
    boundary = 'front'
    function = '0.01*t'
  []
[]
[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'
    tan_mod_type = exact
  []
  [trial_xtalpl]
    type = CrystalPlasticityKalidindiUpdate
    number_slip_systems = 12
    slip_sys_file_name = input_slip_sys.txt
  []
  [updated_euler_angle]
    type = ComputeUpdatedEulerAngle
    radian_to_degree = true
  []
[]
[Postprocessors]
  [euler_angle_1]
    type = ElementAverageValue
    variable = euler_angle_1
  []
  [euler_angle_2]
    type = ElementAverageValue
    variable = euler_angle_2
  []
  [euler_angle_3]
    type = ElementAverageValue
    variable = euler_angle_3
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type'
  petsc_options_value = ' lu '
  nl_abs_tol = 1e-10
  nl_rel_tol = 1e-10
  nl_abs_step_tol = 1e-10
  dt = 0.1
  dtmin = 0.01
  end_time = 5
[]
[Outputs]
  csv = true
[]
(modules/solid_mechanics/test/tests/beam/constraints/glued_constraint.i)
# Test for glued beam constraint.
#
# Using a simple L-shaped geometry with a glued constraint at the
# corner between the two beams. The longer beam properties and loading is
# taken from an earlier beam regression test for static loading. The maximum
# applied load of 50000 lb should result in a displacement of 3.537e-3. Since
# the constraint is glued, the y-dir displacement of the long beam is
# 3.537e-3 and the short beam y-dir displacement is the same. The stiffness of
# the short beam is much less than the longer beam and thus should not
# significantly influence the displacement solution.
[Mesh]
  file = beam_cons_patch.e
[]
[Variables]
  [disp_x]
    order = FIRST
    family = LAGRANGE
  []
  [disp_y]
    order = FIRST
    family = LAGRANGE
  []
  [disp_z]
    order = FIRST
    family = LAGRANGE
  []
  [rot_x]
    order = FIRST
    family = LAGRANGE
  []
  [rot_y]
    order = FIRST
    family = LAGRANGE
  []
  [rot_z]
    order = FIRST
    family = LAGRANGE
  []
[]
[BCs]
  [fixx1]
    type = DirichletBC
    variable = disp_x
    boundary = '1001 1003'
    value = 0.0
  []
  [fixy1]
    type = DirichletBC
    variable = disp_y
    boundary = '1001 1003'
    value = 0.0
  []
  [fixz1]
    type = DirichletBC
    variable = disp_z
    boundary = '1001 1003'
    value = 0.0
  []
  [fixr1]
    type = DirichletBC
    variable = rot_x
    boundary = '1001 1003'
    value = 0.0
  []
  [fixr2]
    type = DirichletBC
    variable = rot_y
    boundary = '1001 1003'
    value = 0.0
  []
  [fixr3]
    type = DirichletBC
    variable = rot_z
    boundary = '1001 1003'
    value = 0.0
  []
[]
[Constraints]
  [tie_y_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = disp_y
  []
  [tie_x_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = disp_x
  []
  [tie_z_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = disp_z
  []
  [tie_rot_y_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = rot_y
  []
  [tie_rot_x_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = rot_x
  []
  [tie_rot_z_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = rot_z
  []
[]
[Functions]
  [force_loading]
    type = PiecewiseLinear
    x = '0.0 5.0'
    y = '0.0 50000.0'
  []
  [disp_y_ramp]
    type = PiecewiseLinear
    x = '0.0 5.0'
    y = '0.0 1e-2'
  []
[]
[NodalKernels]
  [force_x2]
    type = UserForcingFunctorNodalKernel
    variable = disp_y
    boundary = '1004'
    functor = force_loading
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = PJFNK
  line_search = 'none'
  nl_max_its = 15
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-8
  dt = 1
  dtmin = 1
  end_time = 5
[]
[Kernels]
  [solid_disp_x]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 0
    variable = disp_x
  []
  [solid_disp_y]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 1
    variable = disp_y
  []
  [solid_disp_z]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 2
    variable = disp_z
  []
  [solid_rot_x]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 3
    variable = rot_x
  []
  [solid_rot_y]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 4
    variable = rot_y
  []
  [solid_rot_z]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 5
    variable = rot_z
  []
[]
[AuxVariables]
  [forces_y]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[AuxKernels]
  [forces_y]
    type = MaterialRealVectorValueAux
    property = forces
    variable = forces_y
    component = 1
    execute_on = timestep_end
  []
[]
[Materials]
  [elasticity_pipe]
    type = ComputeElasticityBeam
    shear_coefficient = 1.0
    youngs_modulus = 30e6
    poissons_ratio = 0.3
    block = 1
  []
  [strain_pipe]
    type = ComputeIncrementalBeamStrain
    block = '1'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    area = 28.274
    Ay = 0.0
    Az = 0.0
    Iy = 1.0
    Iz = 1.0
    y_orientation = '0.0 0.0 1.0'
  []
  [stress_pipe]
    type = ComputeBeamResultants
    block = 1
  []
  [elasticity_cons]
    type = ComputeElasticityBeam
    shear_coefficient = 1.0
    youngs_modulus = 10e2
    poissons_ratio = 0.3
    block = 2
  []
  [strain_cons]
    type = ComputeIncrementalBeamStrain
    block = '2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    area = 1.0
    Ay = 0.0
    Az = 0.0
    Iy = 1.0
    Iz = 1.0
    y_orientation = '0.0 0.0 1.0'
  []
  [stress_cons]
    type = ComputeBeamResultants
    block = 2
  []
[]
[Postprocessors]
  [disp_y_n4]
    type = NodalVariableValue
    variable = disp_y
    nodeid = 3
  []
  [disp_y_n2]
    type = NodalVariableValue
    variable = disp_y
    nodeid = 1
  []
  [forces_y]
    type = PointValue
    point = '10.0 59.9 0.0'
    variable = forces_y
  []
[]
[Outputs]
  csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/save_euler.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  elem_type = QUAD4
  displacements = 'disp_x disp_y'
  nx = 2
  ny = 2
[]
[Variables]
  [./disp_x]
  [../]
  [./disp_y]
  [../]
[]
[GlobalParams]
  volumetric_locking_correction = true
[]
[AuxVariables]
  [./stress_yy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./e_yy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./fp_yy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./gss]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./euler1]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./euler2]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./euler3]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[Functions]
  [./tdisp]
    type = ParsedFunction
    expression = 0.01*t
  [../]
[]
[UserObjects]
  [./prop_read]
    type = PropertyReadFile
    prop_file_name = 'euler_ang_file.txt'
    # Enter file data as prop#1, prop#2, .., prop#nprop
    nprop = 3
    read_type = element
  [../]
[]
[AuxKernels]
  [./stress_yy]
    type = RankTwoAux
    variable = stress_yy
    rank_two_tensor = stress
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  [../]
  [./e_yy]
    type = RankTwoAux
    variable = e_yy
    rank_two_tensor = lage
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  [../]
  [./fp_yy]
    type = RankTwoAux
    variable = fp_yy
    rank_two_tensor = fp
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  [../]
  [./gss]
    type = MaterialStdVectorAux
    variable = gss
    property = state_var_gss
    index = 0
    execute_on = timestep_end
  [../]
  [./euler1]
    type = MaterialRealVectorValueAux
    variable = euler1
    property = Euler_angles
    component = 0
    execute_on = timestep_end
  [../]
  [./euler2]
    type = MaterialRealVectorValueAux
    variable = euler2
    property = Euler_angles
    component = 1
    execute_on = timestep_end
  [../]
  [./euler3]
    type = MaterialRealVectorValueAux
    variable = euler3
    property = Euler_angles
    component = 2
    execute_on = timestep_end
  [../]
[]
[BCs]
  [./fix_x]
    type = DirichletBC
    variable = disp_x
    boundary = 'left'
    value = 0
  [../]
  [./fix_y]
    type = DirichletBC
    variable = disp_y
    boundary = 'bottom'
    value = 0
  [../]
  [./tdisp]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = top
    function = tdisp
  [../]
[]
[UserObjects]
  [./slip_rate_gss]
    type = CrystalPlasticitySlipRateGSS
    variable_size = 12
    slip_sys_file_name = input_slip_sys.txt
    num_slip_sys_flowrate_props = 2
    flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
    uo_state_var_name = state_var_gss
  [../]
  [./slip_resistance_gss]
    type = CrystalPlasticitySlipResistanceGSS
    variable_size = 12
    uo_state_var_name = state_var_gss
  [../]
  [./state_var_gss]
    type = CrystalPlasticityStateVariable
    variable_size = 12
    groups = '0 4 8 12'
    group_values = '60.8 60.8 60.8'
    uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
    scale_factor = 1.0
  [../]
  [./state_var_evol_rate_comp_gss]
    type = CrystalPlasticityStateVarRateComponentGSS
    variable_size = 12
    hprops = '1.0 541.5 109.8 2.5'
    uo_slip_rate_name = slip_rate_gss
    uo_state_var_name = state_var_gss
  [../]
[]
[Materials]
  [./crysp]
    type = FiniteStrainUObasedCP
    stol = 1e-2
    tan_mod_type = exact
    uo_slip_rates = 'slip_rate_gss'
    uo_slip_resistances = 'slip_resistance_gss'
    uo_state_vars = 'state_var_gss'
    uo_state_var_evol_rate_comps = 'state_var_evol_rate_comp_gss'
  [../]
  [./strain]
    type = ComputeFiniteStrain
    displacements = 'disp_x disp_y'
  [../]
  [./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
    read_prop_user_object = prop_read
  [../]
[]
[Postprocessors]
  [./stress_yy]
    type = ElementAverageValue
    variable = stress_yy
  [../]
  [./e_yy]
    type = ElementAverageValue
    variable = e_yy
  [../]
  [./fp_yy]
    type = ElementAverageValue
    variable = fp_yy
  [../]
  [./gss]
    type = ElementAverageValue
    variable = gss
  [../]
[]
[Preconditioning]
  [./smp]
    type = SMP
    full = true
  [../]
[]
[Executioner]
  type = Transient
  dt = 0.01
  solve_type = 'PJFNK'
  petsc_options_iname = -pc_hypre_type
  petsc_options_value = boomerang
  nl_abs_tol = 1e-10
  nl_rel_step_tol = 1e-10
  dtmax = 10.0
  nl_rel_tol = 1e-10
  end_time = 1
  dtmin = 0.01
  num_steps = 10
  nl_abs_step_tol = 1e-10
[]
[Outputs]
  exodus = true
[]
[Kernels]
  [SolidMechanics]
    displacements = 'disp_x disp_y'
    use_displaced_mesh = true
  [../]
[]
(modules/solid_mechanics/test/tests/beam/constraints/frictionless_constraint.i)
# Test for frictionless beam constraint.
#
# Using a simple L-shaped geometry with a frictionless constraint at the
# corner between the two beams. The longer beam properties and loading is
# taken from an earlier beam regression test for static loading. The maximum
# applied load of 50000 lb should result in a displacement of 3.537e-3. Since
# the constraint is frictionless, the y-dir displacement of the long beam is
# 3.537e-3 and the short beam y-dir displacement is zero.
[Mesh]
  file = beam_cons_patch.e
  displacements = 'disp_x disp_y disp_z'
[]
[Variables]
  [disp_x]
    order = FIRST
    family = LAGRANGE
  []
  [disp_y]
    order = FIRST
    family = LAGRANGE
  []
  [disp_z]
    order = FIRST
    family = LAGRANGE
  []
  [rot_x]
    order = FIRST
    family = LAGRANGE
  []
  [rot_y]
    order = FIRST
    family = LAGRANGE
  []
  [rot_z]
    order = FIRST
    family = LAGRANGE
  []
[]
[BCs]
  [fixx1]
    type = DirichletBC
    variable = disp_x
    boundary = '1001 1003'
    value = 0.0
  []
  [fixy1]
    type = DirichletBC
    variable = disp_y
    boundary = '1001 1003'
    value = 0.0
  []
  [fixz1]
    type = DirichletBC
    variable = disp_z
    boundary = '1001 1003'
    value = 0.0
  []
  [fixr1]
    type = DirichletBC
    variable = rot_x
    boundary = '1001 1003'
    value = 0.0
  []
  [fixr2]
    type = DirichletBC
    variable = rot_y
    boundary = '1001 1003'
    value = 0.0
  []
  [fixr3]
    type = DirichletBC
    variable = rot_z
    boundary = '1001 1003'
    value = 0.0
  []
[]
[Constraints]
  [tie_y_fuel]
    type = NodalFrictionalConstraint
    normal_force = 1000
    tangential_penalty = 1.2e6
    friction_coefficient = 0.0
    boundary = 1005
    secondary = 1004
    variable = disp_y
  []
  [tie_x_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = disp_x
  []
  [tie_z_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = disp_z
  []
  [tie_rot_y_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = rot_y
  []
  [tie_rot_x_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = rot_x
  []
  [tie_rot_z_fuel]
    type = NodalStickConstraint
    penalty = 1.2e14
    boundary = 1005
    secondary = 1004
    variable = rot_z
  []
[]
[Functions]
  [force_loading]
    type = PiecewiseLinear
    x = '0.0 5.0'
    y = '0.0 50000.0'
  []
[]
[NodalKernels]
  [force_x2]
    type = UserForcingFunctorNodalKernel
    variable = disp_y
    boundary = '1004'
    functor = force_loading
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = PJFNK
  line_search = 'none'
  nl_max_its = 15
  nl_rel_tol = 1e-10
  nl_abs_tol = 1e-8
  dt = 1
  dtmin = 1
  end_time = 5
[]
[Kernels]
  [solid_disp_x]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 0
    variable = disp_x
  []
  [solid_disp_y]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 1
    variable = disp_y
  []
  [solid_disp_z]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 2
    variable = disp_z
  []
  [solid_rot_x]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 3
    variable = rot_x
  []
  [solid_rot_y]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 4
    variable = rot_y
  []
  [solid_rot_z]
    type = StressDivergenceBeam
    block = '1 2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 5
    variable = rot_z
  []
[]
[AuxVariables]
  [forces_y]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[AuxKernels]
  [forces_y]
    type = MaterialRealVectorValueAux
    property = forces
    variable = forces_y
    component = 1
    execute_on = timestep_end
  []
[]
[Materials]
  [elasticity_pipe]
    type = ComputeElasticityBeam
    shear_coefficient = 1.0
    youngs_modulus = 30e6
    poissons_ratio = 0.3
    block = 1
  []
  [strain_pipe]
    type = ComputeIncrementalBeamStrain
    block = '1'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    area = 28.274
    Ay = 0.0
    Az = 0.0
    Iy = 1.0
    Iz = 1.0
    y_orientation = '0.0 0.0 1.0'
  []
  [stress_pipe]
    type = ComputeBeamResultants
    block = 1
  []
  [elasticity_cons]
    type = ComputeElasticityBeam
    shear_coefficient = 1.0
    youngs_modulus = 10e2
    poissons_ratio = 0.3
    block = 2
  []
  [strain_cons]
    type = ComputeIncrementalBeamStrain
    block = '2'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    area = 1.0
    Ay = 0.0
    Az = 0.0
    Iy = 1.0
    Iz = 1.0
    y_orientation = '0.0 0.0 1.0'
  []
  [stress_cons]
    type = ComputeBeamResultants
    block = 2
  []
[]
[Postprocessors]
  [disp_y_n4]
    type = NodalVariableValue
    variable = disp_y
    nodeid = 3
  []
  [disp_y_n2]
    type = NodalVariableValue
    variable = disp_y
    nodeid = 1
  []
  [forces_y]
    type = PointValue
    point = '10.0 59.9 0.0'
    variable = forces_y
  []
[]
[Outputs]
  csv = true
[]
(modules/solid_mechanics/test/tests/beam/static/euler_pipe_axial_disp.i)
# Test for small strain Euler beam axial loading in x direction.
# Modeling a pipe with an OD of 10 inches and ID of 8 inches
# The length of the pipe is 5 feet (60 inches) and E = 30e6
# G = 11.54e6 with nu = 0.3
# The applied axial load is 50000 lb which results in a
# displacement of 3.537e-3 inches at the end
# delta = PL/AE = 50000 * 60 / pi (5^2 - 4^2) * 30e6 = 3.537e-3
# In this analysis the displacement is used as a BC
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 10
  xmin = 0.0
  xmax = 60.0
  displacements = 'disp_x disp_y disp_z'
[]
[Variables]
  [disp_x]
    order = FIRST
    family = LAGRANGE
  []
  [disp_y]
    order = FIRST
    family = LAGRANGE
  []
  [disp_z]
    order = FIRST
    family = LAGRANGE
  []
  [rot_x]
    order = FIRST
    family = LAGRANGE
  []
  [rot_y]
    order = FIRST
    family = LAGRANGE
  []
  [rot_z]
    order = FIRST
    family = LAGRANGE
  []
[]
[BCs]
  [fixx1]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0.0
  []
  [fixy1]
    type = DirichletBC
    variable = disp_y
    boundary = left
    value = 0.0
  []
  [fixz1]
    type = DirichletBC
    variable = disp_z
    boundary = left
    value = 0.0
  []
  [fixr1]
    type = DirichletBC
    variable = rot_x
    boundary = left
    value = 0.0
  []
  [fixr2]
    type = DirichletBC
    variable = rot_y
    boundary = left
    value = 0.0
  []
  [fixr3]
    type = DirichletBC
    variable = rot_z
    boundary = left
    value = 0.0
  []
  [appl_disp_x2]
    type = DirichletBC
    variable = disp_x
    boundary = right
    value = 3.537e-3
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = PJFNK
  line_search = 'none'
  nl_max_its = 15
  nl_rel_tol = 1e-10
  nl_abs_tol = 1e-8
  dt = 1
  dtmin = 1
  end_time = 2
[]
[Kernels]
  [solid_disp_x]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 0
    variable = disp_x
  []
  [solid_disp_y]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 1
    variable = disp_y
  []
  [solid_disp_z]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 2
    variable = disp_z
  []
  [solid_rot_x]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 3
    variable = rot_x
  []
  [solid_rot_y]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 4
    variable = rot_y
  []
  [solid_rot_z]
    type = StressDivergenceBeam
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    component = 5
    variable = rot_z
  []
[]
[AuxVariables]
  [forces_x]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[AuxKernels]
  [forces_x]
    type = MaterialRealVectorValueAux
    property = forces
    variable = forces_x
    execute_on = timestep_end
  []
[]
[Materials]
  [elasticity]
    type = ComputeElasticityBeam
    youngs_modulus = 30e6
    poissons_ratio = 0.3
    shear_coefficient = 1.0
    block = 0
  []
  [strain]
    type = ComputeIncrementalBeamStrain
    block = '0'
    displacements = 'disp_x disp_y disp_z'
    rotations = 'rot_x rot_y rot_z'
    area = 28.274
    Ay = 0.0
    Az = 0.0
    Iy = 1.0
    Iz = 1.0
    y_orientation = '0.0 1.0 0.0'
  []
  [stress]
    type = ComputeBeamResultants
    block = 0
  []
[]
[Postprocessors]
  [disp_x]
    type = PointValue
    point = '60.0 0.0 0.0'
    variable = disp_x
  []
  [disp_y]
    type = PointValue
    point = '60.0 0.0 0.0'
    variable = disp_y
  []
  [forces_x]
    type = PointValue
    point = '60.0 0.0 0.0'
    variable = forces_x
  []
[]
[Outputs]
  csv = true
[]
(modules/solid_mechanics/test/tests/smeared_cracking/cracking_function.i)
#
# Simple pull test for cracking. This tests the option to prescribe the
# cracking strength using an AuxVariable. In this case, an elemental
# AuxVariable is used, and a function is used to prescribe its value.
# One of the elements is weaker than the others, so the crack localizes
# in that element.
#
[Mesh]
   file = plate.e
[]
[GlobalParams]
  displacements = 'disp_x disp_y'
[]
[AuxVariables]
  [./cracking_stress_fn]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./crack_flags2]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[Functions]
  [./displ]
    type = PiecewiseLinear
    x = '0 0.1 0.2 0.3 0.4'
    y = '0 0.001 0 -0.001 0'
  [../]
  [./fstress]
    type = ParsedFunction
    expression = 'if(x > 0.667, 1.1e6, 1.2e6)'
  [../]
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    strain = FINITE
    add_variables = true
    generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx strain_xx strain_yy strain_xy strain_yz'
  [../]
[]
[AuxKernels]
  [./cracking_stress_fn]
    type = FunctionAux
    variable = cracking_stress_fn
    function = fstress
    execute_on = initial
  [../]
  [./crack_flags2]
    type = MaterialRealVectorValueAux
    property = crack_flags
    variable = crack_flags2
   component = 2
  [../]
[]
[BCs]
  [./pull]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = '3 4'
    function = displ
  [../]
  [./pin_x]
    type = DirichletBC
    variable = disp_x
    boundary =  '1 2'
    value = 0
  [../]
  [./pin_y]
    type = DirichletBC
    variable = disp_y
    boundary = '1 4'
    value = 0.0
  [../]
[]
[Materials]
  [./elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    youngs_modulus = 200.0e7
    poissons_ratio = 0.0
  [../]
  [./elastic_stress]
    type = ComputeSmearedCrackingStress
    cracking_stress = cracking_stress_fn
    cracked_elasticity_type = FULL
    softening_models = abrupt_softening
  [../]
  [./abrupt_softening]
    type = AbruptSoftening
    residual_stress = 0.0
  [../]
[]
[Postprocessors]
  [./elem_stress_xx]
    type = ElementalVariableValue
    variable = stress_xx
    elementid = 2
  [../]
  [./elem_strain_xx]
    type = ElementalVariableValue
    variable = strain_xx
    elementid = 2
  [../]
  [./elem_crack_flags_x]
    type = ElementalVariableValue
    variable = crack_flags2
    elementid = 2
  [../]
[]
[Executioner]
  type = Transient
  solve_type = PJFNK
  petsc_options_iname = '-ksp_gmres_restart'
  petsc_options_value = '101               '
  line_search = 'none'
  l_max_its = 100
  nl_max_its = 100
  nl_rel_tol = 1e-8
  nl_abs_tol = 1e-6
  l_tol = 1e-5
  start_time = 0.0
  end_time = 0.2
  dt = 0.0025
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_save_euler.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  elem_type = QUAD4
  displacements = 'disp_x disp_y'
  nx = 2
  ny = 2
[]
[Variables]
  [./disp_x]
    block = 0
  [../]
  [./disp_y]
    block = 0
  [../]
[]
[GlobalParams]
  volumetric_locking_correction = true
[]
[AuxVariables]
  [./stress_yy]
    order = CONSTANT
    family = MONOMIAL
    block = 0
  [../]
  [./e_yy]
    order = CONSTANT
    family = MONOMIAL
    block = 0
  [../]
  [./fp_yy]
    order = CONSTANT
    family = MONOMIAL
    block = 0
  [../]
  [./rotout]
    order = CONSTANT
    family = MONOMIAL
    block = 0
  [../]
  [./gss1]
    order = CONSTANT
    family = MONOMIAL
    block = 0
  [../]
  [./euler1]
    order = CONSTANT
    family = MONOMIAL
    block = 0
  [../]
  [./euler2]
    order = CONSTANT
    family = MONOMIAL
    block = 0
  [../]
  [./euler3]
    order = CONSTANT
    family = MONOMIAL
    block = 0
  [../]
[]
[Functions]
  [./tdisp]
    type = ParsedFunction
    expression = 0.01*t
  [../]
[]
[UserObjects]
  [./prop_read]
    type = PropertyReadFile
    prop_file_name = 'euler_ang_file.txt'
    # Enter file data as prop#1, prop#2, .., prop#nprop
    nprop = 3
    read_type = element
  [../]
[]
[AuxKernels]
  [./stress_yy]
    type = RankTwoAux
    variable = stress_yy
    rank_two_tensor = stress
    index_j = 1
    index_i = 1
    execute_on = timestep_end
    block = 0
  [../]
  [./e_yy]
    type = RankTwoAux
    variable = e_yy
    rank_two_tensor = lage
    index_j = 1
    index_i = 1
    execute_on = timestep_end
    block = 0
  [../]
  [./fp_yy]
    type = RankTwoAux
    variable = fp_yy
    rank_two_tensor = fp
    index_j = 1
    index_i = 1
    execute_on = timestep_end
    block = 0
  [../]
  [./gss1]
    type = MaterialStdVectorAux
    variable = gss1
    property = gss
    index = 0
    execute_on = timestep_end
    block = 0
  [../]
  [./euler1]
    type = MaterialRealVectorValueAux
    variable = euler1
    property = Euler_angles
    component = 0
    execute_on = timestep_end
    block = 0
  [../]
  [./euler2]
    type = MaterialRealVectorValueAux
    variable = euler2
    property = Euler_angles
    component = 1
    execute_on = timestep_end
    block = 0
  [../]
  [./euler3]
    type = MaterialRealVectorValueAux
    variable = euler3
    property = Euler_angles
    component = 2
    execute_on = timestep_end
    block = 0
  [../]
[]
[BCs]
  [./fix_x]
    type = DirichletBC
    variable = disp_x
    boundary = 'left'
    value = 0
  [../]
  [./fix_y]
    type = DirichletBC
    variable = disp_y
    boundary = 'bottom'
    value = 0
  [../]
  [./tdisp]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = top
    function = tdisp
  [../]
[]
[Materials]
  [./crysp]
    type = FiniteStrainCrystalPlasticity
    block = 0
    gtol = 1e-2
    slip_sys_file_name = input_slip_sys.txt
    nss = 12
    num_slip_sys_flowrate_props = 2 #Number of properties in a slip system
    flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
    hprops = '1.0 541.5 60.8 109.8 2.5'
    gprops = '1 4 60.8 5 8 60.8 9 12 60.8'
    tan_mod_type = exact
  [../]
  [./strain]
    type = ComputeFiniteStrain
    block = 0
    displacements = 'disp_x disp_y'
  [../]
  [./elasticity_tensor]
    type = ComputeElasticityTensorCP
    block = 0
    C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
    fill_method = symmetric9
    read_prop_user_object = prop_read
  [../]
[]
[Postprocessors]
  [./stress_yy]
    type = ElementAverageValue
    variable = stress_yy
    block = 'ANY_BLOCK_ID 0'
  [../]
  [./e_yy]
    type = ElementAverageValue
    variable = e_yy
    block = 'ANY_BLOCK_ID 0'
  [../]
  [./fp_yy]
    type = ElementAverageValue
    variable = fp_yy
    block = 'ANY_BLOCK_ID 0'
  [../]
  [./gss1]
    type = ElementAverageValue
    variable = gss1
    block = 'ANY_BLOCK_ID 0'
  [../]
[]
[Preconditioning]
  [./smp]
    type = SMP
    full = true
  [../]
[]
[Executioner]
  type = Transient
  #Preconditioned JFNK (default)
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_rel_tol = 1e-10
  nl_abs_tol = 1e-10
  dt = 0.01
  dtmax = 10.0
  dtmin = 0.01
  num_steps = 10
[]
[Outputs]
  file_base = crysp_save_euler_out
  exodus = true
[]
[Kernels]
  [SolidMechanics]
    displacements = 'disp_x disp_y'
    use_displaced_mesh = true
  [../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/rotation_matrix_update_euler_angle_111_orientation.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  elem_type = HEX8
[]
[AuxVariables]
  [euler_angle_1]
    order = CONSTANT
    family = MONOMIAL
  []
  [euler_angle_2]
    order = CONSTANT
    family = MONOMIAL
  []
  [euler_angle_3]
    order = CONSTANT
    family = MONOMIAL
  []
  [pk2_zz]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Physics/SolidMechanics/QuasiStatic/all]
  strain = FINITE
  incremental = true
  add_variables = true
[]
[AuxKernels]
  [euler_angle_1]
    type = MaterialRealVectorValueAux
    variable = euler_angle_1
    property = updated_Euler_angle
    component = 0
    execute_on = timestep_end
  []
  [euler_angle_2]
    type = MaterialRealVectorValueAux
    variable = euler_angle_2
    property = updated_Euler_angle
    component = 1
    execute_on = timestep_end
  []
  [euler_angle_3]
    type = MaterialRealVectorValueAux
    variable = euler_angle_3
    property = updated_Euler_angle
    component = 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
   []
[]
[BCs]
  [Periodic]
    [all]
      variable = 'disp_x'
      auto_direction = 'z'
    []
  []
  [fix_x]
    type = DirichletBC
    variable = disp_x
    boundary = 'left'
    value = 0
  []
  [fix_y]
    type = DirichletBC
    variable = disp_y
    boundary = 'bottom'
    value = 0
  []
  [fix_z]
    type = DirichletBC
    variable = disp_z
    boundary = 'back'
    value = 0
  []
  [tdisp]
    type = FunctionDirichletBC
    variable = disp_z
    boundary = 'front'
    function = '0.005*t'
  []
[]
[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
    rotation_matrix = '0.707106781  0.40824829  0.57735027
                      -0.707106781  0.40824829  0.57735027
                       0.          -0.81649658  0.57735027'
  []
  [stress]
    type = ComputeMultipleCrystalPlasticityStress
    crystal_plasticity_models = 'trial_xtalpl'
    tan_mod_type = exact
    maximum_substep_iteration = 4
  []
  [trial_xtalpl]
    type = CrystalPlasticityKalidindiUpdate
    number_slip_systems = 12
    slip_sys_file_name = input_slip_sys.txt
  []
  [updated_euler_angle]
    type = ComputeUpdatedEulerAngle
    radian_to_degree = true
  []
[]
[Postprocessors]
  [euler_angle_1]
    type = ElementAverageValue
    variable = euler_angle_1
  []
  [euler_angle_2]
    type = ElementAverageValue
    variable = euler_angle_2
  []
  [euler_angle_3]
    type = ElementAverageValue
    variable = euler_angle_3
  []
  [pk2_zz]
    type = ElementAverageValue
    variable = pk2_zz
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type'
  petsc_options_value = ' lu '
  nl_abs_tol = 1e-10
  nl_rel_tol = 1e-10
  nl_abs_step_tol = 1e-10
  dt = 0.1
  dtmin = 0.01
  end_time = 5
[]
[Outputs]
  csv = true
  perf_graph = true
[]
(modules/solid_mechanics/test/tests/smeared_cracking/cracking_rotation.i)
# This test is to ensure that the smeared cracking model correctly handles finite
# rotation of cracked elements.
# This consists of a single element that is first  subjected to tensile loading
# in the y-direction via a prescribed displacement. This loading is sufficiently
# high to crack the material in that direction, but not completely unload. The
# prescribed displacement is then reversed so that the element is returned to its
# original configuration.
# In the next phase of the analysis, this element is then rotated 90 degrees by
# prescribing the displacement of the bottom of the element. The prescribed
# displacement BC used to crack the element in the first phase is deactivated.
# Once the element is fully rotated, a new BC is activated on what was originally
# the top surface (but is now the surface on the right hand side) to pull in
# the x-direction.
# If everything is working correctly, the model should re-load on the original
# crack (which should be rotated along with the elemnent) up to the peak stress
# in the first phase of the analysis, and then continue the unloading process
# as the crack strains continue to increase. Throughout this analysis, there should
# only be a single crack, as manifested in the crack_flags variables.
[Mesh]
  file = cracking_test.e
[]
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    strain = FINITE
    add_variables = true
    generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
  [../]
[]
[AuxVariables]
  [./crack_flags1]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./crack_flags2]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./crack_flags3]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[AuxKernels]
  [./crack_flags1]
    type = MaterialRealVectorValueAux
    property = crack_flags
    variable = crack_flags1
    component = 0
  [../]
  [./crack_flags2]
    type = MaterialRealVectorValueAux
    property = crack_flags
    variable = crack_flags2
    component = 1
  [../]
  [./crack_flags3]
    type = MaterialRealVectorValueAux
    property = crack_flags
    variable = crack_flags3
    component = 2
  [../]
[]
[BCs]
  [./x_pin]
    type = DirichletBC
    variable = disp_x
    boundary = '15 16'
    value = 0.0
  [../]
  [./y_pin]
    type = DirichletBC
    variable = disp_y
    boundary = '15 16'
    value = 0.0
  [../]
  [./z_all]
    type = DirichletBC
    variable = disp_z
    boundary = '11 12 13 14 15 16 17 18'
    value = 0.0
  [../]
  [./x_lb]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = '11 12'
    function = 'if(t<10,0,if(t>=100,1,1-cos((t-10)*pi/180)))'
  [../]
  [./y_lb]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = '11 12'
    function = 'if(t<10,0,if(t>=100,1,sin((t-10)*pi/180)))'
  [../]
  [./x_lt]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = '13 14'
    function = '2+(t-100)*0.01'
  [../]
  [./x_rt]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = '17 18'
    function = '1+(t-100)*0.01'
  [../]
  [./top_pull]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = '13 14 17 18'
    function = 'if(t<5,t*0.01,0.05-(t-5)*0.01)'
  [../]
[]
[Materials]
  [./elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    youngs_modulus = 100.e9
    poissons_ratio = 0.
  [../]
  [./cracking_stress]
    type = ComputeSmearedCrackingStress
    shear_retention_factor = 0.1
    cracking_stress = 3.e9
    cracked_elasticity_type = FULL
    softening_models = exponential_softening
  [../]
  [./exponential_softening]
    type = ExponentialSoftening
  [../]
[]
[Executioner]
  type = Transient
  petsc_options_iname = '-ksp_gmres_restart -pc_type'
  petsc_options_value = '101                lu'
  line_search = 'none'
  l_max_its = 100
  l_tol = 1e-5
  nl_max_its = 100
  nl_abs_tol = 1e-5
  nl_rel_tol = 1e-12
  start_time = 0
  end_time = 110
  dt = 1
[]
[Controls]
  [./p1]
    type = TimePeriod
    start_time = 0.0
    end_time = 10.0
    disable_objects = 'BCs/x_lt BCs/x_rt'
    enable_objects = 'BCs/top_pull'
    reverse_on_false = false
    execute_on = 'initial timestep_begin'
  [../]
  [./p2]
    type = TimePeriod
    start_time = 10.0
    end_time = 101.0
    disable_objects = 'BCs/x_lt BCs/x_rt BCs/top_pull'
    reverse_on_false = false
    execute_on = 'initial timestep_begin'
  [../]
  [./p3]
    type = TimePeriod
    start_time = 101.0
    end_time = 110.0
    enable_objects = 'BCs/x_lt BCs/x_rt'
    disable_objects = 'BCs/top_pull'
    reverse_on_false = false
    execute_on = 'initial timestep_begin'
  [../]
[]
[Outputs]
  exodus = true
[]