Models for Small Strains

Implementations of mechanical (stress-strain) material models following the MaterialModelsBase.jl interface.

Elasticity

Linear Isotropic Elasticity

MechanicalMaterialModels.LinearElasticMethod
LinearElastic(; E, ν)
LinearElastic{:isotropic}(; E, ν)

Create an isotropic LinearElastic material with Young's modulus, E, and Poisson's ratio ν, such that

\[\boldsymbol{\sigma} = 2\mu \boldsymbol{\epsilon} + \lambda \mathrm{tr}(\boldsymbol{\epsilon}) \boldsymbol{I} \\\]

where the Lamé parameters, $\mu$ and $\lambda$ are defined as

\[\mu = \frac{E}{2(1+\nu)}, \quad \lambda=\frac{E\nu}{(1+\nu)(1-2\nu)}\]

source

Linear Anisotropic Elasticity

MechanicalMaterialModels.LinearElasticMethod
LinearElastic(C::SymmetricTensor{4,3})
LinearElastic{:general}(C::SymmetricTensor{4,3})

Create a general LinearElastic material with the 4th order elastic stiffness tensor $\boldsymbol{C}$, such that $\boldsymbol{\sigma} = \boldsymbol{C}:\boldsymbol{\epsilon}$.

source
MechanicalMaterialModels.LinearElasticMethod
LinearElastic{:cubicsymmetry}(; C1111::T, C1122::T, C1212::T) where {T}

Create a LinearElastic material where the stiffness tensor, $\boldsymbol{C}$, possesses cubic symmetry along the coordinate axes. Using the 9-component Voigt notation, $\boldsymbol{C}$ can be expressed as

\[\boldsymbol{C} = \begin{bmatrix} C_{1111} & C_{1122} & C_{1122} & 0 & 0 & 0 & 0 & 0 & 0 \\ C_{1122} & C_{1111} & C_{1122} & 0 & 0 & 0 & 0 & 0 & 0 \\ C_{1122} & C_{1122} & C_{1111} & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 2C_{1212} & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 2C_{1212} & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 2C_{1212} & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 2C_{1212} & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 2C_{1212} & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 2C_{1212} \\ \end{bmatrix}\]

source

Viscoelasticity

MechanicalMaterialModels.GeneralizedMaxwellType
GeneralizedMaxwell(elastic::LinearElastic, chains::Maxwell...)

Create a generalized Maxwell model with an arbitrary number of Maxwell chains. The elastic part refers to the long-term stiffness contribution.

Currently, GeneralizedMaxwell and Maxwell are specific to isotropic viscous behavior, this should be generalized.

source
MechanicalMaterialModels.MaxwellType
Maxwell(; G, η, t)

Create a maxwell chain element with shear stiffness G. Either the viscosity, η, or the relaxation time, t = η / G, should be supplied (not both).

source

Plasticity

MechanicalMaterialModels.PlasticType
Plastic(;elastic, yield, isotropic, kinematic, overstress)

A small-strain plasticity model with modular elastic laws, yield criteria, multiple isotropic and kinematic hardening contributions, and either rate-independent or viscoplastic response.

Keyword arguments

  • elastic::AbstractMaterial
    Elastic law, see e.g. LinearElastic
  • yield::YieldCriterion
    Yield criterion, including the initial yield limit. If yield::Real is given, VonMises(yield) is used.
  • isotropic::Union{AbstractIsotropicHardening,Tuple}
    Isotropic hardening laws, see e.g. Voce
  • kinematic::Union{AbstractKinematicHardening,Tuple}
    Kinematic hardening laws, see e.g. ArmstrongFrederick
  • overstress::Union{RateIndependent,OverstressFunction}
    Rate dependence, see e.g. NortonOverstress
    Defaults to RateIndependent()

Example

m = Plastic(elastic = LinearElastic(E=210.e3, ν=0.3),
            yield = 100.0,
            isotropic = (Voce(Hiso=-100.e3, κ∞=-100.0),Voce(Hiso=10.e3, κ∞=200.0)),
            kinematic = (ArmstrongFrederick(Hkin=200.e3, β∞=200.0),
                         OhnoWang(Hkin=1000.e3, β∞=200.0, m=3.0)),
            overstress = NortonOverstress(;tstar=1.0, nexp=2.0))
source

Theory

While the exact model response is given by the laws in elastic, yield, isotropic, kinematic, and overstress, the generic model equations are described below.

The stress is calculated from the elastic strains, $\boldsymbol{\epsilon}_\mathrm{e}$, obtained via the additive decomposition, $\boldsymbol{\epsilon} = \boldsymbol{\epsilon}_\mathrm{e} + \boldsymbol{\epsilon}_\mathrm{p}$. The elastic law is specified by m.elastic and is evaluated by giving it the elastic strain.

Yield Criterion

A yield criterion of the type

\[\varPhi = f\left( \boldsymbol{\sigma} - \boldsymbol{\beta} \right) - \left[Y_0 + \kappa\right]\]

is assumed. Here, $\boldsymbol{\beta} = \sum_{i=1}^{N_\mathrm{kin}} \boldsymbol{\beta}_i$ is the total back-stress, and $\kappa = \sum_{i=1}^{N_\mathrm{iso}} \kappa_i$ is the total isotropic hardening stress. The initial yield limit is passed to the yield criterion along with potentially other parameters. The evolution laws for $\boldsymbol{\beta}_i$ and $\kappa_i$ are given by the kinematic and isotropic hardening laws.

Associative plastic flow is used to obtain the plastic strains,

\[\dot{\epsilon}_{\mathrm{p}} = \dot{\lambda} \left.\frac{\partial f}{\partial \boldsymbol{\sigma}}\right\vert_{\left( \boldsymbol{\sigma} - \boldsymbol{\beta} \right)} = \dot{\lambda} \boldsymbol{\nu}\]

Isotropic Hardening

The isotropic hardening stress is $\kappa_i = -H_{\mathrm{iso},i} k_i$, where the evolution law for $k_i$ is

\[\dot{k}_i = \dot{\lambda} g_{\mathrm{iso},i}(\kappa_i)\]

where $g_{\mathrm{iso},i}$ is specified by an isotropic hardening law, see Isotropic hardening. The hardening modulus, $H_{\mathrm{iso},i}$, is a parameter given to the isotropic hardening law.

Kinematic Hardening

The back-stress is $\boldsymbol{\beta}_i = - [2/3]H_{\mathrm{kin},i} \boldsymbol{b}_i$, where the evolution law for $\boldsymbol{b}_i$ is

\[\dot{\boldsymbol{b}}_i = \dot{\lambda} \boldsymbol{g}_{\mathrm{kin},i}(\boldsymbol{\nu}, \boldsymbol{\beta}_i)\]

where $g_{\mathrm{kin},i}$ is specified by a kinematic hardening law, see Kinematic hardening. The hardening modulus, $H_{\mathrm{kin},i}$, is a parameter given to the kinematic hardening law.

Rate Dependence

If overstress=RateIndependent(), the plastic multiplier, $\lambda$, is obtained via the KKT-conditions,

\[\dot{\lambda} \geq 0, \quad \varPhi \leq 0, \quad \dot{\lambda}\varPhi = 0\]

Otherwise, the overstress function, $\eta(\varPhi)$, determines the evolution of $\lambda$ as

\[\dot{\lambda} = \eta(\varPhi, (Y_0 + \kappa))\]

Crystal Plasticity

MechanicalMaterialModels.GenericCrystallographyType
GenericCrystallography(angles::AbstractFloat...)

Create a generic 2d crystal which rotates the slip plane (0, 1) and slip direction (1, 0) by angles (measured in radians) in the counter-clockwise direction.

source
MechanicalMaterialModels.CrystalPlasticityType
CrystalPlasticity(;crystal, elastic, yield, q, h0, h∞, ζ, Hkin, β∞, overstress)

!!! note Experimental API The current implementation is one very specific model, and it is expected that it will be generalized in the future to become more modular.

The parameters for this model are,

  • crystal::Crystallography: Which crystal structure should be used, e.g. BCC or FCC.
  • elastic::LinearElastic: Which elastic law to be used.
  • yield::Number: Initial yield limit in all slip systems
  • q::Number: Cross hardening factor, q=0 is no cross hardening, q = 1 is full
  • h0::Number: Initial hardening modulus
  • h∞::Number: Saturated hardening modulus
  • ζ::Number: Hardening saturation rate
  • Hkin::Number: Kinematic hardening modulus
  • β∞::Number: Kinematic saturation stress
  • overstress: An overstress function (<:Overstress) or RateIndependent.

See Meyer (2020) for a description of this model in a finite strain framework.

source