Isotropic linear elasticity

Overview

This interface represents an isotropic linear elastic model. In Mandel notation the stiffness tensor is

\left[\begin{array}{cccccc}
   C_{1111} & C_{1122} & C_{1122} & 0 & 0 & 0\\
   C_{1122} & C_{1111} & C_{1122} & 0 & 0 & 0\\
   C_{1122} & C_{1122} & C_{1111} & 0 & 0 & 0\\
   0 & 0 & 0 & 2C_{1212} & 0 & 0\\
   0 & 0 & 0 & 0 & 2C_{1212} & 0\\
   0 & 0 & 0 & 0 & 0 & 2C_{1212}
\end{array}\right].

In NEML C_{1111}, C_{1122}, and C_{1212} are determined by two scalar elasticity constants, some combination of the Young’s modulus E, the Poisson’s ratio \nu, the shear modulus \mu, and the bulk modulus:math:K. The input to this interfaces is the temperature T. Internally the object first converts the provide constants to the bulk and shear modulus and then constructs the stiffness tensor as

C_{1111} = \frac{4}{3} G + K

C_{1122} = K - \frac{2}{3} G

C_{1212} = G.

The compliance tensor is the matrix inverse of the stiffness tensor in Mandel notation. However, the implementation uses an analytic formula based on the scalar elastic constants to improve performance. Simple formulas link the bulk and shear moduli to the other scalar elastic constants.

Parameters

The user provides two modulus values m1 and m2 and two strings defining which constants are being provided, m1_type and m2_type. Valid moduli types are "shear", "bulk", "youngs", and "poissons". The implementation checks to ensure the user provides valid moduli types and that they provided two unique moduli. Any combination of two scalar elastic constants fully defines the isotropic elasticity tensor

Class description

class IsotropicLinearElasticModel : public neml::LinearElasticModel

Isotropic shear modulus generating properties from shear and bulk models.

Public Functions

IsotropicLinearElasticModel(ParameterSet &params)

See detailed documentation for how to initialize with elastic constants.

virtual void C(double T, double *const Cv) const

Implement the stiffness tensor.

virtual void S(double T, double *const Sv) const

Implement the compliance tensor.

virtual double E(double T) const

The Young’s modulus.

virtual double nu(double T) const

Poisson’s ratio.

virtual double K(double T) const

The bulk modulus.

Public Static Functions

static std::string type()

The string type for the object system.

static std::unique_ptr<NEMLObject> initialize(ParameterSet &params)

Setup default parameters for the object system.

static ParameterSet parameters()

Initialize from a parameter set.