Models for Small Strains
Implementations of mechanical (stress-strain) material models following the MaterialModelsBase.jl
interface.
Elasticity
Linear Isotropic Elasticity
MechanicalMaterialModels.LinearElastic
— MethodLinearElastic(; 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)}\]
Linear Anisotropic Elasticity
MechanicalMaterialModels.LinearElastic
— MethodLinearElastic(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}$.
MechanicalMaterialModels.LinearElastic
— MethodLinearElastic{: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}\]
Viscoelasticity
MechanicalMaterialModels.GeneralizedMaxwell
— TypeGeneralizedMaxwell(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.
MechanicalMaterialModels.Maxwell
— TypeMaxwell(; 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).
Plasticity
MechanicalMaterialModels.Plastic
— TypePlastic(;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. Ifyield::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 toRateIndependent()
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))
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.FCC
— TypeFCC([T = Float64])
Create a full FCC crystal structure with 12 slip systems.
MechanicalMaterialModels.BCC
— TypeBCC([T = Float64])
Create a full BCC crystal structure with 48 slip systems.
MechanicalMaterialModels.BCC12
— TypeBCC12([T = Float64])
Create a reduced BCC crystal structure with 12 slip systems.
MechanicalMaterialModels.GenericCrystallography
— TypeGenericCrystallography(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.
MechanicalMaterialModels.CrystalPlasticity
— TypeCrystalPlasticity(;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
orFCC
.elastic::LinearElastic
: Which elastic law to be used.yield::Number
: Initial yield limit in all slip systemsq::Number
: Cross hardening factor, q=0 is no cross hardening, q = 1 is fullh0::Number
: Initial hardening modulush∞::Number
: Saturated hardening modulusζ::Number
: Hardening saturation rateHkin::Number
: Kinematic hardening modulusβ∞::Number
: Kinematic saturation stressoverstress
: An overstress function (<:Overstress
) orRateIndependent
.
See Meyer (2020) for a description of this model in a finite strain framework.