The MOOSE tensor mechanics module is a library for simplifying the implementation of simulation tools that solve mechanics problems. It provides a simple approach for implementing even advanced mechanics models.

Tensor Mechanics Module vs the Solid Mechanics Module

MOOSE has two mechanics modules: "tensor mechanics" and "solid mechanics". However, we are moving towards combining the two approaches over the next few months. The differences between the two modules are summarized in the following table. 

| Tensor mechanics | Solid mechanics |
| - | - |
| Rank-two tensors are treated as general rank-two tensors | Rank-two tensors are treated as length 6 vectors |
| Elasticity tensor is treated as a rank-four tensor | Elasticity tensor is treated as a 6 by 6 matrix |
| Materials are typically treated as anisotropic | Materials are typically treated as isotropic |
| Used for both mesoscale and macroscale simulations |  Undergoing deprecation; primarily used for macroscale simulations |
| Under development by various MOOSE-users at different institutions | Undergoing deprecation;  primarily under development by the BISON team |

Fundamental Background Material

- [Intro to the Tensor Mechanics Module](PlugAndPlayMechanicsApproach)
- [TUTORIAL: The Basics](

[image:298 align:right]
    The plug-and-play approach used in the Tensor Mechanics Materials requires at least three separate classes to fully describe a simulation

- [Tensor Classes](TensorClasses)
- [Visualizing Tensors](VisualizingTensors)
- [On Line Rank Two Post Processors](vectorpostprocessors)
- [Boundary Conditions](BoundaryConditions)
- [Some identities](Identities)
- [Setting appropriate convergence criteria](ConvergenceCriteria)
- [Stress Divergence settings](StressDivergenceCalculationsWrtDeformedOrUnd)

Options for Computing Strain
- [Small Linearized Total Strain](SmallTotalStrain)
- [Small Incremental Strain](IncrementalStrain)
- [Finite Incremental Strain](FiniteStrain)
- [Eigenstrains (Stress-Free Strains)](Eigenstrains)
- [1D and 2D Symmetric Problems (axisymmetry and spherical symmetry)](LowerOrderGeometryMaterials)

Options for Computing Stress
- [Elasticity](Elasticity)

Plasticity with User Objects
The plasticity models in the Tensor Mechanics module are described in the following sections.  Each is valid for finite strains, and each has [Hardening and Softening](HardSoft):

- [Plasticity and the Return-Map Algorithm](ReturnMap)
- [Plasticity and the Consistent Tangent Operator](CTO)
- [Weak plane tensile: associative](WeakPlaneTensile)
- [Weak plane shear: nonassociative](WeakPlaneShear)
- [Tensile: associative](Tensile)
- [J2: associative](J2)
- [J2 rate-dependent: associative](J2rate)
- [Mohr-Coulomb: nonassociative](MC)
- [Drucker-Prager: nonassociative](DP)
- [Multi-surface](MultiEgs)
- [Crystal Plasticity](CrystalPlasticity)
- [Hyperelastic Viscoplastic](HyperelasticViscoplastic)

It is quite easy to add more UserObject based plasticity models to Tensor Mechanics.  These are added as GeneralUserObjects: see [How to add UserObject plasticity models](AddingPlasticModels).  If desired, a user can then combine the new plasticity model with any other existing plasticity models in a multi-surface simulation without any further work.

Creep and Plasticity with Recompute Materials
In addition to the User Object based plasticity models, another set of plasticity and creep material models have been developed with the [Discrete Material](DiscreteMaterial) class, which allows for iterations within the material itself.  These iterative materials are designated by `Recompute` at the start of the class name.  

The primary development of these Recompute material classes has been in the migration of code capabilities from Solid Mechanics to Tensor Mechanics.  These classes use a Radial Return von Mises, or J2, approach to determine the inelastic (plastic or creep) strain increments at each time step.  The advantage of the recompute materials is the ability to combine multiple inelastic stress calculations, such as creep and plasticity.

- [Recompute Radial Return Mapping Algorithm](RadialReturnAlgorithm)
- Recompute Radial Return Isotropic Plasticity (ideal and power law hardening)([Doxygen](
- Recompute Radial Return Creep ([Doxygen](

- [Dynamics](Dynamics) - Solve dynamic mechanics problems like wave propagation

- [Poro-Mechanics](TensorMechanicsBasics/PoroMechanics)

For examples of how to use TensorMechanics, please see the tensor_mechanics/tests directory.  For instance, tensor_mechanics/tests/mohr_coulomb/uni_axial2.i contains an example of a uniaxial compression test where shear bands form, and this is described in the page [Mohr-Coulomb: nonassociative](MC)