- damping_threshold_factor1000If previous iterations's slip is below the slip tolerance, only damp a slip reversal if the slip magnitude is greater than than this factor times the old slip.
Default:1000
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:If previous iterations's slip is below the slip tolerance, only damp a slip reversal if the slip magnitude is greater than than this factor times the old slip.
 - debug_outputFalseOutput detailed debugging information
Default:False
C++ Type:bool
Controllable:No
Description:Output detailed debugging information
 - max_iterative_slip1.79769e+308Maximum iterative slip
Default:1.79769e+308
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Maximum iterative slip
 - min_damping0Minimum value of computed damping. Damping lower than this will result in an exception being thrown and cutting the time step
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Minimum value of computed damping. Damping lower than this will result in an exception being thrown and cutting the time step
 - min_damping_factor0Minimum permissible value for damping factor
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Minimum permissible value for damping factor
 - primaryIDs of the primary surfaces for which slip reversals should be damped
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:IDs of the primary surfaces for which slip reversals should be damped
 - secondaryIDs of the secondary surfaces for which slip reversals should be damped
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:IDs of the secondary surfaces for which slip reversals should be damped
 
ContactSlipDamper
Damp the iterative solution to minimize oscillations in frictional contact constriants between nonlinear iterations
Description
This damper minimizes the oscillations that are inherent in the solution of frictional contact problems by limiting the change in contact state from one nonlinear iteration to the next. This is designed specifically to work with node/face mechanical contact enforced using MechanicalContactConstraint.
This damper specifically addresses reversals in the slip direction from one nonlinear iteration to the next. If a node that is in contact slips farther than it should during a given nonlinear iteration, the resulting residual will cause that node to slip back in the opposite direction in the next nonlinear iteration. If that slip in the opposite direction in this next nonlinear iteration is large enough that it causes the node to slip past the original contact point, it can be extremely difficult to obtain a converged solution because the node keeps slipping back and forth past that original contact point during each nonlinear iteration.
This damper mitigates this problem by scaling back the nonlinear solution update to limit the amount of slip experienced by nodes that are slipping in a direction opposite to the slip direction in the previous nonlinear iteration. For each node in this situation, a scale factor that would bring the node back to its original position is computed, and the minimum value for all such nodes is taken as the overall scale factor. For a simulation with many nodes in contact, this can result initially in small damping factors, but over the course of iterations as the converged solution is approached, the damping factor will typically increase.
The following optional parameters can be used to adjust the behavior of this damper:
min_damping_factorsets a minimum value for the damping. Setting this to a number larger than 0 can permit some amount of excess slip reversals to avoid having the solution getting stuck with extremely small damping factors.max_iterative_slipallows the damper to also limit the amount of slip that can occur during a nonlinear iteration, in addition to limiting slip reversals. This is prescribed in the length units of the model.damping_threshold_factoraffects the slip reversal limiting behavior of this damper when the magnitude of the slip is small. If the amount of slip is small, the node is likely actually in a sticking state, and simply moving within the limits permitted by the penalty factor. This factor specifies the threshold slip, computed as a multiplier on the limit imposed by the penalty factor, at which the damper will start to limit slip reversals. Setting it to larger numbers will make this damper have less effect on nodes will small amounts of slip.
In addition to limiting the nonlinear solution step, this damper also prints out some useful diagnostic information to the output stream, including statistics on the numbers of nodes in various contact states.
Finally, it should be noted that although this damper is primarily intended to be used with frictional contact, it can be useful for frictionless contact because of its ability to limit the maximum amount of slip.
Example Input Syntax
[Dampers<<<{"href": "../../syntax/Dampers/index.html"}>>>]
  [./contact_slip]
    type = ContactSlipDamper<<<{"description": "Damp the iterative solution to minimize oscillations in frictional contact constriants between nonlinear iterations", "href": "ContactSlipDamper.html"}>>>
    secondary<<<{"description": "IDs of the secondary surfaces for which slip reversals should be damped"}>>> = 3
    primary<<<{"description": "IDs of the primary surfaces for which slip reversals should be damped"}>>> = 2
  [../]
[](modules/contact/test/tests/frictional/sliding_elastic_blocks_2d/sliding_elastic_blocks_2d.i)Input 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.
 
Advanced Parameters
Input Files
- (modules/contact/test/tests/verification/hertz_cyl/half_symm_q4/hertz_cyl_half_1deg_template3.i)
 - (modules/contact/test/tests/frictional/single_point_2d/single_point_2d_predictor.i)
 - (modules/contact/test/tests/verification/hertz_cyl/half_symm_q8/hertz_cyl_half_1deg_template3.i)
 - (modules/contact/examples/3d_berkovich/indenter_berkovich_friction.i)
 - (modules/contact/test/tests/frictional/sliding_elastic_blocks_2d/sliding_elastic_blocks_2d_tp.i)
 - (modules/contact/test/tests/frictional/single_point_2d/single_point_2d_tp.i)
 - (modules/contact/test/tests/frictional/single_point_2d/single_point_2d.i)
 - (modules/combined/test/tests/break_mesh_interface_contact/break_mesh_interface_contact.i)
 - (modules/contact/test/tests/hertz_spherical/hertz_contact_hex20.i)
 - (modules/contact/examples/2d_indenter/indenter_rz_nodeface_friction.i)
 - (modules/contact/test/tests/frictional/sliding_elastic_blocks_2d/sliding_elastic_blocks_2d.i)
 - (modules/contact/test/tests/verification/patch_tests/single_pnt_2d/single_point_2d_frictional.i)
 
(modules/contact/test/tests/frictional/sliding_elastic_blocks_2d/sliding_elastic_blocks_2d.i)
[Mesh]
  file = sliding_elastic_blocks_2d.e
[]
[GlobalParams]
  volumetric_locking_correction = false
  displacements = 'disp_x disp_y'
[]
[AuxVariables]
  [./penetration]
  [../]
  [./saved_x]
  [../]
  [./saved_y]
  [../]
  [./diag_saved_x]
  [../]
  [./diag_saved_y]
  [../]
  [./inc_slip_x]
  [../]
  [./inc_slip_y]
  [../]
  [./accum_slip_x]
  [../]
  [./accum_slip_y]
  [../]
  [./accum_slip]
  [../]
  [./tang_force_x]
  [../]
  [./tang_force_y]
  [../]
[]
[Functions]
  [./vertical_movement]
    type = ParsedFunction
    expression = -t
  [../]
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    add_variables = true
    strain = FINITE
    save_in = 'saved_x saved_y'
    diag_save_in = 'diag_saved_x diag_saved_y'
  [../]
[]
[AuxKernels]
  [./inc_slip_x]
    type = PenetrationAux
    variable = inc_slip_x
    quantity = incremental_slip_x
    boundary = 3
    paired_boundary = 2
  [../]
  [./inc_slip_y]
    type = PenetrationAux
    variable = inc_slip_y
    quantity = incremental_slip_y
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip]
    type = PenetrationAux
    variable = accum_slip
    execute_on = timestep_end
    quantity = accumulated_slip
    boundary = 3
    paired_boundary = 2
  [../]
  [./tangential_force_x]
    type = PenetrationAux
    variable = tang_force_x
    execute_on = timestep_end
    quantity = tangential_force_x
    boundary = 3
    paired_boundary = 2
  [../]
  [./tangential_force_y]
    type = PenetrationAux
    variable = tang_force_y
    execute_on = timestep_end
    quantity = tangential_force_y
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip_x]
    type = AccumulateAux
    variable = accum_slip_x
    accumulate_from_variable = inc_slip_x
    execute_on = timestep_end
  [../]
  [./accum_slip_y]
    type = AccumulateAux
    variable = accum_slip_y
    accumulate_from_variable = inc_slip_y
    execute_on = timestep_end
  [../]
  [./penetration]
    type = PenetrationAux
    variable = penetration
    boundary = 3
    paired_boundary = 2
  [../]
[]
[Postprocessors]
  [./bot_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 1
  [../]
  [./bot_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 1
  [../]
  [./top_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 4
  [../]
  [./top_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 4
  [../]
  [./ref_resid_x]
    type = NodalL2Norm
    execute_on = timestep_end
    variable = saved_x
  [../]
  [./ref_resid_y]
    type = NodalL2Norm
    execute_on = timestep_end
    variable = saved_y
  [../]
[]
[BCs]
  [./left_x]
    type = DirichletBC
    variable = disp_x
    boundary = 1
    value = 0.0
  [../]
  [./left_y]
    type = DirichletBC
    variable = disp_y
    boundary = 1
    value = 0.0
  [../]
  [./right_x]
    type = DirichletBC
    variable = disp_x
    boundary = 4
    value = -0.005
  [../]
  [./right_y]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = 4
    function = vertical_movement
  [../]
[]
[Materials]
  [./left]
    type = ComputeIsotropicElasticityTensor
    block = '1'
    youngs_modulus = 1.0e7
    poissons_ratio = 0.3
  [../]
  [./right]
    type = ComputeIsotropicElasticityTensor
    block = '2'
    youngs_modulus = 1.0e6
    poissons_ratio = 0.3
  [../]
  [./stress]
    type = ComputeFiniteStrainElasticStress
    block = '1 2'
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = 'lu     superlu_dist'
  line_search = 'none'
  l_max_its = 100
  nl_max_its = 1000
  dt = 0.01
  end_time = 0.05
  num_steps = 1000
  nl_rel_tol = 1e-16
  nl_abs_tol = 1e-09
  dtmin = 0.01
  l_tol = 1e-3
  [./Predictor]
    type = SimplePredictor
    scale = 1.0
  [../]
[]
[Outputs]
  file_base = sliding_elastic_blocks_2d_out
  print_linear_residuals = true
  perf_graph = true
  [./exodus]
    type = Exodus
    elemental_as_nodal = true
  [../]
  [./console]
    type = Console
    max_rows = 5
  [../]
[]
[Contact]
  [./leftright]
    secondary = 3
    primary = 2
    model = coulomb
    friction_coefficient = '0.25'
    penalty = 1e6
  [../]
[]
[Dampers]
  [./contact_slip]
    type = ContactSlipDamper
    secondary = 3
    primary = 2
  [../]
[]
(modules/contact/test/tests/verification/hertz_cyl/half_symm_q4/hertz_cyl_half_1deg_template3.i)
[GlobalParams]
  order = FIRST
  family = LAGRANGE
  volumetric_locking_correction = true
  displacements = 'disp_x disp_y'
[]
[Mesh]
  file = hertz_cyl_half_1deg.e
[]
[Problem]
  type = ReferenceResidualProblem
  extra_tag_vectors = 'ref'
  reference_vector = 'ref'
[]
[Variables]
  [./disp_x]
  [../]
  [./disp_y]
  [../]
[]
[AuxVariables]
  [./stress_xx]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stress_yy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stress_xy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./saved_x]
  [../]
  [./saved_y]
  [../]
  [./diag_saved_x]
  [../]
  [./diag_saved_y]
  [../]
  [./inc_slip_x]
  [../]
  [./inc_slip_y]
  [../]
  [./accum_slip_x]
  [../]
  [./accum_slip_y]
  [../]
  [./tang_force_x]
  [../]
  [./tang_force_y]
  [../]
[]
[Functions]
  [./disp_ramp_vert]
    type = PiecewiseLinear
    x = '0. 1. 11.'
    y = '0. -0.0020 -0.0020'
  [../]
  [./disp_ramp_horz]
    type = PiecewiseLinear
    x = '0. 1. 11.'
    y = '0. 0.0 0.0014'
  [../]
[]
[Kernels]
  [./TensorMechanics]
    use_displaced_mesh = true
    extra_vector_tags = 'ref'
    save_in = 'saved_x saved_y'
  [../]
[]
[AuxKernels]
  [./stress_xx]
    type = RankTwoAux
    rank_two_tensor = stress
    variable = stress_xx
    index_i = 0
    index_j = 0
    execute_on = timestep_end
  [../]
  [./stress_yy]
    type = RankTwoAux
    rank_two_tensor = stress
    variable = stress_yy
    index_i = 1
    index_j = 1
    execute_on = timestep_end
  [../]
  [./stress_xy]
    type = RankTwoAux
    rank_two_tensor = stress
    variable = stress_xy
    index_i = 0
    index_j = 1
    execute_on = timestep_end
  [../]
  [./inc_slip_x]
    type = PenetrationAux
    variable = inc_slip_x
    execute_on = timestep_end
    boundary = 3
    paired_boundary = 2
  [../]
  [./inc_slip_y]
    type = PenetrationAux
    variable = inc_slip_y
    execute_on = timestep_end
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip_x]
    type = PenetrationAux
    variable = accum_slip_x
    execute_on = timestep_end
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip_y]
    type = PenetrationAux
    variable = accum_slip_y
    execute_on = timestep_end
    boundary = 3
    paired_boundary = 2
  [../]
  [./tang_force_x]
    type = PenetrationAux
    variable = tang_force_x
    quantity = tangential_force_x
    boundary = 3
    paired_boundary = 2
  [../]
  [./tang_force_y]
    type = PenetrationAux
    variable = tang_force_y
    quantity = tangential_force_y
    boundary = 3
    paired_boundary = 2
  [../]
  [./penetration]
    type = PenetrationAux
    variable = penetration
    boundary = 3
    paired_boundary = 2
  [../]
[]
[Postprocessors]
  [./bot_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 1
  [../]
  [./bot_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 1
  [../]
  [./top_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 4
  [../]
  [./top_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 4
  [../]
  [./disp_x226]
    type = NodalVariableValue
    nodeid = 225
    variable = disp_x
  [../]
  [./disp_y226]
    type = NodalVariableValue
    nodeid = 225
    variable = disp_y
  [../]
  [./_dt]
    type = TimestepSize
  [../]
  [./num_lin_it]
    type = NumLinearIterations
  [../]
  [./num_nonlin_it]
    type = NumNonlinearIterations
  [../]
[]
[BCs]
  [./side_x]
    type = DirichletBC
    variable = disp_y
    boundary = '1 2'
    value = 0.0
  [../]
  [./bot_y]
    type = DirichletBC
    variable = disp_x
    boundary = '1 2'
    value = 0.0
  [../]
  [./top_y_disp]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = 4
    function = disp_ramp_vert
  [../]
  [./top_x_disp]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = 4
    function = disp_ramp_horz
  [../]
[]
[Materials]
  [./stuff1_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '1'
    youngs_modulus = 1e10
    poissons_ratio = 0.0
  [../]
  [./stuff1_strain]
    type = ComputeFiniteStrain
    block = '1'
  [../]
  [./stuff1_stress]
    type = ComputeFiniteStrainElasticStress
    block = '1'
  [../]
  [./stuff2_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '2'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./stuff2_strain]
    type = ComputeFiniteStrain
    block = '2'
  [../]
  [./stuff2_stress]
    type = ComputeFiniteStrainElasticStress
    block = '2'
  [../]
  [./stuff3_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '3'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./stuff3_strain]
    type = ComputeFiniteStrain
    block = '3'
  [../]
  [./stuff3_stress]
    type = ComputeFiniteStrainElasticStress
    block = '3'
  [../]
  [./stuff4_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '4'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./stuff4_strain]
    type = ComputeFiniteStrain
    block = '4'
  [../]
  [./stuff4_stress]
    type = ComputeFiniteStrainElasticStress
    block = '4'
  [../]
  [./stuff5_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '5'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./stuff5_strain]
    type = ComputeFiniteStrain
    block = '5'
  [../]
  [./stuff5_stress]
    type = ComputeFiniteStrainElasticStress
    block = '5'
  [../]
  [./stuff6_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '6'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./stuff6_strain]
    type = ComputeFiniteStrain
    block = '6'
  [../]
  [./stuff6_stress]
    type = ComputeFiniteStrainElasticStress
    block = '6'
  [../]
  [./stuff7_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '7'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./stuff7_strain]
    type = ComputeFiniteStrain
    block = '7'
  [../]
  [./stuff7_stress]
    type = ComputeFiniteStrainElasticStress
    block = '7'
  [../]
[]
[Executioner]
  type = Transient
  #Preconditioned JFNK (default)
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = 'lu     superlu_dist'
  line_search = 'none'
  nl_abs_tol = 1e-7
  nl_rel_tol = 1e-6
  l_max_its = 100
  nl_max_its = 200
  start_time = 0.0
  end_time = 2.0
  l_tol = 5e-4
  dt = 0.1
  dtmin = 0.1
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[VectorPostprocessors]
  [./x_disp]
    type = NodalValueSampler
    variable = disp_x
    boundary = '3 4'
    sort_by = id
  [../]
  [./y_disp]
    type = NodalValueSampler
    variable = disp_y
    boundary = '3 4'
    sort_by = id
  [../]
  [./cont_press]
    type = NodalValueSampler
    variable = contact_pressure
    boundary = '3'
    sort_by = id
  [../]
[]
[Outputs]
  print_linear_residuals = true
  perf_graph = true
  [./exodus]
    type = Exodus
    elemental_as_nodal = true
  [../]
  [./console]
    type = Console
    max_rows = 5
  [../]
  [./chkfile]
    type = CSV
    show = 'x_disp y_disp cont_press'
    start_time = 0.9
    execute_vector_postprocessors_on = timestep_end
  [../]
  [./chkfile2]
    type = CSV
    show = 'bot_react_x bot_react_y disp_x226 disp_y226 top_react_x top_react_y'
    start_time = 0.9
    execute_vector_postprocessors_on = timestep_end
  [../]
  [./outfile]
    type = CSV
    delimiter = ' '
    execute_vector_postprocessors_on = none
  [../]
[]
[Contact]
  [./interface]
    primary = 2
    secondary = 3
    model = coulomb
    friction_coefficient = 0.0
    formulation = penalty
    normalize_penalty = true
    tangential_tolerance = 1e-3
    penalty = 1e+9
  [../]
[]
[Dampers]
  [./contact_slip]
    type = ContactSlipDamper
    primary = '2'
    secondary = '3'
  [../]
[]
(modules/contact/test/tests/frictional/single_point_2d/single_point_2d_predictor.i)
[Mesh]
  file = single_point_2d.e
[]
[GlobalParams]
  displacements = 'disp_x disp_y'
  volumetric_locking_correction = false
[]
[AuxVariables]
  [./penetration]
  [../]
  [./saved_x]
  [../]
  [./saved_y]
  [../]
  [./diag_saved_x]
  [../]
  [./diag_saved_y]
  [../]
  [./inc_slip_x]
  [../]
  [./inc_slip_y]
  [../]
  [./accum_slip_x]
  [../]
  [./accum_slip_y]
  [../]
[]
[Functions]
  [./horizontal_movement]
    type = ParsedFunction
    expression = t
  [../]
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    add_variables = true
    strain = FINITE
    save_in = 'saved_x saved_y'
    diag_save_in = 'diag_saved_x diag_saved_y'
  [../]
[]
[AuxKernels]
  [./incslip_x]
    type = PenetrationAux
    variable = inc_slip_x
    quantity = incremental_slip_x
    boundary = 3
    paired_boundary = 2
  [../]
  [./incslip_y]
    type = PenetrationAux
    variable = inc_slip_y
    quantity = incremental_slip_y
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip_x]
    type = AccumulateAux
    variable = accum_slip_x
    accumulate_from_variable = inc_slip_x
    execute_on = timestep_end
  [../]
  [./accum_slip_y]
    type = AccumulateAux
    variable = accum_slip_y
    accumulate_from_variable = inc_slip_y
    execute_on = timestep_end
  [../]
  [./penetration]
    type = PenetrationAux
    variable = penetration
    boundary = 3
    paired_boundary = 2
  [../]
[]
[BCs]
  [./botx]
    type = DirichletBC
    variable = disp_x
    boundary = 1
    value = 0.0
  [../]
  [./boty]
    type = DirichletBC
    variable = disp_y
    boundary = 1
    value = 0.0
  [../]
  [./botx2]
    type = DirichletBC
    variable = disp_x
    boundary = 2
    value = 0.0
  [../]
  [./boty2]
    type = DirichletBC
    variable = disp_y
    boundary = 2
    value = 0.0
  [../]
  [./topx]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = 4
    function = horizontal_movement
  [../]
  [./topy]
    type = DirichletBC
    variable = disp_y
    boundary = 4
    value = -0.005
  [../]
[]
[Materials]
  [./bottom]
    type = ComputeIsotropicElasticityTensor
    block = '1'
    youngs_modulus = 1.0e9
    poissons_ratio = 0.3
  [../]
  [./stress]
    type = ComputeFiniteStrainElasticStress
    block = '1 2'
  [../]
  [./top]
    type = ComputeIsotropicElasticityTensor
    block = '2'
    youngs_modulus = 1.0e6
    poissons_ratio = 0.3
  [../]
[]
[Postprocessors]
  [./bot_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 1
  [../]
  [./bot_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 1
  [../]
  [./top_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 4
  [../]
  [./top_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 4
  [../]
  [./ref_resid_x]
    type = NodalL2Norm
    execute_on = timestep_end
    variable = saved_x
  [../]
  [./ref_resid_y]
    type = NodalL2Norm
    execute_on = timestep_end
    variable = saved_y
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = 'lu    superlu_dist'
  line_search = 'none'
  l_max_its = 100
  nl_max_its = 200
  dt = 0.001
  end_time = 0.01
  num_steps = 1000
  nl_rel_tol = 1e-8
  nl_abs_tol = 1e-8
  dtmin = 0.001
  l_tol = 1e-3
  [./Predictor]
    type = SimplePredictor
    scale = 1.0
  [../]
[]
[Outputs]
  exodus = true
  print_linear_residuals = true
  perf_graph = true
  [./console]
    type = Console
    max_rows = 5
  [../]
[]
[Contact]
  [./leftright]
    primary = 2
    secondary = 3
    model = coulomb
    friction_coefficient = '0.25'
  [../]
[]
[Dampers]
  [./contact_slip]
    type = ContactSlipDamper
    primary = '2'
    secondary = '3'
  [../]
[]
(modules/contact/test/tests/verification/hertz_cyl/half_symm_q8/hertz_cyl_half_1deg_template3.i)
[GlobalParams]
  order = SECOND
  volumetric_locking_correction = false
  displacements = 'disp_x disp_y'
[]
[Mesh]
  file = hertz_cyl_half_1deg.e
[]
[Problem]
  type = ReferenceResidualProblem
  extra_tag_vectors = 'ref'
  reference_vector = 'ref'
[]
[Variables]
  [./disp_x]
  [../]
  [./disp_y]
  [../]
[]
[AuxVariables]
  [./stress_xx]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stress_yy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stress_xy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./saved_x]
  [../]
  [./saved_y]
  [../]
  [./diag_saved_x]
  [../]
  [./diag_saved_y]
  [../]
  [./inc_slip_x]
  [../]
  [./inc_slip_y]
  [../]
  [./accum_slip_x]
  [../]
  [./accum_slip_y]
  [../]
  [./tang_force_x]
  [../]
  [./tang_force_y]
  [../]
[]
[Functions]
  [./disp_ramp_vert]
    type = PiecewiseLinear
    x = '0. 1. 11.'
    y = '0. -0.0020 -0.0020'
  [../]
  [./disp_ramp_horz]
    type = PiecewiseLinear
    x = '0. 1. 11.'
    y = '0. 0.0 0.0014'
  [../]
[]
[Kernels]
  [./TensorMechanics]
    use_displaced_mesh = true
    save_in = 'saved_x saved_y'
    extra_vector_tags = 'ref'
  [../]
[]
[AuxKernels]
  [./stress_xx]
    type = RankTwoAux
    rank_two_tensor = stress
    variable = stress_xx
    index_i = 0
    index_j = 0
    execute_on = timestep_end
  [../]
  [./stress_yy]
    type = RankTwoAux
    rank_two_tensor = stress
    variable = stress_yy
    index_i = 1
    index_j = 1
    execute_on = timestep_end
  [../]
  [./stress_xy]
    type = RankTwoAux
    rank_two_tensor = stress
    variable = stress_xy
    index_i = 0
    index_j = 1
    execute_on = timestep_end
  [../]
  [./inc_slip_x]
    type = PenetrationAux
    variable = inc_slip_x
    execute_on = timestep_end
    boundary = 3
    paired_boundary = 2
  [../]
  [./inc_slip_y]
    type = PenetrationAux
    variable = inc_slip_y
    execute_on = timestep_end
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip_x]
    type = PenetrationAux
    variable = accum_slip_x
    execute_on = timestep_end
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip_y]
    type = PenetrationAux
    variable = accum_slip_y
    execute_on = timestep_end
    boundary = 3
    paired_boundary = 2
  [../]
  [./tang_force_x]
    type = PenetrationAux
    variable = tang_force_x
    quantity = tangential_force_x
    boundary = 3
    paired_boundary = 2
  [../]
  [./tang_force_y]
    type = PenetrationAux
    variable = tang_force_y
    quantity = tangential_force_y
    boundary = 3
    paired_boundary = 2
  [../]
  [./penetration]
    type = PenetrationAux
    variable = penetration
    boundary = 3
    paired_boundary = 2
  [../]
[]
[Postprocessors]
  [./bot_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 1
  [../]
  [./bot_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 1
  [../]
  [./top_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 4
  [../]
  [./top_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 4
  [../]
  [./disp_x639]
    type = NodalVariableValue
    nodeid = 638
    variable = disp_x
  [../]
  [./disp_y639]
    type = NodalVariableValue
    nodeid = 638
    variable = disp_y
  [../]
  [./_dt]
    type = TimestepSize
  [../]
  [./num_lin_it]
    type = NumLinearIterations
  [../]
  [./num_nonlin_it]
    type = NumNonlinearIterations
  [../]
[]
[BCs]
  [./side_x]
    type = DirichletBC
    variable = disp_y
    boundary = '1 2'
    value = 0.0
  [../]
  [./bot_y]
    type = DirichletBC
    variable = disp_x
    boundary = '1 2'
    value = 0.0
  [../]
  [./top_y_disp]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = 4
    function = disp_ramp_vert
  [../]
  [./top_x_disp]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = 4
    function = disp_ramp_horz
  [../]
[]
[Materials]
  [./stuff1_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '1'
    youngs_modulus = 1e10
    poissons_ratio = 0.0
  [../]
  [./stuff1_strain]
    type = ComputeFiniteStrain
    block = '1'
  [../]
  [./stuff1_stress]
    type = ComputeFiniteStrainElasticStress
    block = '1'
  [../]
  [./stuff2_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '2'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./stuff2_strain]
    type = ComputeFiniteStrain
    block = '2'
  [../]
  [./stuff2_stress]
    type = ComputeFiniteStrainElasticStress
    block = '2'
  [../]
  [./stuff3_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '3'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./stuff3_strain]
    type = ComputeFiniteStrain
    block = '3'
  [../]
  [./stuff3_stress]
    type = ComputeFiniteStrainElasticStress
    block = '3'
  [../]
  [./stuff4_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '4'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./stuff4_strain]
    type = ComputeFiniteStrain
    block = '4'
  [../]
  [./stuff4_stress]
    type = ComputeFiniteStrainElasticStress
    block = '4'
  [../]
  [./stuff5_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '5'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./stuff5_strain]
    type = ComputeFiniteStrain
    block = '5'
  [../]
  [./stuff5_stress]
    type = ComputeFiniteStrainElasticStress
    block = '5'
  [../]
  [./stuff6_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '6'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./stuff6_strain]
    type = ComputeFiniteStrain
    block = '6'
  [../]
  [./stuff6_stress]
    type = ComputeFiniteStrainElasticStress
    block = '6'
  [../]
  [./stuff7_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '7'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./stuff7_strain]
    type = ComputeFiniteStrain
    block = '7'
  [../]
  [./stuff7_stress]
    type = ComputeFiniteStrainElasticStress
    block = '7'
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = 'lu     superlu_dist'
  line_search = 'none'
  nl_abs_tol = 1e-7
  nl_rel_tol = 1e-6
  l_max_its = 100
  nl_max_its = 200
  start_time = 0.0
  end_time = 2.0
  l_tol = 5e-4
  dt = 0.1
  dtmin = 0.1
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[VectorPostprocessors]
  [./x_disp]
    type = NodalValueSampler
    variable = disp_x
    boundary = '3 4'
    sort_by = id
  [../]
  [./y_disp]
    type = NodalValueSampler
    variable = disp_y
    boundary = '3 4'
    sort_by = id
  [../]
  [./cont_press]
    type = NodalValueSampler
    variable = contact_pressure
    boundary = '3'
    sort_by = id
  [../]
[]
[Outputs]
  print_linear_residuals = true
  perf_graph = true
  [./exodus]
    type = Exodus
    elemental_as_nodal = true
  [../]
  [./console]
    type = Console
    max_rows = 5
  [../]
  [./chkfile]
    type = CSV
    show = 'x_disp y_disp cont_press'
    start_time = 0.9
    execute_vector_postprocessors_on = timestep_end
  [../]
  [./chkfile2]
    type = CSV
    show = 'bot_react_x bot_react_y disp_x639 disp_y639 top_react_x top_react_y'
    start_time = 0.9
    execute_vector_postprocessors_on = timestep_end
  [../]
  [./outfile]
    type = CSV
    delimiter = ' '
    execute_vector_postprocessors_on = none
  [../]
[]
[Contact]
  [./interface]
    primary = 2
    secondary = 3
    model = coulomb
    friction_coefficient = 0.0
    formulation = penalty
    normalize_penalty = true
    tangential_tolerance = 1e-3
    penalty = 1e+9
  [../]
[]
[Dampers]
  [./contact_slip]
    type = ContactSlipDamper
    primary = '2'
    secondary = '3'
  [../]
[]
(modules/contact/examples/3d_berkovich/indenter_berkovich_friction.i)
[Mesh]
  file = indenter.e
[]
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
  volumetric_locking_correction = true
  order = FIRST
  family = LAGRANGE
[]
[Variables]
  [./disp_x]
  [../]
  [./disp_y]
  [../]
  [./disp_z]
  [../]
[]
[AuxVariables]
  [./saved_x]
  [../]
  [./saved_y]
  [../]
  [./saved_z]
  [../]
[]
[AuxKernels]
[]
[Functions]
  [./push_down]
    type = ParsedFunction
    expression = 'if(t < 1.5, -t, t-3.0)'
  [../]
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    add_variables = true
    strain = FINITE
    block = '1 2'
    use_automatic_differentiation = false
    generate_output = 'stress_xx stress_xy stress_xz stress_yy stress_zz'
    save_in = 'saved_x saved_y saved_z'
    use_finite_deform_jacobian = true
  [../]
[]
[BCs]
  [./botz]
    type = DirichletBC
    variable = disp_z
    boundary = 101
    value = 0.0
  [../]
  [./boty]
    type = DirichletBC
    variable = disp_y
    boundary = 101
    value = 0.0
  [../]
  [./botx]
    type = DirichletBC
    variable = disp_x
    boundary = 101
    value = 0.0
  [../]
  [./boty111]
    type = DirichletBC
    variable = disp_y
    boundary = 111
    value = 0.0
  [../]
  [./botx111]
    type = DirichletBC
    variable = disp_x
    boundary = 111
    value = 0.0
  [../]
  [./topz]
    type = FunctionDirichletBC
    variable = disp_z
    boundary = '201'
    function = push_down
  [../]
  [./topy]
    type = DirichletBC
    variable = disp_y
    boundary = 201
    value = 0.0
  [../]
  [./topx]
    type = DirichletBC
    variable = disp_x
    boundary = 201
    value = 0.0
  [../]
[]
[UserObjects]
  [./slip_rate_gss]
    type = CrystalPlasticitySlipRateGSS
    variable_size = 48
    slip_sys_file_name = input_slip_sys_bcc48.txt
    num_slip_sys_flowrate_props = 2
    flowprops = '1 48 0.0001 0.01'
    uo_state_var_name = state_var_gss
    slip_incr_tol = 10.0
    block = 1
  [../]
  [./slip_resistance_gss]
    type = CrystalPlasticitySlipResistanceGSS
    variable_size = 48
    uo_state_var_name = state_var_gss
    block = 1
  [../]
  [./state_var_gss]
    type = CrystalPlasticityStateVariable
    variable_size = 48
    groups = '0 24 48'
    group_values = '900 1000' #120
    uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
    scale_factor = 1.0
    block = 1
  [../]
  [./state_var_evol_rate_comp_gss]
    type = CrystalPlasticityStateVarRateComponentGSS
    variable_size = 48
    hprops = '1.4 1000 1200 2.5'
    uo_slip_rate_name = slip_rate_gss
    uo_state_var_name = state_var_gss
    block = 1
  [../]
[]
[Materials]
  [./crysp]
    type = FiniteStrainUObasedCP
    block = 1
    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'
    maximum_substep_iteration = 25
  [../]
  [./elasticity_tensor]
    type = ComputeElasticityTensorCP
    block = 1
    C_ijkl = '265190 113650 113650 265190 113650 265190 75769 75769 75760'
    fill_method = symmetric9
  [../]
  [./elasticity_tensor_indenter]
    type = ComputeIsotropicElasticityTensor
    youngs_modulus = 1000000.0
    poissons_ratio = 0.3
    block = 2
  [../]
  [./stress_indenter]
    type = ComputeFiniteStrainElasticStress
    block = 2
  [../]
[]
[Postprocessors]
  [./stress_zz]
    type = ElementAverageValue
    variable = stress_zz
    block = 1
  [../]
  [./resid_z]
    type = NodalSum
    variable = saved_z
    boundary = 201
  [../]
  [./disp_z]
    type = NodalExtremeValue
    variable = disp_z
    boundary = 201
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = 'lu    superlu_dist'
  line_search = 'none'
  l_max_its = 60
  nl_max_its = 50
  dt = 0.004
  dtmin = 0.00001
  end_time = 1.8
  nl_rel_tol = 1e-8
  nl_abs_tol = 1e-6 # 6 if no friction
  l_tol = 1e-3
  automatic_scaling = true
[]
[Outputs]
  [./my_checkpoint]
    type = Checkpoint
    time_step_interval = 50
  [../]
  exodus = true
  csv = true
  print_linear_residuals = true
  print_perf_log = true
  [./console]
    type = Console
    max_rows = 5
  [../]
[]
[Preconditioning]
  [./smp]
    type = SMP
    full = true
  [../]
[]
[Dampers]
  [./contact_slip]
    type = ContactSlipDamper
    primary = '202'
    secondary = '102'
  [../]
[]
[Contact]
  [./ind_base]
    primary = 202
    secondary = 102
    model = coulomb
    friction_coefficient = 0.4
    normalize_penalty = true
    formulation = tangential_penalty
    penalty = 1e7
    capture_tolerance = 0.0001
  [../]
[]
(modules/contact/test/tests/frictional/sliding_elastic_blocks_2d/sliding_elastic_blocks_2d_tp.i)
[Mesh]
  file = sliding_elastic_blocks_2d.e
[]
[GlobalParams]
  volumetric_locking_correction = false
  displacements = 'disp_x disp_y'
[]
[AuxVariables]
  [./penetration]
  [../]
  [./saved_x]
  [../]
  [./saved_y]
  [../]
  [./diag_saved_x]
  [../]
  [./diag_saved_y]
  [../]
  [./inc_slip_x]
  [../]
  [./inc_slip_y]
  [../]
  [./accum_slip_x]
  [../]
  [./accum_slip_y]
  [../]
  [./accum_slip]
  [../]
  [./tang_force_x]
  [../]
  [./tang_force_y]
  [../]
[]
[Functions]
  [./vertical_movement]
    type = ParsedFunction
    expression = -t
  [../]
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    add_variables = true
    strain = FINITE
    save_in = 'saved_x saved_y'
    diag_save_in = 'diag_saved_x diag_saved_y'
  [../]
[]
[AuxKernels]
  [./inc_slip_x]
    type = PenetrationAux
    variable = inc_slip_x
    quantity = incremental_slip_x
    boundary = 3
    paired_boundary = 2
  [../]
  [./inc_slip_y]
    type = PenetrationAux
    variable = inc_slip_y
    quantity = incremental_slip_y
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip]
    type = PenetrationAux
    variable = accum_slip
    execute_on = timestep_end
    quantity = accumulated_slip
    boundary = 3
    paired_boundary = 2
  [../]
  [./tangential_force_x]
    type = PenetrationAux
    variable = tang_force_x
    execute_on = timestep_end
    quantity = tangential_force_x
    boundary = 3
    paired_boundary = 2
  [../]
  [./tangential_force_y]
    type = PenetrationAux
    variable = tang_force_y
    execute_on = timestep_end
    quantity = tangential_force_y
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip_x]
    type = AccumulateAux
    variable = accum_slip_x
    accumulate_from_variable = inc_slip_x
    execute_on = timestep_end
  [../]
  [./accum_slip_y]
    type = AccumulateAux
    variable = accum_slip_y
    accumulate_from_variable = inc_slip_y
    execute_on = timestep_end
  [../]
  [./penetration]
    type = PenetrationAux
    variable = penetration
    boundary = 3
    paired_boundary = 2
  [../]
[]
[Postprocessors]
  [./bot_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 1
  [../]
  [./bot_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 1
  [../]
  [./top_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 4
  [../]
  [./top_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 4
  [../]
  [./ref_resid_x]
    type = NodalL2Norm
    execute_on = timestep_end
    variable = saved_x
  [../]
  [./ref_resid_y]
    type = NodalL2Norm
    execute_on = timestep_end
    variable = saved_y
  [../]
[]
[BCs]
  [./left_x]
    type = DirichletBC
    variable = disp_x
    boundary = 1
    value = 0.0
  [../]
  [./left_y]
    type = DirichletBC
    variable = disp_y
    boundary = 1
    value = 0.0
  [../]
  [./right_x]
    type = DirichletBC
    variable = disp_x
    boundary = 4
    value = -0.005
  [../]
  [./right_y]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = 4
    function = vertical_movement
  [../]
[]
[Materials]
  [./left]
    type = ComputeIsotropicElasticityTensor
    block = '1'
    youngs_modulus = 1.0e7
    poissons_ratio = 0.3
  [../]
  [./right]
    type = ComputeIsotropicElasticityTensor
    block = '2'
    youngs_modulus = 1.0e6
    poissons_ratio = 0.3
  [../]
  [./stress]
    type = ComputeFiniteStrainElasticStress
    block = '1 2'
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = 'lu     superlu_dist'
  line_search = 'none'
  l_max_its = 100
  nl_max_its = 1000
  dt = 0.01
  end_time = 0.05
  num_steps = 1000
  nl_rel_tol = 1e-16
  nl_abs_tol = 1e-09
  dtmin = 0.01
  l_tol = 1e-3
  [./Predictor]
    type = SimplePredictor
    scale = 1.0
  [../]
[]
[Outputs]
  print_linear_residuals = true
  perf_graph = true
  [./out]
    type = Exodus
    elemental_as_nodal = true
  [../]
  [./console]
    type = Console
    max_rows = 5
  [../]
[]
[Contact]
  [./leftright]
    secondary = 3
    primary = 2
    model = coulomb
    formulation = tangential_penalty
    friction_coefficient = '0.25'
    penalty = 1e6
  [../]
[]
[Dampers]
  [./contact_slip]
    type = ContactSlipDamper
    secondary = 3
    primary = 2
  [../]
[]
(modules/contact/test/tests/frictional/single_point_2d/single_point_2d_tp.i)
[Mesh]
  file = single_point_2d.e
[]
[GlobalParams]
  volumetric_locking_correction = false
  displacements = 'disp_x disp_y'
[]
[AuxVariables]
  [./penetration]
  [../]
  [./saved_x]
  [../]
  [./saved_y]
  [../]
  [./diag_saved_x]
  [../]
  [./diag_saved_y]
  [../]
  [./inc_slip_x]
  [../]
  [./inc_slip_y]
  [../]
  [./accum_slip_x]
  [../]
  [./accum_slip_y]
  [../]
[]
[Functions]
  [./horizontal_movement]
    type = ParsedFunction
    expression = t
  [../]
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    add_variables = true
    strain = FINITE
    save_in = 'saved_x saved_y'
    diag_save_in = 'diag_saved_x diag_saved_y'
  [../]
[]
[AuxKernels]
  [./incslip_x]
    type = PenetrationAux
    variable = inc_slip_x
    quantity = incremental_slip_x
    boundary = 3
    paired_boundary = 2
  [../]
  [./incslip_y]
    type = PenetrationAux
    variable = inc_slip_y
    quantity = incremental_slip_y
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip_x]
    type = AccumulateAux
    variable = accum_slip_x
    accumulate_from_variable = inc_slip_x
    execute_on = timestep_end
  [../]
  [./accum_slip_y]
    type = AccumulateAux
    variable = accum_slip_y
    accumulate_from_variable = inc_slip_y
    execute_on = timestep_end
  [../]
  [./penetration]
    type = PenetrationAux
    variable = penetration
    boundary = 3
    paired_boundary = 2
  [../]
[]
[BCs]
  [./botx]
    type = DirichletBC
    variable = disp_x
    boundary = 1
    value = 0.0
  [../]
  [./boty]
    type = DirichletBC
    variable = disp_y
    boundary = 1
    value = 0.0
  [../]
  [./botx2]
    type = DirichletBC
    variable = disp_x
    boundary = 2
    value = 0.0
  [../]
  [./boty2]
    type = DirichletBC
    variable = disp_y
    boundary = 2
    value = 0.0
  [../]
  [./topx]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = 4
    function = horizontal_movement
  [../]
  [./topy]
    type = DirichletBC
    variable = disp_y
    boundary = 4
    value = -0.005
  [../]
[]
[Materials]
  [./bottom]
    type = ComputeIsotropicElasticityTensor
    block = '1'
    youngs_modulus = 1.0e9
    poissons_ratio = 0.3
  [../]
  [./stress]
    type = ComputeFiniteStrainElasticStress
    block = '1 2'
  [../]
  [./top]
    type = ComputeIsotropicElasticityTensor
    block = '2'
    youngs_modulus = 1.0e6
    poissons_ratio = 0.3
  [../]
[]
[Postprocessors]
  [./bot_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 1
  [../]
  [./bot_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 1
  [../]
  [./top_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 4
  [../]
  [./top_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 4
  [../]
  [./ref_resid_x]
    type = NodalL2Norm
    execute_on = timestep_end
    variable = saved_x
  [../]
  [./ref_resid_y]
    type = NodalL2Norm
    execute_on = timestep_end
    variable = saved_y
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = 'lu    superlu_dist'
  line_search = 'none'
  l_max_its = 100
  nl_max_its = 200
  dt = 0.001
  end_time = 0.01
  num_steps = 1000
  nl_rel_tol = 1e-08
  nl_abs_tol = 1e-08
  dtmin = 0.001
  l_tol = 1e-3
[]
[Outputs]
  exodus = true
  print_linear_residuals = true
  perf_graph = true
  [./console]
    type = Console
    max_rows = 5
  [../]
[]
[Contact]
  [./leftright]
    primary = 2
    secondary = 3
    model = coulomb
    friction_coefficient = '0.25'
    formulation = tangential_penalty
    penalty = 1e10
  [../]
[]
[Dampers]
  [./contact_slip]
    type = ContactSlipDamper
    primary = '2'
    secondary = '3'
  [../]
[]
(modules/contact/test/tests/frictional/single_point_2d/single_point_2d.i)
[Mesh]
  file = single_point_2d.e
[]
[GlobalParams]
  volumetric_locking_correction = false
  displacements = 'disp_x disp_y'
[]
[AuxVariables]
  [./penetration]
  [../]
  [./saved_x]
  [../]
  [./saved_y]
  [../]
  [./diag_saved_x]
  [../]
  [./diag_saved_y]
  [../]
  [./inc_slip_x]
  [../]
  [./inc_slip_y]
  [../]
  [./accum_slip_x]
  [../]
  [./accum_slip_y]
  [../]
[]
[Functions]
  [./horizontal_movement]
    type = ParsedFunction
    expression = t
  [../]
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    add_variables = true
    strain = FINITE
    save_in = 'saved_x saved_y'
    diag_save_in = 'diag_saved_x diag_saved_y'
  [../]
[]
[AuxKernels]
  [./incslip_x]
    type = PenetrationAux
    variable = inc_slip_x
    quantity = incremental_slip_x
    boundary = 3
    paired_boundary = 2
  [../]
  [./incslip_y]
    type = PenetrationAux
    variable = inc_slip_y
    quantity = incremental_slip_y
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip_x]
    type = AccumulateAux
    variable = accum_slip_x
    accumulate_from_variable = inc_slip_x
    execute_on = timestep_end
  [../]
  [./accum_slip_y]
    type = AccumulateAux
    variable = accum_slip_y
    accumulate_from_variable = inc_slip_y
    execute_on = timestep_end
  [../]
  [./penetration]
    type = PenetrationAux
    variable = penetration
    boundary = 3
    paired_boundary = 2
  [../]
[]
[BCs]
  [./botx]
    type = DirichletBC
    variable = disp_x
    boundary = 1
    value = 0.0
  [../]
  [./boty]
    type = DirichletBC
    variable = disp_y
    boundary = 1
    value = 0.0
  [../]
  [./botx2]
    type = DirichletBC
    variable = disp_x
    boundary = 2
    value = 0.0
  [../]
  [./boty2]
    type = DirichletBC
    variable = disp_y
    boundary = 2
    value = 0.0
  [../]
  [./topx]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = 4
    function = horizontal_movement
  [../]
  [./topy]
    type = DirichletBC
    variable = disp_y
    boundary = 4
    value = -0.005
  [../]
[]
[Materials]
  [./bottom]
    type = ComputeIsotropicElasticityTensor
    block = '1'
    youngs_modulus = 1.0e9
    poissons_ratio = 0.3
  [../]
  [./top]
    type = ComputeIsotropicElasticityTensor
    block = '2'
    youngs_modulus = 1.0e6
    poissons_ratio = 0.3
  [../]
  [./stress]
    type = ComputeFiniteStrainElasticStress
    block = '1 2'
  [../]
[]
[Postprocessors]
  [./bot_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 1
  [../]
  [./bot_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 1
  [../]
  [./top_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 4
  [../]
  [./top_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 4
  [../]
  [./ref_resid_x]
    type = NodalL2Norm
    execute_on = timestep_end
    variable = saved_x
  [../]
  [./ref_resid_y]
    type = NodalL2Norm
    execute_on = timestep_end
    variable = saved_y
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = 'lu    superlu_dist'
  petsc_options = '-mat_superlu_dist_iterrefine -mat_superlu_dist_replacetinypivot'
  line_search = 'none'
  l_max_its = 100
  nl_max_its = 200
  dt = 0.001
  end_time = 0.01
  num_steps = 1000
  nl_rel_tol = 1e-8
  nl_abs_tol = 1e-8
  dtmin = 0.001
  l_tol = 1e-3
[]
[Outputs]
  exodus = true
  print_linear_residuals = true
  perf_graph = true
  [./console]
    type = Console
    max_rows = 5
  [../]
[]
[Contact]
  [./leftright]
    primary = 2
    secondary = 3
    model = coulomb
    friction_coefficient = '0.25'
  [../]
[]
[Dampers]
  [./contact_slip]
    type = ContactSlipDamper
    primary = '2'
    secondary = '3'
  [../]
[]
(modules/combined/test/tests/break_mesh_interface_contact/break_mesh_interface_contact.i)
[GlobalParams]
  order = FIRST
  family = LAGRANGE
  displacements = 'disp_x disp_y'
  volumetric_locking_correction = true
[]
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    nx = 5
    ny = 5
    dim = 2
  []
  [block1]
    type = SubdomainBoundingBoxGenerator
    block_id = 1
    bottom_left = '0 0 0'
    top_right = '0.5 1 0'
    input = gen
  []
  [block2]
    type = SubdomainBoundingBoxGenerator
    block_id = 2
    bottom_left = '0.5 0 0'
    top_right = '1 1 0'
    input = block1
  []
  [breakmesh]
    input = block2
    type = BreakMeshByBlockGenerator
    block_pairs = '1 2'
    split_interface = true
    add_interface_on_two_sides = true
  []
[]
[Variables]
  [temperature]
  []
  [disp_x]
  []
  [disp_y]
  []
[]
[Kernels]
  [thermal_cond]
    type = HeatConduction
    variable = temperature
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  generate_output = 'stress_xx stress_yy strain_xx strain_yy'
  add_variables = true
  strain = FINITE
  incremental = true
  [block1]
    block = 1
  []
  [block2]
    block = 2
  []
[]
[ThermalContact]
  [thermal_contact]
    type = GapHeatTransfer
    variable = temperature
    primary = Block1_Block2
    secondary = Block2_Block1
    emissivity_primary = 0
    emissivity_secondary = 0
    quadrature = true
    gap_conductivity = 1
  []
[]
[Contact]
  [mechanical]
    primary = Block1_Block2
    secondary = Block2_Block1
    penalty = 1000
    model = coulomb
    friction_coefficient = 0.5
    formulation = tangential_penalty
    tangential_tolerance = 0.1
  []
[]
[BCs]
  [left_temp]
    type = DirichletBC
    value = 100
    variable = temperature
    boundary = left
  []
  [right_temp]
    type = DirichletBC
    value = 0
    variable = temperature
    boundary = right
  []
  [left_disp_x]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = left
    function = 0
  []
  [left_disp_y]
    type = DirichletBC
    variable = disp_y
    boundary = left
    value = 0.0
  []
  [right_disp_x]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = right
    function = '-t'
  []
  [right_disp_y]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = right
    function = '0'
  []
[]
[Materials]
  [thermal_cond]
    type = GenericConstantMaterial
    prop_names = 'thermal_conductivity'
    prop_values = 1
  []
  [elasticity_tensor]
    type = ComputeIsotropicElasticityTensor
    poissons_ratio = 0.3
    youngs_modulus = 100
  []
  [stress]
    type = ComputeFiniteStrainElasticStress
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Dampers]
  [contact_slip]
    type = ContactSlipDamper
    secondary = Block1_Block2
    primary = Block2_Block1
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = 'lu mumps'
  line_search = none
  nl_rel_tol = 1e-9
  nl_abs_tol = 1e-9
  l_tol = 1e-4
  l_max_its = 50
  nl_max_its = 20
  start_time = 0.0
  num_steps = 2
  dtmin = 1e-8
  dt = 1e-2
  automatic_scaling = true
[]
[Outputs]
  print_linear_residuals = false
  time_step_interval = 1
  csv = false
  perf_graph = false
  exodus = true
[]
(modules/contact/test/tests/hertz_spherical/hertz_contact_hex20.i)
# Hertz Contact: Sphere on sphere
# Spheres have the same radius, Young's modulus, and Poisson's ratio.
# Define E:
# 1/E = (1-nu1^2)/E1 + (1-nu2^2)/E2
#
# Effective radius R:
# 1/R = 1/R1 + 1/R2
#
# F is the applied compressive load.
#
# Area of contact a::
# a^3 = 3FR/4E
#
# Depth of indentation d:
# d = a^2/R
#
#
# Let R1 = R2 = 2.  Then R = 1.
#
# Let nu1 = nu2 = 0.25, E1 = E2 = 1.40625e7.  Then E = 7.5e6.
#
# Let F = 10000.  Then a = 0.1, d = 0.01.
#
[GlobalParams]
  volumetric_locking_correction = false
  displacements = 'disp_x disp_y disp_z'
  order = SECOND
[]
[Mesh]#Comment
  file = hertz_contact_hex20.e
  allow_renumbering = false
[] # Mesh
[Problem]
  type = ReferenceResidualProblem
  extra_tag_vectors = 'ref'
  reference_vector = 'ref'
[]
[Functions]
  [./pressure]
    type = PiecewiseLinear
    x = '0. 1. 2.'
    y = '0. 1. 1.'
    scale_factor = 795.77471545947674 # 10000/pi/2^2
  [../]
  [./disp_y]
    type = PiecewiseLinear
    x = '0.  1.    2.'
    y = '0. -0.01 -0.01'
  [../]
[] # Functions
[Variables]
  [./disp_x]
    order = SECOND
    family = LAGRANGE
  [../]
  [./disp_y]
    order = SECOND
    family = LAGRANGE
  [../]
  [./disp_z]
    order = SECOND
    family = LAGRANGE
  [../]
[] # Variables
[AuxVariables]
  [./stress_xx]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stress_yy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stress_zz]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stress_xy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stress_yz]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./stress_zx]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./vonmises]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./hydrostatic]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./saved_x]
  [../]
  [./saved_y]
  [../]
  [./saved_z]
  [../]
[] # AuxVariables
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    add_variables = true
    strain = SMALL
    extra_vector_tags = 'ref'
    save_in = 'saved_x saved_y saved_z'
  [../]
[]
[AuxKernels]
  [./stress_xx]
    type = RankTwoAux
    rank_two_tensor = stress
    index_i = 0
    index_j = 0
    variable = stress_xx
  [../]
  [./stress_yy]
    type = RankTwoAux
    rank_two_tensor = stress
    index_i = 1
    index_j = 1
    variable = stress_yy
  [../]
  [./stress_zz]
    type = RankTwoAux
    rank_two_tensor = stress
    index_i = 2
    index_j = 2
    variable = stress_zz
  [../]
  [./stress_xy]
    type = RankTwoAux
    rank_two_tensor = stress
    index_i = 0
    index_j = 1
    variable = stress_xy
  [../]
  [./stress_yz]
    type = RankTwoAux
    rank_two_tensor = stress
    index_i = 1
    index_j = 2
    variable = stress_yz
  [../]
  [./stress_zx]
    type = RankTwoAux
    rank_two_tensor = stress
    index_i = 2
    index_j = 0
    variable = stress_zx
  [../]
#  [./vonmises]
#    type = RankTwoScalarAux
#    rank_two_tensor = stress
#    variable = vonmises
#    scalar_type = VonMisesStress
#  [../]
[] # AuxKernels
[BCs]
  [./base_x]
    type = DirichletBC
    variable = disp_x
    boundary = 1000
    value = 0.0
  [../]
  [./base_y]
    type = DirichletBC
    variable = disp_y
    boundary = 1000
    value = 0.0
  [../]
  [./base_z]
    type = DirichletBC
    variable = disp_z
    boundary = 1000
    value = 0.0
  [../]
  [./symm_x]
    type = DirichletBC
    variable = disp_x
    boundary = 1
    value = 0.0
  [../]
  [./symm_z]
    type = DirichletBC
    variable = disp_z
    boundary = 3
    value = 0.0
  [../]
  [./disp_y]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = 2
    function = disp_y
  [../]
[] # BCs
[Contact]
  [./dummy_name]
    primary = 1000
    secondary = 100
    normalize_penalty = true
    tangential_tolerance = 1e-3
    penalty = 1e+10
  [../]
[]
#[Dampers]
#  [./contact_slip]
#    type = ContactSlipDamper
#    primary = 1000
#    secondary = 100
#  [../]
#[]
[Materials]
  [./tensor]
    type = ComputeIsotropicElasticityTensor
    block = '1'
    youngs_modulus = 1.40625e7
    poissons_ratio = 0.25
  [../]
  [./stress]
    type = ComputeLinearElasticStress
    block = '1'
  [../]
  [./tensor_1000]
    type = ComputeIsotropicElasticityTensor
    block = '1000'
    youngs_modulus = 1e6
    poissons_ratio = 0.0
  [../]
  [./stress_1000]
    type = ComputeLinearElasticStress
    block = '1000'
  [../]
[] # Materials
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = 'lu     superlu_dist'
  line_search = 'none'
  nl_abs_tol = 1e-7
  l_max_its = 10
  start_time = 0.0
  dt = 0.05
  end_time = 2.0
  [./Quadrature]
    order = THIRD
  [../]
[] # Executioner
[Postprocessors]
  [./maxdisp]
    type = NodalVariableValue
    nodeid = 386 # 387-1 where 387 is the exodus node number of the top-center node
    variable = disp_y
  [../]
  [./bot_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 2
  [../]
  [./bot_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 2
  [../]
  [./bot_react_z]
    type = NodalSum
    variable = saved_z
    boundary = 2
  [../]
[]
[Outputs]
  [./out]
    type = Exodus
    elemental_as_nodal = true
  [../]
[] # Outputs
(modules/contact/examples/2d_indenter/indenter_rz_nodeface_friction.i)
[GlobalParams]
  volumetric_locking_correction = true
  displacements = 'disp_x disp_y'
[]
[Problem]
  type = ReferenceResidualProblem
  reference_vector = 'ref'
  extra_tag_vectors = 'ref'
[]
[Mesh]#Comment
  file = indenter_rz_fine.e
  displacements = 'disp_x disp_y'
  # For NodalVariableValue to work with distributed mesh
  allow_renumbering = false
  coord_type = RZ
[] # Mesh
[Functions]
  [./disp_y]
    type = PiecewiseLinear
    x = '0.  1.0     1.8    2.   3.0'
    y = '0.  -4.5   -5.4   -5.4  -4.0'
  [../]
[] # Functions
[Variables]
  [./disp_x]
    order = FIRST
    family = LAGRANGE
  [../]
  [./disp_y]
    order = FIRST
    family = LAGRANGE
  [../]
[] # Variables
[AuxVariables]
  [saved_x]
  []
  [saved_y]
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    add_variables = true
    strain = FINITE
    block = '1 2'
    use_automatic_differentiation = false
    generate_output = 'stress_xx stress_xy stress_xz stress_yy stress_zz'
    save_in = 'saved_x saved_y'
  [../]
[]
[AuxKernels]
[] # AuxKernels
[BCs]
# Symmetries of the Problem
[./symm_x_indenter]
  type = DirichletBC
  variable = disp_x
  boundary = 5
  value = 0.0
[../]
[./symm_x_material]
  type = DirichletBC
  variable = disp_x
  boundary = 9
  value = 0.0
[../]
# Material should not fly away
[./material_base_y]
  type = DirichletBC
  variable = disp_y
  boundary = 8
  value = 0.0
[../]
# Drive indenter motion
[./disp_y]
  type = FunctionDirichletBC
  variable = disp_y
  boundary = 1
  function = disp_y
[../]
[] # BCs
[Contact]
  [./dummy_name]
    primary = 6
    secondary = 4
    model = coulomb
    formulation = penalty
    normalize_penalty = true
    friction_coefficient = 0.5
    penalty = 8e6
    tangential_tolerance = 0.005
  [../]
[]
[Dampers]
  [./contact_slip]
    type = ContactSlipDamper
    secondary = 4
    primary = 6
  [../]
[]
[Materials]
  [./tensor]
    type = ComputeIsotropicElasticityTensor
    block = '1'
    youngs_modulus = 1.0e7
    poissons_ratio = 0.25
  [../]
  [./stress]
    type = ComputeFiniteStrainElasticStress
    block = '1'
  [../]
  [./tensor_2]
    type = ComputeIsotropicElasticityTensor
    block = '2'
    youngs_modulus = 1e6
    poissons_ratio = 0.0
  [../]
  [./power_law_hardening]
    type = IsotropicPowerLawHardeningStressUpdate
    strength_coefficient = 1e5 #K
    strain_hardening_exponent = 0.5 #n
    block = '2'
  [../]
  [./radial_return_stress]
    type = ComputeMultipleInelasticStress
    inelastic_models = 'power_law_hardening'
    tangent_operator = elastic
    block = '2'
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options = '-snes_ksp_ew'
  petsc_options_iname = '-pc_type -snes_linesearch_type -pc_factor_shift_type -pc_factor_shift_amount'
  petsc_options_value = 'lu       basic                 NONZERO               1e-15'
  line_search = 'none'
  automatic_scaling = true
  nl_abs_tol = 1.5e-07
  nl_rel_tol = 1.5e-07
  l_max_its = 40
  start_time = 0.0
  dt = 0.025
  end_time = 3.0
[]
[Postprocessors]
  [./maxdisp]
    type = NodalVariableValue
    nodeid = 39 # 40-1 where 40 is the exodus node number
    variable = disp_y
  [../]
  [resid_y]
    type = NodalSum
    variable = saved_y
    boundary = 1
  []
[]
[Outputs]
  [./out]
    type = Exodus
    elemental_as_nodal = true
  [../]
  perf_graph = true
  csv = true
[]
(modules/contact/test/tests/frictional/sliding_elastic_blocks_2d/sliding_elastic_blocks_2d.i)
[Mesh]
  file = sliding_elastic_blocks_2d.e
[]
[GlobalParams]
  volumetric_locking_correction = false
  displacements = 'disp_x disp_y'
[]
[AuxVariables]
  [./penetration]
  [../]
  [./saved_x]
  [../]
  [./saved_y]
  [../]
  [./diag_saved_x]
  [../]
  [./diag_saved_y]
  [../]
  [./inc_slip_x]
  [../]
  [./inc_slip_y]
  [../]
  [./accum_slip_x]
  [../]
  [./accum_slip_y]
  [../]
  [./accum_slip]
  [../]
  [./tang_force_x]
  [../]
  [./tang_force_y]
  [../]
[]
[Functions]
  [./vertical_movement]
    type = ParsedFunction
    expression = -t
  [../]
[]
[Physics/SolidMechanics/QuasiStatic]
  [./all]
    add_variables = true
    strain = FINITE
    save_in = 'saved_x saved_y'
    diag_save_in = 'diag_saved_x diag_saved_y'
  [../]
[]
[AuxKernels]
  [./inc_slip_x]
    type = PenetrationAux
    variable = inc_slip_x
    quantity = incremental_slip_x
    boundary = 3
    paired_boundary = 2
  [../]
  [./inc_slip_y]
    type = PenetrationAux
    variable = inc_slip_y
    quantity = incremental_slip_y
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip]
    type = PenetrationAux
    variable = accum_slip
    execute_on = timestep_end
    quantity = accumulated_slip
    boundary = 3
    paired_boundary = 2
  [../]
  [./tangential_force_x]
    type = PenetrationAux
    variable = tang_force_x
    execute_on = timestep_end
    quantity = tangential_force_x
    boundary = 3
    paired_boundary = 2
  [../]
  [./tangential_force_y]
    type = PenetrationAux
    variable = tang_force_y
    execute_on = timestep_end
    quantity = tangential_force_y
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip_x]
    type = AccumulateAux
    variable = accum_slip_x
    accumulate_from_variable = inc_slip_x
    execute_on = timestep_end
  [../]
  [./accum_slip_y]
    type = AccumulateAux
    variable = accum_slip_y
    accumulate_from_variable = inc_slip_y
    execute_on = timestep_end
  [../]
  [./penetration]
    type = PenetrationAux
    variable = penetration
    boundary = 3
    paired_boundary = 2
  [../]
[]
[Postprocessors]
  [./bot_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 1
  [../]
  [./bot_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 1
  [../]
  [./top_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 4
  [../]
  [./top_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 4
  [../]
  [./ref_resid_x]
    type = NodalL2Norm
    execute_on = timestep_end
    variable = saved_x
  [../]
  [./ref_resid_y]
    type = NodalL2Norm
    execute_on = timestep_end
    variable = saved_y
  [../]
[]
[BCs]
  [./left_x]
    type = DirichletBC
    variable = disp_x
    boundary = 1
    value = 0.0
  [../]
  [./left_y]
    type = DirichletBC
    variable = disp_y
    boundary = 1
    value = 0.0
  [../]
  [./right_x]
    type = DirichletBC
    variable = disp_x
    boundary = 4
    value = -0.005
  [../]
  [./right_y]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = 4
    function = vertical_movement
  [../]
[]
[Materials]
  [./left]
    type = ComputeIsotropicElasticityTensor
    block = '1'
    youngs_modulus = 1.0e7
    poissons_ratio = 0.3
  [../]
  [./right]
    type = ComputeIsotropicElasticityTensor
    block = '2'
    youngs_modulus = 1.0e6
    poissons_ratio = 0.3
  [../]
  [./stress]
    type = ComputeFiniteStrainElasticStress
    block = '1 2'
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = 'lu     superlu_dist'
  line_search = 'none'
  l_max_its = 100
  nl_max_its = 1000
  dt = 0.01
  end_time = 0.05
  num_steps = 1000
  nl_rel_tol = 1e-16
  nl_abs_tol = 1e-09
  dtmin = 0.01
  l_tol = 1e-3
  [./Predictor]
    type = SimplePredictor
    scale = 1.0
  [../]
[]
[Outputs]
  file_base = sliding_elastic_blocks_2d_out
  print_linear_residuals = true
  perf_graph = true
  [./exodus]
    type = Exodus
    elemental_as_nodal = true
  [../]
  [./console]
    type = Console
    max_rows = 5
  [../]
[]
[Contact]
  [./leftright]
    secondary = 3
    primary = 2
    model = coulomb
    friction_coefficient = '0.25'
    penalty = 1e6
  [../]
[]
[Dampers]
  [./contact_slip]
    type = ContactSlipDamper
    secondary = 3
    primary = 2
  [../]
[]
(modules/contact/test/tests/verification/patch_tests/single_pnt_2d/single_point_2d_frictional.i)
[GlobalParams]
  volumetric_locking_correction = true
  displacements = 'disp_x disp_y'
[]
[Mesh]
  file = single_point_2d.e
[]
[Variables]
  [./disp_x]
  [../]
  [./disp_y]
  [../]
[]
[AuxVariables]
  [./penetration]
  [../]
  [./saved_x]
  [../]
  [./saved_y]
  [../]
  [./diag_saved_x]
  [../]
  [./diag_saved_y]
  [../]
  [./inc_slip_x]
  [../]
  [./inc_slip_y]
  [../]
  [./accum_slip_x]
  [../]
  [./accum_slip_y]
  [../]
[]
[Functions]
  [./appl_disp]
    type = PiecewiseLinear
    x = '0 0.001  0.101'
    y = '0 0.0   -0.10'
  [../]
[]
[Kernels]
  [./TensorMechanics]
    use_displaced_mesh = true
    save_in = 'saved_x saved_y'
  [../]
[]
[AuxKernels]
  [./incslip_x]
    type = PenetrationAux
    variable = inc_slip_x
    quantity = incremental_slip_x
    boundary = 3
    paired_boundary = 2
  [../]
  [./incslip_y]
    type = PenetrationAux
    variable = inc_slip_y
    quantity = incremental_slip_y
    boundary = 3
    paired_boundary = 2
  [../]
  [./accum_slip_x]
    type = AccumulateAux
    variable = accum_slip_x
    accumulate_from_variable = inc_slip_x
    execute_on = timestep_end
  [../]
  [./accum_slip_y]
    type = AccumulateAux
    variable = accum_slip_y
    accumulate_from_variable = inc_slip_y
    execute_on = timestep_end
  [../]
  [./penetration]
    type = PenetrationAux
    variable = penetration
    boundary = 3
    paired_boundary = 2
  [../]
[]
[BCs]
  [./botx]
    type = DirichletBC
    variable = disp_x
    boundary = 1
    value = 0.0
  [../]
  [./boty]
    type = DirichletBC
    variable = disp_y
    boundary = 1
    value = 0.0
  [../]
  [./topx]
    type = FunctionDirichletBC
    variable = disp_x
    boundary = 4
    function = appl_disp
  [../]
  [./topy]
    type = DirichletBC
    variable = disp_y
    boundary = 4
    value = -0.002001
  [../]
[]
[Materials]
  [./bot_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '1'
    youngs_modulus = 1e9
    poissons_ratio = 0.3
  [../]
  [./bot_strain]
    type = ComputePlaneFiniteStrain
    block = '1'
  [../]
  [./bot_stress]
    type = ComputeFiniteStrainElasticStress
    block = '1'
  [../]
  [./top_elas_tens]
    type = ComputeIsotropicElasticityTensor
    block = '2'
    youngs_modulus = 1e6
    poissons_ratio = 0.3
  [../]
  [./top_strain]
    type = ComputePlaneFiniteStrain
    block = '2'
  [../]
  [./top_stress]
    type = ComputeFiniteStrainElasticStress
    block = '2'
  [../]
[]
[Postprocessors]
  [./bot_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 1
  [../]
  [./bot_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 1
  [../]
  [./top_react_x]
    type = NodalSum
    variable = saved_x
    boundary = 4
  [../]
  [./top_react_y]
    type = NodalSum
    variable = saved_y
    boundary = 4
  [../]
  [./disp_x]
    type = NodalVariableValue
    nodeid = 5
    variable = disp_x
  [../]
  [./disp_y]
    type = NodalVariableValue
    nodeid = 5
    variable = disp_y
  [../]
  [./inc_slip_x]
    type = NodalVariableValue
    nodeid = 5
    variable = inc_slip_x
  [../]
  [./inc_slip_y]
    type = NodalVariableValue
    nodeid = 5
    variable = inc_slip_y
  [../]
  [./accum_slip_x]
    type = NodalVariableValue
    nodeid = 5
    variable = accum_slip_x
  [../]
  [./accum_slip_y]
    type = NodalVariableValue
    nodeid = 5
    variable = accum_slip_y
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = 'lu    superlu_dist'
  line_search = 'none'
  l_max_its = 100
  nl_max_its = 200
  dt = 0.001
  end_time = 0.001
  num_steps = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-8
  dtmin = 0.001
  l_tol = 1e-3
[]
[Outputs]
  file_base = single_point_2d_out_frictional_0_2_kin
  print_linear_residuals = true
  perf_graph = true
  csv = true
  [./console]
    type = Console
    max_rows = 5
  [../]
[]
[Contact]
  [./leftright]
    primary = 2
    secondary = 3
    model = coulomb
    formulation = kinematic
    penalty = 1e12
    normalize_penalty = true
    friction_coefficient = '0.2'
    tangential_tolerance = 1e-3
  [../]
[]
 [Dampers]
   [./contact_slip]
     type = ContactSlipDamper
     primary = '2'
     secondary = '3'
   [../]
 []