- coupled_variablesvariable dependencies for the prefactor
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:variable dependencies for the prefactor
 - tensorsComponent tensors
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:Component tensors
 - weightsComponent weights
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:Component weights
 
Composite Elasticity Tensor
Assemble an elasticity tensor from multiple tensor contributions weighted by material properties
Description
CompositeElasticityTensor calculates a simple Rank-4 tensor that can be used as an Elasticity tensor in a mechanics simulation.  This tensor is computed as a weighted sum of base elasticity tensors, as shown in Eq. (1), where each weight can be a scalar material property that may depend on simulation variables. (1) where  is a Rank-4 tensor and  is the weighting factor for each Rank-4 tensor.
Example Input File Syntax
[./C]
  type = CompositeElasticityTensor
  block = 0
  coupled_variables = c
  tensors = 'Ca Cb'
  weights = 'Fa Fb'
[../](modules/solid_mechanics/test/tests/elasticitytensor/composite.i)Input Parameters
- base_nameOptional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
C++ Type:std::string
Controllable:No
Description:Optional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
 - blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
 - boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
 - computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
 - constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Options:NONE, ELEMENT, SUBDOMAIN
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
 - declare_suffixAn optional suffix parameter that can be appended to any declared 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 declared properties. The suffix will be prepended with a '_' character.
 
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.
 - implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
 - 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 generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
 - use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
 
Advanced Parameters
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
 - outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
 
Outputs 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/umat/predef/dpredef.i)
 - (modules/solid_mechanics/test/tests/umat/print/print_shear.i)
 - (modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_single_material.i)
 - (modules/combined/examples/phase_field-mechanics/kks_mechanics_KHS.i)
 - (modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_small_strain.i)
 - (modules/combined/test/tests/umat/gap_heat_transfer_umat.i)
 - (modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_onePhaseMulti.i)
 - (modules/solid_mechanics/test/tests/umat/predef/predef_multiple.i)
 - (modules/solid_mechanics/test/tests/umat/predef/predef_multiple_mat.i)
 - (modules/solid_mechanics/test/tests/elasticitytensor/composite.i)
 - (modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_plasticity.i)
 - (modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep.i)
 - (modules/solid_mechanics/test/tests/umat/predef/predef.i)
 
(modules/solid_mechanics/test/tests/elasticitytensor/composite.i)
# This input file is designed to test the RankTwoAux and RankFourAux
# auxkernels, which report values out of the Tensors used in materials
# properties.
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 20
  xmax = 1
[]
[AuxVariables]
  [./c]
    order = FIRST
    family = LAGRANGE
    [./InitialCondition]
      type = FunctionIC
      function = x
    [../]
  [../]
  [./C1111_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./C1122_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./C1133_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./C3313_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./dC1111_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./dC1122_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./dC1133_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./dC3313_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./d2C1111_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./d2C1122_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./d2C1133_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./d2C3313_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
#[Kernels]
#  [./diff]
#    type = Diffusion
#    variable = diffused
#  [../]
#[]
[AuxKernels]
  [./matl_C1111]
    type = RankFourAux
    rank_four_tensor = elasticity_tensor
    index_i = 0
    index_j = 0
    index_k = 0
    index_l = 0
    variable = C1111_aux
    execute_on = initial
  [../]
   [./matl_C1122]
    type = RankFourAux
    rank_four_tensor = elasticity_tensor
    index_i = 0
    index_j = 0
    index_k = 1
    index_l = 1
    variable = C1122_aux
    execute_on = initial
  [../]
  [./matl_C1133]
    type = RankFourAux
    rank_four_tensor = elasticity_tensor
    index_i = 0
    index_j = 0
    index_k = 2
    index_l = 2
    variable = C1133_aux
    execute_on = initial
  [../]
  [./matl_C3313]
    type = RankFourAux
    rank_four_tensor = elasticity_tensor
    index_i = 2
    index_j = 2
    index_k = 0
    index_l = 2
    variable = C3313_aux
    execute_on = initial
  [../]
  [./matl_dC1111]
    type = RankFourAux
    rank_four_tensor = delasticity_tensor/dc
    index_i = 0
    index_j = 0
    index_k = 0
    index_l = 0
    variable = dC1111_aux
    execute_on = initial
  [../]
   [./matl_dC1122]
    type = RankFourAux
    rank_four_tensor = delasticity_tensor/dc
    index_i = 0
    index_j = 0
    index_k = 1
    index_l = 1
    variable = dC1122_aux
    execute_on = initial
  [../]
  [./matl_dC1133]
    type = RankFourAux
    rank_four_tensor = delasticity_tensor/dc
    index_i = 0
    index_j = 0
    index_k = 2
    index_l = 2
    variable = dC1133_aux
    execute_on = initial
  [../]
  [./matl_dC3313]
    type = RankFourAux
    rank_four_tensor = delasticity_tensor/dc
    index_i = 2
    index_j = 2
    index_k = 0
    index_l = 2
    variable = dC3313_aux
    execute_on = initial
  [../]
  [./matl_d2C1111]
    type = RankFourAux
    rank_four_tensor = d^2elasticity_tensor/dc^2
    index_i = 0
    index_j = 0
    index_k = 0
    index_l = 0
    variable = d2C1111_aux
    execute_on = initial
  [../]
   [./matl_d2C1122]
    type = RankFourAux
    rank_four_tensor = d^2elasticity_tensor/dc^2
    index_i = 0
    index_j = 0
    index_k = 1
    index_l = 1
    variable = d2C1122_aux
    execute_on = initial
  [../]
  [./matl_d2C1133]
    type = RankFourAux
    rank_four_tensor = d^2elasticity_tensor/dc^2
    index_i = 0
    index_j = 0
    index_k = 2
    index_l = 2
    variable = d2C1133_aux
    execute_on = initial
  [../]
  [./matl_d2C3313]
    type = RankFourAux
    rank_four_tensor = d^2elasticity_tensor/dc^2
    index_i = 2
    index_j = 2
    index_k = 0
    index_l = 2
    variable = d2C3313_aux
    execute_on = initial
  [../]
[]
[Materials]
  [./Ca]
    type = ComputeElasticityTensor
    base_name = Ca
    block = 0
    fill_method = symmetric21
    C_ijkl ='1111 .1122 1133 1123 1113 1112 2222 2233 2223 2213 2212 3333 3323 3313 3312 2323 2313 2312 1313 1312 1212'
  [../]
  [./Cb]
    type = ComputeElasticityTensor
    base_name = Cb
    block = 0
    fill_method = symmetric21
    C_ijkl ='.1111 1122 .1133 .1123 .1113 .1112 .2222 .2233 .2223 .2213 .2212 .3333 .3323 .3313 .3312 .2323 .2313 .2312 .1313 .1312 .1212'
  [../]
  [./Fa]
    type = DerivativeParsedMaterial
    block = 0
    property_name = Fa
    expression = c^2
    coupled_variables = c
  [../]
  [./Fb]
    type = DerivativeParsedMaterial
    block = 0
    property_name = Fb
    expression = (1-c)^3
    coupled_variables = c
  [../]
  [./C]
    type = CompositeElasticityTensor
    block = 0
    coupled_variables = c
    tensors = 'Ca Cb'
    weights = 'Fa Fb'
  [../]
[]
[Problem]
  kernel_coverage_check = false
  solve = false
[]
[Executioner]
  type = Steady
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/umat/predef/dpredef.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 3
    xmin = -0.5
    xmax = 0.5
    ymin = -0.5
    ymax = 0.5
    zmin = -0.5
    zmax = 0.5
  []
[]
[Functions]
  [top_pull]
    type = ParsedFunction
    expression = -t*10
  []
[]
[AuxVariables]
  [strain_yy]
    family = MONOMIAL
    order = FIRST
  []
[]
[AuxKernels]
  [strain_yy]
    type = RankTwoAux
    rank_two_tensor = total_strain
    variable = strain_yy
    index_i = 1
    index_j = 1
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    add_variables = true
    strain = FINITE
  []
[]
[BCs]
  [Pressure]
    [bc_presssure]
      boundary = top
      function = top_pull
    []
  []
  [x_bot]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0.0
  []
  [y_bot]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0.0
  []
  [z_bot]
    type = DirichletBC
    variable = disp_z
    boundary = front
    value = 0.0
  []
[]
[Materials]
  # 1. Active for UMAT run
  [umat]
    type = AbaqusUMATStress
    constant_properties = '1000 0.3'
    plugin = '../../../plugins/elastic_dpredef'
    num_state_vars = 0
    external_fields = 'strain_yy'
    use_one_based_indexing = true
  []
   # 2. Active for reference MOOSE computations
  [elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    base_name = 'base'
    youngs_modulus = 1e3
    poissons_ratio = 0.3
  []
  [strain_dependent_elasticity_tensor]
    type = CompositeElasticityTensor
    coupled_variables = strain_yy
    tensors = 'base'
    weights = 'prefactor_material'
  []
  [prefactor_material_block]
    type = DerivativeParsedMaterial
    property_name = prefactor_material
    # 0.11112 is the strain_yy increment
    expression = '1.0/(1.0 + 0.11112)'
  []
  [stress]
    type = ComputeFiniteStrainElasticStress
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp_ew'
  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-12
  nl_abs_tol = 1e-10
  l_tol = 1e-9
  start_time = 0.0
  end_time = 10
  dt = 10.0
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/umat/print/print_shear.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 3
    xmin = -0.5
    xmax = 0.5
    ymin = -0.5
    ymax = 0.5
    zmin = -0.5
    zmax = 0.5
  []
[]
[Functions]
  [top_pull]
    type = ParsedFunction
    expression = -t/1000
  []
[]
[AuxVariables]
  [strain_xy]
    family = MONOMIAL
    order = SECOND
  []
  [strain_yy]
    family = MONOMIAL
    order = SECOND
  []
[]
[AuxKernels]
  [strain_xy]
    type = RankTwoAux
    rank_two_tensor = total_strain
    variable = strain_xy
    index_i = 1
    index_j = 0
  []
  [strain_yy]
    type = RankTwoAux
    rank_two_tensor = total_strain
    variable = strain_yy
    index_i = 1
    index_j = 1
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    add_variables = true
    strain = FINITE
  []
[]
[BCs]
  [x_bot]
    type = DirichletBC
    variable = disp_x
    boundary = bottom
    value = 0.0
  []
  [y_bot]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0.0
  []
  [z_bot]
    type = DirichletBC
    variable = disp_z
    boundary = bottom
    value = 0.0
  []
[]
[NodalKernels]
  [force_x]
    type = ConstantRate
    variable = disp_x
    boundary = top
    rate = 1.0e0
  []
[]
[Materials]
  # 1. Active for UMAT verification
  [umat]
    type = AbaqusUMATStress
    constant_properties = '1000 0.3'
    plugin = '../../../plugins/elastic_print_multiple_fields'
    num_state_vars = 0
    external_fields = 'strain_yy strain_xy'
    use_one_based_indexing = true
  []
  # 2. Active for reference MOOSE computations
  [elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    base_name = 'base'
    youngs_modulus = 1e3
    poissons_ratio = 0.3
  []
  [strain_dependent_elasticity_tensor]
    type = CompositeElasticityTensor
    coupled_variables = 'strain_yy strain_xy'
    tensors = 'base'
    weights = 'prefactor_material'
  []
  [prefactor_material_block]
    type = DerivativeParsedMaterial
    property_name = prefactor_material
    coupled_variables = 'strain_yy strain_xy'
    expression = '1.0/(1.0 + strain_yy + strain_xy)'
  []
  [stress]
    type = ComputeFiniteStrainElasticStress
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp_ew'
  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-12
  nl_abs_tol = 1e-10
  l_tol = 1e-9
  start_time = 0.0
  end_time = 10
  dt = 10.0
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_single_material.i)
# 1x1x1 unit cube with uniform pressure on top face and 2 phases but the same material
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  nx = 1
  ny = 1
  nz = 6
  zmax = 1
  xmax = 1
  ymax = 1
[]
[Variables]
  [temp]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1000.0
  []
[]
[ICs]
  [phase1IC]
    type = BoundingBoxIC
    x1 = -1
    x2 = 1.5
    y1 = -1
    y2 = 1.5
    z1 = -1
    z2 = 1.0
    inside = 1
    outside = 0
    variable = phase1
    int_width=0.01
  []
  [phase2IC]
    type = BoundingBoxIC
    x1 = -1
    x2 = 1.5
    y1 = -1
    y2 = 1.5
    z1 = -1
    z2 = 1.0
    inside = 0
    outside = 1
    variable = phase2
    int_width=0.01
  []
[]
[AuxVariables]
  [phase1]
  []
  [phase2]
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = FINITE
    incremental = true
    add_variables = true
    generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
  []
[]
[Functions]
  [top_pull]
    type = PiecewiseLinear
    x = '0 1'
    y = '1 1'
  []
[]
[Kernels]
  [heat]
    type = Diffusion
    variable = temp
  []
  [heat_ie]
    type = TimeDerivative
    variable = temp
  []
[]
[BCs]
  [u_top_pull]
    type = Pressure
    variable = disp_y
    boundary = top
    factor = -10.0e6
    function = top_pull
  []
  [u_bottom_fix]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0.0
  []
  [u_yz_fix]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0.0
  []
  [u_xy_fix]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0.0
  []
  [temp_fix]
    type = DirichletBC
    variable = temp
    boundary = 'bottom top'
    value = 1000.0
  []
[]
[Materials]
  [elasticity_tensor1]
    type = ComputeIsotropicElasticityTensor
    base_name = C1
    youngs_modulus = 2e11
    poissons_ratio = 0.3
  []
  [elasticity_tensor2]
    type = ComputeIsotropicElasticityTensor
    base_name = C2
    youngs_modulus = 2e11
    poissons_ratio = 0.3
  []
  [h1]
    type = ParsedMaterial
    property_name = h1
    coupled_variables = phase1
    expression = '0.5*tanh(20*(phase1-0.5))+0.5'
  []
  [h2]
    type = ParsedMaterial
    property_name = h2
    coupled_variables = phase2
    expression = '0.5*tanh(20*(phase2-0.5))+0.5'
  []
  [./C]
    type = CompositeElasticityTensor
    coupled_variables = 'phase1 phase2'
    tensors = 'C1   C2'
    weights = 'h1   h2'
  [../]
  [radial_return_stress]
    type = ComputeMultipleInelasticStress
    inelastic_models = 'power_law_creep'
    tangent_operator = elastic
  []
  [power_law_creep]
    type = CompositePowerLawCreepStressUpdate
    coefficient = '1.0e-15 1.0e-15'
    n_exponent = '4 4'
    activation_energy = '3.0e5 3.0e5'
    switching_functions = 'h1 h2'
    temperature = temp
  []
[]
[VectorPostprocessors]
  [./soln]
    type = LineValueSampler
    warn_discontinuous_face_values = false
    sort_by = x
    variable = 'disp_x disp_y disp_z creep_strain_xx creep_strain_yy creep_strain_zz'
    start_point = '0 0 0.0'
    end_point = '1.0 1.0 1.0'
    num_points = 5
    outputs = tests
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp'
  petsc_options_iname = '-ksp_gmres_restart'
  petsc_options_value = '101'
  line_search = 'none'
  l_max_its = 20
  nl_max_its = 20
  nl_rel_tol = 1.0e-9
  nl_abs_tol = 1.0e-9
  l_tol = 1e-10
  start_time = 0.0
  end_time = 1.0
  num_steps = 10
  dt = 0.1
[]
[Outputs]
  exodus = false
  [./tests]
    type = CSV
    execute_on = final
  [../]
[]
(modules/combined/examples/phase_field-mechanics/kks_mechanics_KHS.i)
# KKS phase-field model coupled with elasticity using Khachaturyan's scheme as
# described in L.K. Aagesen et al., Computational Materials Science, 140, 10-21 (2017)
# Original run #170403a
[Mesh]
  type = GeneratedMesh
  dim = 3
  nx = 640
  ny = 1
  nz = 1
  xmin = -10
  xmax = 10
  ymin = 0
  ymax = 0.03125
  zmin = 0
  zmax = 0.03125
  elem_type = HEX8
[]
[Variables]
  # order parameter
  [./eta]
    order = FIRST
    family = LAGRANGE
  [../]
  # solute concentration
  [./c]
    order = FIRST
    family = LAGRANGE
  [../]
  # chemical potential
  [./w]
    order = FIRST
    family = LAGRANGE
  [../]
  # solute phase concentration (matrix)
  [./cm]
    order = FIRST
    family = LAGRANGE
  [../]
  # solute phase concentration (precipitate)
  [./cp]
    order = FIRST
    family = LAGRANGE
  [../]
  [./disp_x]
    order = FIRST
    family = LAGRANGE
  [../]
  [./disp_y]
    order = FIRST
    family = LAGRANGE
  [../]
  [./disp_z]
    order = FIRST
    family = LAGRANGE
  [../]
[]
[ICs]
  [./eta_ic]
    variable = eta
    type = FunctionIC
    function = ic_func_eta
    block = 0
  [../]
  [./c_ic]
    variable = c
    type = FunctionIC
    function = ic_func_c
    block = 0
  [../]
  [./w_ic]
    variable = w
    type = ConstantIC
    value = 0.00991
    block = 0
  [../]
  [./cm_ic]
    variable = cm
    type = ConstantIC
    value = 0.131
    block = 0
  [../]
  [./cp_ic]
    variable = cp
    type = ConstantIC
    value = 0.236
    block = 0
  [../]
[]
[Functions]
  [./ic_func_eta]
    type = ParsedFunction
    expression = '0.5*(1.0+tanh((x)/delta_eta/sqrt(2.0)))'
    symbol_names = 'delta_eta'
    symbol_values = '0.8034'
  [../]
  [./ic_func_c]
    type = ParsedFunction
    expression = '0.2389*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^3*(6*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^2-15*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))+10)+0.1339*(1-(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^3*(6*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^2-15*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))+10))'
    symbol_names = 'delta'
    symbol_values = '0.8034'
  [../]
  [./psi_eq_int]
    type = ParsedFunction
    expression = 'volume*psi_alpha'
    symbol_names = 'volume psi_alpha'
    symbol_values = 'volume psi_alpha'
  [../]
  [./gamma]
    type = ParsedFunction
    expression = '(psi_int - psi_eq_int) / dy / dz'
    symbol_names = 'psi_int psi_eq_int dy       dz'
    symbol_values = 'psi_int psi_eq_int 0.03125  0.03125'
  [../]
[]
[AuxVariables]
  [./sigma11]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./sigma22]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./sigma33]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./e11]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./e12]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./e22]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./e33]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./e_el11]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./e_el12]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./e_el22]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./f_el]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./eigen_strain00]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./Fglobal]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./psi]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[AuxKernels]
  [./matl_sigma11]
    type = RankTwoAux
    rank_two_tensor = stress
    index_i = 0
    index_j = 0
    variable = sigma11
  [../]
  [./matl_sigma22]
    type = RankTwoAux
    rank_two_tensor = stress
    index_i = 1
    index_j = 1
    variable = sigma22
  [../]
  [./matl_sigma33]
    type = RankTwoAux
    rank_two_tensor = stress
    index_i = 2
    index_j = 2
    variable = sigma33
  [../]
  [./matl_e11]
    type = RankTwoAux
    rank_two_tensor = total_strain
    index_i = 0
    index_j = 0
    variable = e11
  [../]
  [./f_el]
    type = MaterialRealAux
    variable = f_el
    property = f_el_mat
    execute_on = timestep_end
  [../]
  [./GlobalFreeEnergy]
    variable = Fglobal
    type = KKSGlobalFreeEnergy
    fa_name = fm
    fb_name = fp
    w = 0.0264
    kappa_names = kappa
    interfacial_vars = eta
  [../]
  [./psi_potential]
    variable = psi
    type = ParsedAux
    coupled_variables = 'Fglobal w c f_el sigma11 e11'
    expression = 'Fglobal - w*c + f_el - sigma11*e11'
  [../]
[]
[BCs]
  [./left_x]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  [../]
  [./right_x]
    type = DirichletBC
    variable = disp_x
    boundary = right
    value = 0
  [../]
  [./front_y]
    type = DirichletBC
    variable = disp_y
    boundary = front
    value = 0
  [../]
  [./back_y]
    type = DirichletBC
    variable = disp_y
    boundary = back
    value = 0
  [../]
  [./top_z]
    type = DirichletBC
    variable = disp_z
    boundary = top
    value = 0
  [../]
  [./bottom_z]
    type = DirichletBC
    variable = disp_z
    boundary = bottom
    value = 0
  [../]
[]
[Materials]
  # Chemical free energy of the matrix
  [./fm]
    type = DerivativeParsedMaterial
    property_name = fm
    coupled_variables = 'cm'
    expression = '6.55*(cm-0.13)^2'
  [../]
  # Chemical Free energy of the precipitate phase
  [./fp]
    type = DerivativeParsedMaterial
    property_name = fp
    coupled_variables = 'cp'
    expression = '6.55*(cp-0.235)^2'
  [../]
# Elastic energy of the precipitate
  [./elastic_free_energy_p]
    type = ElasticEnergyMaterial
    f_name = f_el_mat
    coupled_variables = 'eta'
    outputs = exodus
  [../]
  # h(eta)
  [./h_eta]
    type = SwitchingFunctionMaterial
    h_order = HIGH
    eta = eta
  [../]
  # 1- h(eta), putting in function explicitly
  [./one_minus_h_eta_explicit]
    type = DerivativeParsedMaterial
    property_name = one_minus_h_explicit
    coupled_variables = eta
    expression = 1-eta^3*(6*eta^2-15*eta+10)
    outputs = exodus
  [../]
  # g(eta)
  [./g_eta]
    type = BarrierFunctionMaterial
    g_order = SIMPLE
    eta = eta
  [../]
  # constant properties
  [./constants]
    type = GenericConstantMaterial
    prop_names  = 'M   L   kappa      misfit'
    prop_values = '0.7 0.7 0.01704    0.00377'
  [../]
  #Mechanical properties
  [./Stiffness_matrix]
    type = ComputeElasticityTensor
    base_name = C_matrix
    C_ijkl = '103.3 74.25 74.25 103.3 74.25 103.3 46.75 46.75 46.75'
    fill_method = symmetric9
  [../]
  [./Stiffness_ppt]
    type = ComputeElasticityTensor
    C_ijkl = '100.7 71.45 71.45 100.7 71.45 100.7 50.10 50.10 50.10'
    base_name = C_ppt
    fill_method = symmetric9
  [../]
  [./C]
    type = CompositeElasticityTensor
    coupled_variables = eta
    tensors = 'C_matrix               C_ppt'
    weights = 'one_minus_h_explicit   h'
  [../]
  [./stress]
    type = ComputeLinearElasticStress
  [../]
  [./strain]
    type = ComputeSmallStrain
    displacements = 'disp_x disp_y disp_z'
    eigenstrain_names = 'eigenstrain_ppt'
  [../]
  [./eigen_strain]
    type = ComputeVariableEigenstrain
    eigen_base = '0.00377 0.00377 0.00377 0 0 0'
    prefactor = h
    args = eta
    eigenstrain_name = 'eigenstrain_ppt'
  [../]
[]
[Kernels]
  [./TensorMechanics]
    displacements = 'disp_x disp_y disp_z'
  [../]
  # enforce c = (1-h(eta))*cm + h(eta)*cp
  [./PhaseConc]
    type = KKSPhaseConcentration
    ca       = cm
    variable = cp
    c        = c
    eta      = eta
  [../]
  # enforce pointwise equality of chemical potentials
  [./ChemPotVacancies]
    type = KKSPhaseChemicalPotential
    variable = cm
    cb       = cp
    fa_name  = fm
    fb_name  = fp
  [../]
  #
  # Cahn-Hilliard Equation
  #
  [./CHBulk]
    type = KKSSplitCHCRes
    variable = c
    ca       = cm
    fa_name  = fm
    w        = w
  [../]
  [./dcdt]
    type = CoupledTimeDerivative
    variable = w
    v = c
  [../]
  [./ckernel]
    type = SplitCHWRes
    mob_name = M
    variable = w
  [../]
  #
  # Allen-Cahn Equation
  #
  [./ACBulkF]
    type = KKSACBulkF
    variable = eta
    fa_name  = fm
    fb_name  = fp
    w        = 0.0264
    coupled_variables = 'cp cm'
  [../]
  [./ACBulkC]
    type = KKSACBulkC
    variable = eta
    ca       = cm
    cb       = cp
    fa_name  = fm
  [../]
  [./ACBulk_el] #This adds df_el/deta for strain interpolation
    type = AllenCahn
    variable = eta
    f_name = f_el_mat
  [../]
  [./ACInterface]
    type = ACInterface
    variable = eta
    kappa_name = kappa
  [../]
  [./detadt]
    type = TimeDerivative
    variable = eta
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -sub_pc_type   -sub_pc_factor_shift_type'
  petsc_options_value = 'asm       ilu            nonzero'
  l_max_its = 30
  nl_max_its = 10
  l_tol = 1.0e-4
  nl_rel_tol = 1.0e-8
  nl_abs_tol = 1.0e-11
  num_steps = 200
  [./TimeStepper]
    type = SolutionTimeAdaptiveDT
    dt = 0.5
  [../]
[]
[Postprocessors]
  [./f_el_int]
    type = ElementIntegralMaterialProperty
    mat_prop = f_el_mat
  [../]
  [./c_alpha]
    type =  SideAverageValue
    boundary = left
    variable = c
  [../]
  [./c_beta]
    type =  SideAverageValue
    boundary = right
    variable = c
  [../]
  [./e11_alpha]
    type =  SideAverageValue
    boundary = left
    variable = e11
  [../]
  [./e11_beta]
    type =  SideAverageValue
    boundary = right
    variable = e11
  [../]
  [./s11_alpha]
    type =  SideAverageValue
    boundary = left
    variable = sigma11
  [../]
  [./s22_alpha]
    type =  SideAverageValue
    boundary = left
    variable = sigma22
  [../]
  [./s33_alpha]
    type =  SideAverageValue
    boundary = left
    variable = sigma33
  [../]
  [./s11_beta]
    type =  SideAverageValue
    boundary = right
    variable = sigma11
  [../]
  [./s22_beta]
    type =  SideAverageValue
    boundary = right
    variable = sigma22
  [../]
  [./s33_beta]
    type =  SideAverageValue
    boundary = right
    variable = sigma33
  [../]
  [./f_el_alpha]
    type =  SideAverageValue
    boundary = left
    variable = f_el
  [../]
  [./f_el_beta]
    type =  SideAverageValue
    boundary = right
    variable = f_el
  [../]
  [./f_c_alpha]
    type =  SideAverageValue
    boundary = left
    variable = Fglobal
  [../]
  [./f_c_beta]
    type =  SideAverageValue
    boundary = right
    variable = Fglobal
  [../]
  [./chem_pot_alpha]
    type =  SideAverageValue
    boundary = left
    variable = w
  [../]
  [./chem_pot_beta]
    type =  SideAverageValue
    boundary = right
    variable = w
  [../]
  [./psi_alpha]
    type =  SideAverageValue
    boundary = left
    variable = psi
  [../]
  [./psi_beta]
    type =  SideAverageValue
    boundary = right
    variable = psi
  [../]
  [./total_energy]
    type = ElementIntegralVariablePostprocessor
    variable = Fglobal
  [../]
  # Get simulation cell size from postprocessor
  [./volume]
    type = ElementIntegralMaterialProperty
    mat_prop = 1
  [../]
  [./psi_eq_int]
    type = FunctionValuePostprocessor
    function = psi_eq_int
  [../]
  [./psi_int]
    type = ElementIntegralVariablePostprocessor
    variable = psi
  [../]
  [./gamma]
    type = FunctionValuePostprocessor
    function = gamma
  [../]
  [./int_position]
    type = FindValueOnLine
    start_point = '-10 0 0'
    end_point = '10 0 0'
    v = eta
    target = 0.5
  [../]
[]
#
# Precondition using handcoded off-diagonal terms
#
[Preconditioning]
  [./full]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  [./exodus]
    type = Exodus
    time_step_interval = 20
  [../]
  checkpoint = true
  [./csv]
    type = CSV
    execute_on = 'final'
  [../]
[]
(modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_small_strain.i)
# 1x1x1 unit cube with uniform pressure on top face and 2 phases with different materials
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  nx = 1
  ny = 1
  nz = 6
  zmax = 1
  xmax = 1
  ymax = 1
[]
[Variables]
  [temp]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1000.0
  []
[]
[ICs]
  [phase1IC]
    type = BoundingBoxIC
    x1 = -1
    x2 = 1.5
    y1 = -1
    y2 = 1.5
    z1 = -1
    z2 = 1.0
    inside = 1
    outside = 0
    variable = phase1
    int_width=0.01
  []
  [phase2IC]
    type = BoundingBoxIC
    x1 = -1
    x2 = 1.5
    y1 = -1
    y2 = 1.5
    z1 = -1
    z2 = 1.0
    inside = 0
    outside = 1
    variable = phase2
    int_width=0.01
  []
[]
[AuxVariables]
  [phase1]
  []
  [phase2]
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = SMALL
    incremental = true
    add_variables = true
    generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
  []
[]
[Functions]
  [top_pull]
    type = PiecewiseLinear
    x = '0 1'
    y = '1 1'
  []
[]
[Kernels]
  [heat]
    type = Diffusion
    variable = temp
  []
  [heat_ie]
    type = TimeDerivative
    variable = temp
  []
[]
[BCs]
  [u_top_pull]
    type = Pressure
    variable = disp_y
    boundary = top
    factor = -10.0e6
    function = top_pull
  []
  [u_bottom_fix]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0.0
  []
  [u_yz_fix]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0.0
  []
  [u_xy_fix]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0.0
  []
  [temp_fix]
    type = DirichletBC
    variable = temp
    boundary = 'bottom top'
    value = 1000.0
  []
[]
[Materials]
  [elasticity_tensor1]
    type = ComputeIsotropicElasticityTensor
    base_name = C1
    youngs_modulus = 2e11
    poissons_ratio = 0.3
  []
  [elasticity_tensor2]
    type = ComputeIsotropicElasticityTensor
    base_name = C2
    youngs_modulus = 2e11
    poissons_ratio = 0.3
  []
  [h1]
    type = ParsedMaterial
    property_name = h1
    coupled_variables = phase1
    expression = '0.5*tanh(20*(phase1-0.5))+0.5'
  []
  [h2]
    type = ParsedMaterial
    property_name = h2
    coupled_variables = phase2
    expression = '0.5*tanh(20*(phase2-0.5))+0.5'
  []
  [./C]
    type = CompositeElasticityTensor
    coupled_variables = 'phase1 phase2'
    tensors = 'C1   C2'
    weights = 'h1   h2'
  [../]
  [radial_return_stress]
    type = ComputeMultipleInelasticStress
    inelastic_models = 'power_law_creep'
    tangent_operator = elastic
  []
  [power_law_creep]
    type = CompositePowerLawCreepStressUpdate
    coefficient = '1.0e-15 2.0e-18'
    n_exponent = '4        5'
    activation_energy = '3.0e5  3.5e5'
    switching_functions = 'h1 h2'
    temperature = temp
  []
[]
[VectorPostprocessors]
  [./soln]
    type = LineValueSampler
    warn_discontinuous_face_values = false
    sort_by = x
    variable = 'disp_x disp_y disp_z creep_strain_xx creep_strain_yy creep_strain_zz'
    start_point = '0 0 0.0'
    end_point = '1.0 1.0 1.0'
    num_points = 5
    outputs = tests
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp'
  petsc_options_iname = '-ksp_gmres_restart'
  petsc_options_value = '101'
  line_search = 'none'
  l_max_its = 20
  nl_max_its = 20
  nl_rel_tol = 1.0e-9
  nl_abs_tol = 1.0e-9
  l_tol = 1e-10
  start_time = 0.0
  end_time = 1.0
  num_steps = 10
  dt = 0.1
[]
[Outputs]
  exodus = false
  [./tests]
    type = CSV
    execute_on = final
  [../]
[]
(modules/combined/test/tests/umat/gap_heat_transfer_umat.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
  temperature = temp
[]
[Mesh]
  file = gap_heat_transfer_mesh.e
[]
[Functions]
  [disp]
    type = PiecewiseLinear
    x = '0 2.0'
    y = '0 1.0'
  []
  [temp]
    type = PiecewiseLinear
    x = '0     1'
    y = '273 2000'
  []
  [pressure_function]
    type = PiecewiseLinear
    x = '0     1'
    y = '0 200'
  []
[]
[Variables]
  [disp_x]
  []
  [disp_y]
  []
  [disp_z]
  []
  [temp]
    initial_condition = 273
  []
[]
[ThermalContact]
  [thermal_contact]
    type = GapHeatTransfer
    variable = temp
    primary = 2
    secondary = 3
    emissivity_primary = 0
    emissivity_secondary = 0
  []
[]
[Physics/SolidMechanics/QuasiStatic/All]
  volumetric_locking_correction = true
  strain = FINITE
  generate_output = 'strain_yy stress_yy'
[]
[Kernels]
  [heat]
    type = HeatConduction
    variable = temp
  []
[]
[BCs]
  [move_right]
    type = FunctionDirichletBC
    boundary = '3'
    variable = disp_x
    function = disp
  []
  [fixed_x]
    type = DirichletBC
    boundary = '1'
    variable = disp_x
    value = 0
  []
  [fixed_y]
    type = DirichletBC
    boundary = '1 2 4'
    variable = disp_y
    value = 0
  []
  [fixed_z]
    type = DirichletBC
    boundary = '1 2 3 4'
    variable = disp_z
    value = 0
  []
  [temp_bottom]
    type = FunctionDirichletBC
    boundary = 1
    variable = temp
    function = temp
  []
  [temp_top]
    type = DirichletBC
    boundary = 4
    variable = temp
    value = 100
  []
  [Pressure]
    [example]
      boundary = 3
      function = pressure_function
    []
  []
[]
[Materials]
  # 1. Active for umat calculation
  [umat]
    type = AbaqusUMATStress
    constant_properties = '1.0e6 0.3'
    plugin = '../../../../solid_mechanics/test/plugins/elastic_temperature'
    num_state_vars = 0
    temperature = temp
    use_one_based_indexing = true
  []
  #  2. Active for reference MOOSE computations
  [elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    block = '1 2'
    base_name = 'base'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  []
  [temp_dependent_elasticity_tensor]
    type = CompositeElasticityTensor
    block = '1 2'
    coupled_variables = temp
    tensors = 'base'
    weights = 'prefactor_material'
  []
  [prefactor_material_block]
    type = DerivativeParsedMaterial
    block = '1 2'
    property_name = prefactor_material
    coupled_variables = temp
    expression = '273/(temp)'
  []
  [stress]
    type = ComputeFiniteStrainElasticStress
    block = '1 2'
  []
  [heat]
    type = HeatConductionMaterial
    block = '1 2'
    specific_heat = 1.0
    thermal_conductivity = 1.0
  []
  [density]
    type = Density
    block = '1 2'
    density = 1.0
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  start_time = 0.0
  dt = 0.1
  end_time = 2.0
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_onePhaseMulti.i)
# 1x1x1 unit cube with uniform pressure on top face and 2 phases with different materials
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  nx = 1
  ny = 1
  nz = 6
  zmax = 1
  xmax = 1
  ymax = 1
[]
[Variables]
  [temp]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1000.0
  []
[]
[ICs]
  [phase1IC]
    type = BoundingBoxIC
    x1 = -1
    x2 = 1.5
    y1 = -1
    y2 = 1.5
    z1 = -1
    z2 = 1.0
    inside = 1
    outside = 0
    variable = phase1
    int_width=0.01
  []
  [phase2IC]
    type = BoundingBoxIC
    x1 = -1
    x2 = 1.5
    y1 = -1
    y2 = 1.5
    z1 = -1
    z2 = 1.0
    inside = 0
    outside = 1
    variable = phase2
    int_width=0.01
  []
[]
[AuxVariables]
  [phase1]
  []
  [phase2]
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = FINITE
    incremental = true
    add_variables = true
    generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
  []
[]
[Functions]
  [top_pull]
    type = PiecewiseLinear
    x = '0 1'
    y = '1 1'
  []
[]
[Kernels]
  [heat]
    type = Diffusion
    variable = temp
  []
  [heat_ie]
    type = TimeDerivative
    variable = temp
  []
[]
[BCs]
  [u_top_pull]
    type = Pressure
    variable = disp_y
    boundary = top
    factor = -10.0e6
    function = top_pull
  []
  [u_bottom_fix]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0.0
  []
  [u_yz_fix]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0.0
  []
  [u_xy_fix]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0.0
  []
  [temp_fix]
    type = DirichletBC
    variable = temp
    boundary = 'bottom top'
    value = 1000.0
  []
[]
[Materials]
  [elasticity_tensor1]
    type = ComputeIsotropicElasticityTensor
    base_name = C1
    youngs_modulus = 2e11
    poissons_ratio = 0.3
  []
  [elasticity_tensor2]
    type = ComputeIsotropicElasticityTensor
    base_name = C2
    youngs_modulus = 2e11
    poissons_ratio = 0.3
  []
  [h1]
    type = ParsedMaterial
    property_name = h1
    coupled_variables = phase1
    expression = '0.5*tanh(20*(phase1-0.5))+0.5'
  []
  [h2]
    type = ParsedMaterial
    property_name = h2
    coupled_variables = phase2
    expression = '0.5*tanh(20*(phase2-0.5))+0.5'
  []
  [./C]
    type = CompositeElasticityTensor
    coupled_variables = 'phase1 phase2'
    tensors = 'C1   C2'
    weights = 'h1   h2'
  [../]
  [radial_return_stress]
    type = ComputeMultipleInelasticStress
    inelastic_models = 'power_law_creep plas'
    tangent_operator = elastic
  []
  [power_law_creep]
    type = CompositePowerLawCreepStressUpdate
    coefficient = '1e-15 5e-20'
    n_exponent = '4      5'
    activation_energy = '3.0e5 3.5e5'
    switching_functions = 'h1  h1'
    temperature = temp
  []
  [./plas]
    type = IsotropicPlasticityStressUpdate
    hardening_constant = 1
    yield_stress = 1e30
  [../]
[]
[VectorPostprocessors]
  [./soln]
    type = LineValueSampler
    warn_discontinuous_face_values = false
    sort_by = x
    variable = 'disp_x disp_y disp_z creep_strain_xx creep_strain_yy creep_strain_zz'
    start_point = '0 0 0.0'
    end_point = '1.0 1.0 1.0'
    num_points = 5
    outputs = tests
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp'
  petsc_options_iname = '-ksp_gmres_restart'
  petsc_options_value = '101'
  line_search = 'none'
  l_max_its = 20
  nl_max_its = 20
  nl_rel_tol = 1.0e-10
  nl_abs_tol = 1.0e-10
  l_tol = 1e-10
  start_time = 0.0
  end_time = 1.0
  num_steps = 10
  dt = 0.1
[]
[Outputs]
  exodus = false
  [./tests]
    type = CSV
    execute_on = final
  [../]
[]
(modules/solid_mechanics/test/tests/umat/predef/predef_multiple.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 3
    xmin = -0.5
    xmax = 0.5
    ymin = -0.5
    ymax = 0.5
    zmin = -0.5
    zmax = 0.5
  []
[]
[Functions]
  [top_pull]
    type = ParsedFunction
    expression = -t*10
  []
  [right_pull]
    type = ParsedFunction
    expression = -t*0.5
  []
[]
[AuxVariables]
  [strain_yy]
    family = MONOMIAL
    order = FIRST
  []
  [strain_xx]
    family = MONOMIAL
    order = FIRST
  []
[]
[AuxKernels]
  [strain_xx]
    type = RankTwoAux
    rank_two_tensor = total_strain
    variable = strain_xx
    index_i = 0
    index_j = 0
  []
  [strain_yy]
    type = RankTwoAux
    rank_two_tensor = total_strain
    variable = strain_yy
    index_i = 1
    index_j = 1
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    add_variables = true
    strain = FINITE
  []
[]
[BCs]
  [Pressure]
    [bc_presssure_top]
      boundary = top
      function = top_pull
    []
    [bc_presssure_right]
      boundary = right
      function = right_pull
    []
  []
  [x_bot]
    type = DirichletBC
    variable = disp_x
    boundary = bottom
    value = 0.0
  []
  [y_bot]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0.0
  []
  [z_bot]
    type = DirichletBC
    variable = disp_z
    boundary = bottom
    value = 0.0
  []
[]
[Materials]
  # 1. Active for UMAT
  [umat]
    type = AbaqusUMATStress
    constant_properties = '1000 0.3'
    plugin = '../../../plugins/elastic_multiple_predef'
    num_state_vars = 0
    external_fields = 'strain_xx strain_yy'
    use_one_based_indexing = true
  []
  # 2. Active for reference MOOSE computations
  [elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    base_name = 'base'
    youngs_modulus = 1e3
    poissons_ratio = 0.3
  []
  [strain_dependent_elasticity_tensor]
    type = CompositeElasticityTensor
    coupled_variables = 'strain_yy strain_xx'
    tensors = 'base'
    weights = 'prefactor_material'
  []
  [prefactor_material_block]
    type = DerivativeParsedMaterial
    property_name = prefactor_material
    coupled_variables = 'strain_yy strain_xx'
    expression = '1.0/(1.0 + strain_yy + strain_xx)'
  []
  [stress]
    type = ComputeFiniteStrainElasticStress
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp_ew'
  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-12
  nl_abs_tol = 1e-10
  l_tol = 1e-9
  start_time = 0.0
  end_time = 30
  dt = 1.0
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/umat/predef/predef_multiple_mat.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 3
    xmin = -0.5
    xmax = 0.5
    ymin = -0.5
    ymax = 0.5
    zmin = -0.5
    zmax = 0.5
  []
[]
[Functions]
  [top_pull]
    type = ParsedFunction
    expression = -t*10
  []
  [right_pull]
    type = ParsedFunction
    expression = -t*0.5
  []
[]
[AuxVariables]
  [strain_yy]
    family = MONOMIAL
    order = FIRST
  []
  [strain_xx]
    family = MONOMIAL
    order = FIRST
  []
[]
[AuxKernels]
  [strain_xx]
    type = RankTwoAux
    rank_two_tensor = total_strain
    variable = strain_xx
    index_i = 0
    index_j = 0
  []
  [strain_yy]
    type = RankTwoAux
    rank_two_tensor = total_strain
    variable = strain_yy
    index_i = 1
    index_j = 1
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    add_variables = true
    strain = FINITE
  []
[]
[BCs]
  [Pressure]
    [bc_presssure_top]
      boundary = top
      function = top_pull
    []
    [bc_presssure_right]
      boundary = right
      function = right_pull
    []
  []
  [x_bot]
    type = DirichletBC
    variable = disp_x
    boundary = bottom
    value = 0.0
  []
  [y_bot]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0.0
  []
  [z_bot]
    type = DirichletBC
    variable = disp_z
    boundary = bottom
    value = 0.0
  []
[]
[Materials]
  # 1. Active for UMAT
  [strain_xx]
    type = RankTwoCartesianComponent
    property_name = strain_xx
    rank_two_tensor = total_strain
    index_i = 0
    index_j = 0
  []
  [strain_yy]
    type = RankTwoCartesianComponent
    property_name = strain_yy
    rank_two_tensor = total_strain
    index_i = 1
    index_j = 1
  []
  [umat]
    type = AbaqusUMATStress
    constant_properties = '1000 0.3'
    plugin = '../../../plugins/elastic_multiple_predef'
    num_state_vars = 0
    external_properties = 'strain_xx strain_yy'
    use_one_based_indexing = true
  []
  # 2. Active for reference MOOSE computations
  [elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    base_name = 'base'
    youngs_modulus = 1e3
    poissons_ratio = 0.3
  []
  [strain_dependent_elasticity_tensor]
    type = CompositeElasticityTensor
    coupled_variables = 'strain_yy strain_xx'
    tensors = 'base'
    weights = 'prefactor_material'
  []
  [prefactor_material_block]
    type = DerivativeParsedMaterial
    property_name = prefactor_material
    material_property_names = 'strain_yy strain_xx'
    expression = '1.0/(1.0 + strain_yy + strain_xx)'
  []
  [stress]
    type = ComputeFiniteStrainElasticStress
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp_ew'
  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-12
  nl_abs_tol = 1e-10
  l_tol = 1e-9
  start_time = 0.0
  end_time = 30
  dt = 1.0
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/elasticitytensor/composite.i)
# This input file is designed to test the RankTwoAux and RankFourAux
# auxkernels, which report values out of the Tensors used in materials
# properties.
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 20
  xmax = 1
[]
[AuxVariables]
  [./c]
    order = FIRST
    family = LAGRANGE
    [./InitialCondition]
      type = FunctionIC
      function = x
    [../]
  [../]
  [./C1111_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./C1122_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./C1133_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./C3313_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./dC1111_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./dC1122_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./dC1133_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./dC3313_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./d2C1111_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./d2C1122_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./d2C1133_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./d2C3313_aux]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
#[Kernels]
#  [./diff]
#    type = Diffusion
#    variable = diffused
#  [../]
#[]
[AuxKernels]
  [./matl_C1111]
    type = RankFourAux
    rank_four_tensor = elasticity_tensor
    index_i = 0
    index_j = 0
    index_k = 0
    index_l = 0
    variable = C1111_aux
    execute_on = initial
  [../]
   [./matl_C1122]
    type = RankFourAux
    rank_four_tensor = elasticity_tensor
    index_i = 0
    index_j = 0
    index_k = 1
    index_l = 1
    variable = C1122_aux
    execute_on = initial
  [../]
  [./matl_C1133]
    type = RankFourAux
    rank_four_tensor = elasticity_tensor
    index_i = 0
    index_j = 0
    index_k = 2
    index_l = 2
    variable = C1133_aux
    execute_on = initial
  [../]
  [./matl_C3313]
    type = RankFourAux
    rank_four_tensor = elasticity_tensor
    index_i = 2
    index_j = 2
    index_k = 0
    index_l = 2
    variable = C3313_aux
    execute_on = initial
  [../]
  [./matl_dC1111]
    type = RankFourAux
    rank_four_tensor = delasticity_tensor/dc
    index_i = 0
    index_j = 0
    index_k = 0
    index_l = 0
    variable = dC1111_aux
    execute_on = initial
  [../]
   [./matl_dC1122]
    type = RankFourAux
    rank_four_tensor = delasticity_tensor/dc
    index_i = 0
    index_j = 0
    index_k = 1
    index_l = 1
    variable = dC1122_aux
    execute_on = initial
  [../]
  [./matl_dC1133]
    type = RankFourAux
    rank_four_tensor = delasticity_tensor/dc
    index_i = 0
    index_j = 0
    index_k = 2
    index_l = 2
    variable = dC1133_aux
    execute_on = initial
  [../]
  [./matl_dC3313]
    type = RankFourAux
    rank_four_tensor = delasticity_tensor/dc
    index_i = 2
    index_j = 2
    index_k = 0
    index_l = 2
    variable = dC3313_aux
    execute_on = initial
  [../]
  [./matl_d2C1111]
    type = RankFourAux
    rank_four_tensor = d^2elasticity_tensor/dc^2
    index_i = 0
    index_j = 0
    index_k = 0
    index_l = 0
    variable = d2C1111_aux
    execute_on = initial
  [../]
   [./matl_d2C1122]
    type = RankFourAux
    rank_four_tensor = d^2elasticity_tensor/dc^2
    index_i = 0
    index_j = 0
    index_k = 1
    index_l = 1
    variable = d2C1122_aux
    execute_on = initial
  [../]
  [./matl_d2C1133]
    type = RankFourAux
    rank_four_tensor = d^2elasticity_tensor/dc^2
    index_i = 0
    index_j = 0
    index_k = 2
    index_l = 2
    variable = d2C1133_aux
    execute_on = initial
  [../]
  [./matl_d2C3313]
    type = RankFourAux
    rank_four_tensor = d^2elasticity_tensor/dc^2
    index_i = 2
    index_j = 2
    index_k = 0
    index_l = 2
    variable = d2C3313_aux
    execute_on = initial
  [../]
[]
[Materials]
  [./Ca]
    type = ComputeElasticityTensor
    base_name = Ca
    block = 0
    fill_method = symmetric21
    C_ijkl ='1111 .1122 1133 1123 1113 1112 2222 2233 2223 2213 2212 3333 3323 3313 3312 2323 2313 2312 1313 1312 1212'
  [../]
  [./Cb]
    type = ComputeElasticityTensor
    base_name = Cb
    block = 0
    fill_method = symmetric21
    C_ijkl ='.1111 1122 .1133 .1123 .1113 .1112 .2222 .2233 .2223 .2213 .2212 .3333 .3323 .3313 .3312 .2323 .2313 .2312 .1313 .1312 .1212'
  [../]
  [./Fa]
    type = DerivativeParsedMaterial
    block = 0
    property_name = Fa
    expression = c^2
    coupled_variables = c
  [../]
  [./Fb]
    type = DerivativeParsedMaterial
    block = 0
    property_name = Fb
    expression = (1-c)^3
    coupled_variables = c
  [../]
  [./C]
    type = CompositeElasticityTensor
    block = 0
    coupled_variables = c
    tensors = 'Ca Cb'
    weights = 'Fa Fb'
  [../]
[]
[Problem]
  kernel_coverage_check = false
  solve = false
[]
[Executioner]
  type = Steady
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_plasticity.i)
# 1x1x1 unit cube with uniform pressure on top face and 2 phases with different materials
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  nx = 1
  ny = 1
  nz = 6
  zmax = 1
  xmax = 1
  ymax = 1
[]
[Variables]
  [temp]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1000.0
  []
[]
[ICs]
  [phase1IC]
    type = BoundingBoxIC
    x1 = -1
    x2 = 1.5
    y1 = -1
    y2 = 1.5
    z1 = -1
    z2 = 1.0
    inside = 1
    outside = 0
    variable = phase1
    int_width=0.01
  []
  [phase2IC]
    type = BoundingBoxIC
    x1 = -1
    x2 = 1.5
    y1 = -1
    y2 = 1.5
    z1 = -1
    z2 = 1.0
    inside = 0
    outside = 1
    variable = phase2
    int_width=0.01
  []
[]
[AuxVariables]
  [phase1]
  []
  [phase2]
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = FINITE
    incremental = true
    add_variables = true
    generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
  []
[]
[Functions]
  [top_pull]
    type = PiecewiseLinear
    x = '0 1'
    y = '1 1'
  []
[]
[Kernels]
  [heat]
    type = Diffusion
    variable = temp
  []
  [heat_ie]
    type = TimeDerivative
    variable = temp
  []
[]
[BCs]
  [u_top_pull]
    type = Pressure
    variable = disp_y
    boundary = top
    factor = -10.0e6
    function = top_pull
  []
  [u_bottom_fix]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0.0
  []
  [u_yz_fix]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0.0
  []
  [u_xy_fix]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0.0
  []
  [temp_fix]
    type = DirichletBC
    variable = temp
    boundary = 'bottom top'
    value = 1000.0
  []
[]
[Materials]
  [elasticity_tensor1]
    type = ComputeIsotropicElasticityTensor
    base_name = C1
    youngs_modulus = 2e11
    poissons_ratio = 0.3
  []
  [elasticity_tensor2]
    type = ComputeIsotropicElasticityTensor
    base_name = C2
    youngs_modulus = 2e11
    poissons_ratio = 0.3
  []
  [h1]
    type = ParsedMaterial
    property_name = h1
    coupled_variables = phase1
    expression = '0.5*tanh(20*(phase1-0.5))+0.5'
  []
  [h2]
    type = ParsedMaterial
    property_name = h2
    coupled_variables = phase2
    expression = '0.5*tanh(20*(phase2-0.5))+0.5'
  []
  [./C]
    type = CompositeElasticityTensor
    coupled_variables = 'phase1 phase2'
    tensors = 'C1   C2'
    weights = 'h1   h2'
  [../]
  [radial_return_stress]
    type = ComputeMultipleInelasticStress
    inelastic_models = 'power_law_creep plas'
    tangent_operator = elastic
  []
  [power_law_creep]
    type = CompositePowerLawCreepStressUpdate
    coefficient = '1.0e-15 2.0e-18'
    n_exponent = '4        5'
    activation_energy = '3.0e5  3.5e5'
    switching_functions = 'h1 h2'
    temperature = temp
  []
  [./plas]
    type = IsotropicPlasticityStressUpdate
    hardening_constant = 1
    yield_stress = 1e30
  [../]
[]
[VectorPostprocessors]
  [./soln]
    type = LineValueSampler
    warn_discontinuous_face_values = false
    sort_by = x
    variable = 'disp_x disp_y disp_z creep_strain_xx creep_strain_yy creep_strain_zz'
    start_point = '0 0 0.0'
    end_point = '1.0 1.0 1.0'
    num_points = 5
    outputs = tests
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp'
  petsc_options_iname = '-ksp_gmres_restart'
  petsc_options_value = '101'
  line_search = 'none'
  l_max_its = 20
  nl_max_its = 20
  nl_rel_tol = 1.0e-9
  nl_abs_tol = 1.0e-9
  l_tol = 1e-10
  start_time = 0.0
  end_time = 1.0
  num_steps = 10
  dt = 0.1
[]
[Outputs]
  exodus = false
  [./tests]
    type = CSV
    execute_on = final
  [../]
[]
(modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep.i)
# 1x1x1 unit cube with uniform pressure on top face and 2 phases with different materials
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  type = GeneratedMesh
  dim = 3
  nx = 1
  ny = 1
  nz = 6
  zmax = 1
  xmax = 1
  ymax = 1
[]
[Variables]
  [temp]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1000.0
  []
[]
[ICs]
  [phase1IC]
    type = BoundingBoxIC
    x1 = -1
    x2 = 1.5
    y1 = -1
    y2 = 1.5
    z1 = -1
    z2 = 1.0
    inside = 1
    outside = 0
    variable = phase1
    int_width=0.01
  []
  [phase2IC]
    type = BoundingBoxIC
    x1 = -1
    x2 = 1.5
    y1 = -1
    y2 = 1.5
    z1 = -1
    z2 = 1.0
    inside = 0
    outside = 1
    variable = phase2
    int_width=0.01
  []
[]
[AuxVariables]
  [phase1]
  []
  [phase2]
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = FINITE
    incremental = true
    add_variables = true
    generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
  []
[]
[Functions]
  [top_pull]
    type = PiecewiseLinear
    x = '0 1'
    y = '1 1'
  []
[]
[Kernels]
  [heat]
    type = Diffusion
    variable = temp
  []
  [heat_ie]
    type = TimeDerivative
    variable = temp
  []
[]
[BCs]
  [u_top_pull]
    type = Pressure
    variable = disp_y
    boundary = top
    factor = -10.0e6
    function = top_pull
  []
  [u_bottom_fix]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0.0
  []
  [u_yz_fix]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0.0
  []
  [u_xy_fix]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0.0
  []
  [temp_fix]
    type = DirichletBC
    variable = temp
    boundary = 'bottom top'
    value = 1000.0
  []
[]
[Materials]
  [elasticity_tensor1]
    type = ComputeIsotropicElasticityTensor
    base_name = C1
    youngs_modulus = 2e11
    poissons_ratio = 0.3
  []
  [elasticity_tensor2]
    type = ComputeIsotropicElasticityTensor
    base_name = C2
    youngs_modulus = 2e11
    poissons_ratio = 0.3
  []
  [h1]
    type = ParsedMaterial
    property_name = h1
    coupled_variables = phase1
    expression = '0.5*tanh(20*(phase1-0.5))+0.5'
  []
  [h2]
    type = ParsedMaterial
    property_name = h2
    coupled_variables = phase2
    expression = '0.5*tanh(20*(phase2-0.5))+0.5'
  []
  [./C]
    type = CompositeElasticityTensor
    coupled_variables = 'phase1 phase2'
    tensors = 'C1   C2'
    weights = 'h1   h2'
  [../]
  [radial_return_stress]
    type = ComputeMultipleInelasticStress
    inelastic_models = 'power_law_creep'
    tangent_operator = elastic
  []
  [power_law_creep]
    type = CompositePowerLawCreepStressUpdate
    coefficient = '1.0e-15 2.0e-18'
    n_exponent = '4        5'
    activation_energy = '3.0e5  3.5e5'
    switching_functions = 'h1 h2'
    temperature = temp
  []
[]
[VectorPostprocessors]
  [./soln]
    type = LineValueSampler
    warn_discontinuous_face_values = false
    sort_by = x
    variable = 'disp_x disp_y disp_z creep_strain_xx creep_strain_yy creep_strain_zz'
    start_point = '0 0 0.0'
    end_point = '1.0 1.0 1.0'
    num_points = 5
    outputs = tests
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp'
  petsc_options_iname = '-ksp_gmres_restart'
  petsc_options_value = '101'
  line_search = 'none'
  l_max_its = 20
  nl_max_its = 20
  nl_rel_tol = 1.0e-9
  nl_abs_tol = 1.0e-9
  l_tol = 1e-10
  start_time = 0.0
  end_time = 1.0
  num_steps = 10
  dt = 0.1
[]
[Outputs]
  exodus = false
  [./tests]
    type = CSV
    execute_on = final
  [../]
[]
(modules/solid_mechanics/test/tests/umat/predef/predef.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 3
    xmin = -0.5
    xmax = 0.5
    ymin = -0.5
    ymax = 0.5
    zmin = -0.5
    zmax = 0.5
  []
[]
[Functions]
  [top_pull]
    type = ParsedFunction
    expression = -t*10
  []
[]
[AuxVariables]
  [strain_yy]
    family = MONOMIAL
    order = FIRST
  []
[]
[AuxKernels]
  [strain_yy]
    type = RankTwoAux
    rank_two_tensor = total_strain
    variable = strain_yy
    index_i = 1
    index_j = 1
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    add_variables = true
    strain = FINITE
  []
[]
[BCs]
  [Pressure]
    [bc_presssure]
      boundary = top
      function = top_pull
    []
  []
  [x_bot]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0.0
  []
  [y_bot]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0.0
  []
  [z_bot]
    type = DirichletBC
    variable = disp_z
    boundary = front
    value = 0.0
  []
[]
[Materials]
  # Active for
  [umat]
    type = AbaqusUMATStress
    constant_properties = '1000 0.3'
    plugin = '../../../plugins/elastic_predef'
    num_state_vars = 0
    external_fields = 'strain_yy'
    use_one_based_indexing = true
  []
  #  2. Active for reference MOOSE computations
  [elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    base_name = 'base'
    youngs_modulus = 1e3
    poissons_ratio = 0.3
  []
  [strain_dependent_elasticity_tensor]
    type = CompositeElasticityTensor
    coupled_variables = strain_yy
    tensors = 'base'
    weights = 'prefactor_material'
  []
  [prefactor_material_block]
    type = DerivativeParsedMaterial
    property_name = prefactor_material
    coupled_variables = strain_yy
    expression = '1.0/(1.0 + strain_yy)'
  []
  [stress]
    type = ComputeFiniteStrainElasticStress
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp_ew'
  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-12
  nl_abs_tol = 1e-10
  l_tol = 1e-9
  start_time = 0.0
  end_time = 30
  dt = 1.0
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Outputs]
  exodus = true
[]