Model::Solid::Linear::Isotropic

src/Model/Solid/Linear/Isotropic.H

This model implements an isotropic linear elastic material. See this link for more information about the theory.

Free energy for a linear material is defined as

\[W(\nabla\mathbf{u}) = \frac{1}{2}\nabla\mathbf{u}\cdot\mathbb{C}\,\nabla\mathbf{u}\]

For an isotropic material, stress and strain are related through

\[\mathbb{C}_{ijkl} = \lambda \delta_{ij}\varepsilon_{kk} + 2\mu\varepsilon_{ij}\]

where \(\lambda\) and \(\mu\) are the Lame constant and shear modulus, respectively. Users can specify these either through (lame and shear) OR (lambda and mu) OR (E and nu).

Class methods:

  1. Isotropic(): Basic constructor. Does nothing, and leaves all values initiated as NAN.

  2. Isotropic(Solid<Set::Sym::Isotropic> base) Basic constructor. Does nothing gut allows for inheritance.

  3. Isotropic(Set::Scalar a_mu, Set::Scalar a_lambda) BAD old-fashioned constructor. Do not use!

  4. ~Isotropic() Simple destructor. Don’t need to change it.

  5. void Define(Set::Scalar a_mu, Set::Scalar a_lambda) BAD old-fashioned way of doing things. Use Parse instead.

  6. Set::Scalar W(const Set::Matrix & gradu) const override Returns elastic free energy density

  7. Set::Matrix DW(const Set::Matrix & gradu) const override Returns first derivative of free energy, the stress tensor

  8. Set::Matrix4<...> DDW(const Set::Matrix & ) const override Returns second derivative of free energy, the modulus tensor

  9. virtual void Print(std::ostream &out) const override Prints the modulus tensor object to output stream (usually the terminal)

  10. static Isotropic Random() Static method that generates a random yet acceptable model.

  11. static Isotropic Zero() Static method that generates a “zero” element (so that there is no effect under addition)

  12. static void Parse(Isotropic & value, IO::ParmParse & pp) Parser where all the IO occurs

\(\phantom{0}\)

lambda / mu / E / nu / kappa
specify exactly 2 conditional

Specify exactly two of: lame constant \(\lambda\), shear modulus \(\mu\), Young's modulus \(E\), Poisson's ratio \(\nu\), bulk modulus \(\kappa\). \(\mu\) and \(\lambda\) are how the final values are stored.

Names by executable 8 executables, 8 uses
alamo-2d-coverage-g++
material.model0.lambda / material.model0.mu / material.model0.E / material.model0.nu / material.model0.kappa
alamo-3d-coverage-g++
material.model0.lambda / material.model0.mu / material.model0.E / material.model0.nu / material.model0.kappa
fracture-2d-coverage-g++
material.model0.lambda / material.model0.mu / material.model0.E / material.model0.nu / material.model0.kappa
fracture-3d-coverage-g++
material.model0.lambda / material.model0.mu / material.model0.E / material.model0.nu / material.model0.kappa
mechanics-2d-coverage-g++
model0.lambda / model0.mu / model0.E / model0.nu / model0.kappa
mechanics-3d-coverage-g++
model0.lambda / model0.mu / model0.E / model0.nu / model0.kappa
topop-2d-coverage-g++
model.lambda / model.mu / model.E / model.nu / model.kappa
topop-3d-coverage-g++
model.lambda / model.mu / model.E / model.nu / model.kappa
planestress
0 1 conditional

Whether or not to use the `plane stress <https://en.wikipedia.org/wiki/Plane_stress>`_ approximation.

Names by executable 8 executables, 8 uses
alamo-2d-coverage-g++
material.model0.planestress
alamo-3d-coverage-g++
material.model0.planestress
fracture-2d-coverage-g++
material.model0.planestress
fracture-3d-coverage-g++
material.model0.planestress
mechanics-2d-coverage-g++
model0.planestress
mechanics-3d-coverage-g++
model0.planestress
topop-2d-coverage-g++
model.planestress
topop-3d-coverage-g++
model.planestress