Linear Elastic
Small-strain linear elasticity is the simplest and fastest material model, but has an extremely limited range of validity, requiring both small strains and small rotations of the material. This model is widely used in engineering mechanics, for stress analysis of structural components with microscopically-small deformations (e.g., calculating the failure load of a concrete column). However, in most human-scale manipulation scenarios, such objects are more likely to be modeled by rigid actors or static geometry. This model is not recommended for use outside of artificial benchmarks or highly-constrained scenarios (e.g., a cushion fixed to a static piece of furniture by boundary conditions and subjected only to light loading).
Enum value: SoftMaterialType::LinearElastic
Do not use this model when appreciable rotations or strains are expected. Use Neo-Hookean for general finite-deformation simulation.
Formulation
Let be the displacement gradient. The infinitesimal strain is
which approximates the Green–Lagrange strain only when . The strain energy density is
and the first Piola–Kirchhoff stress is
The constant material tangent is
This tangent is positive semidefinite, so LinearElasticMaterialParams has no material-level psdStrategy field.
The linear-elastic potential cannot be expressed as a function of the nonlinear Green–Lagrange strain, but, motivated by the fact that in the limit of where this model is appropriate, viscoelastic stiffness damping uses the above tangent as .
Parameters
| Parameter | Default | Description |
|---|---|---|
youngsModulus | 100,000 Pa | Stiffness |
poissonRatio | 0.45 | Compressibility |
Interaction With Recentering
By default, soft actors update the rigid local frame in which their displacements are defined, to prevent finite precision effects from polluting the strain. This is benign for most supported materials, since their energy densities are invariant under rigid transformations. However, the LinearElastic potential is not, because the linearized strain may be nonzero for rigid motions (unlike the nonlinear Green–Lagrange strain, which remains exactly zero). Recentering therefore alters the continuous problem being solved in an ad hoc way. To run a pure simulation of classical linear elasticity, disable recentering using Actor::SetRecenteringParams() or set ExperimentalSoftActorParams::useRecentering to false during creation with experimental::CreateSoftActor().