Within the MOOSE Framework, eigenstrain is the term given to a strain which does not result directly from an applied force. Eigenstrains are also referred to as residual strains, stress-free strains, or intrinsic strains; translated from German, [Eigen](http://dict.tu-chemnitz.de/deutsch-englisch/Eigen....html) means own or intrinsic in English.  

The term eigenstrain was introduced by [T. Mura in 1982](http://link.springer.com/chapter/10.1007/978-94-011-9306-1_1):

> Eigenstrain is a generic name given to such nonelastic strains as thermal expansion, phase transformation, initial strains, plastic, misfit strains. Eigenstress is a generic name given to self-equilibrated internal stresses caused by one or several of these eigenstrains in bodies which are free from any other external force and surface constraint.  The eigenstress fields are created by the incompatibility of the eigenstrains.  This new English terminology was adapted from the German "Eigenspannungen and Eigenspannungsquellen," which is the title of H. Reissner's paper (1931) on residual stresses.


Because these eigenstrains do cause stresses within a mechanical body, the MOOSE term `stress_free_strain` is being replaced with the term `eigenstrain` for consistency.

Eigenstrains are calculated separately from `mechanical_strains`: elastic, plastic, and creep strains are considered mechanical strains in Tensor Mechanics.  The current base class for eigenstrains, [ComputeStressFreeStrainBase](http://mooseframework.com/docs/doxygen/modules/classComputeStressFreeStrainBase.html).  The base class includes a call to the virtual void function `ComputeQpStressFreeStrain()`; this virtual function must be overwritten in inheriting classes, as shown in the excerpt from the [ComputeThermalExpansionEigenStrain](  ) class.
```C++
void
ComputeThermalExpansionEigenStrain::computeQpStressFreeStrain()
{
  RankTwoTensor thermal_strain;
  thermal_strain.zero();
  Real old_temp = 0.0;

  if (!_has_incremental_strain || _t_step == 1) // total strain form always uses the ref temp
    old_temp = _stress_free_reference_temperature;

  if (_temperature_old)
    old_temp = (* _temperature_old)[_qp];

  thermal_strain.addIa(_thermal_expansion_coeff * (_temperature[_qp] - old_temp));

  _stress_free_strain[_qp] = thermal_strain;
}
```

The eigenstrains, stored currently in the `stress_free_strain` material property, are subtracted from the total strain to calculate the mechanical strain.

$$ \epsilon_{mechanical} = \epsilon_{total} - \epsilon_{eigen}$$

The mechanical strain is passed to the `Compute*Stress` methods to calculate the stress for the current iteration.  [Chapter 3](http://onlinelibrary.wiley.com/doi/10.1002/9780470117835.ch3/pdf) of **Fundamentals of Micromechanics of Solids** describes the relationship between total, elastic, and eigen strains and provides examples with thermal expansion and dislocations.