Von Mises model (Automatic Differentiation)
An automatic differentiation implementation of classical J2 plasticity with isotropic hardening.
Index |
Model Parameter |
Description |
|---|---|---|
0 |
\(E\) |
Young’s modulus |
1 |
\(\nu\) |
Poisson’s ratio |
2 |
\(f_\mathrm{y}^{0}\) |
Initial yield stress |
3 |
\(H_\mathrm{iso,lin}\) |
First hardening parameter [1] |
4 |
\(\Delta f_\mathrm{y}^{0,\infty}\) |
Second hardening parameter [1] |
5 |
\(\delta\) |
Third hardening parameter [1] |
State Variable |
Name |
Description |
|---|---|---|
\(\kappa\) |
|
Hardening variable [1] |
Theory
See Von Mises model.
Implementation
Implementation follows the Von Mises model, however, automatic differentiation is used to compute the consistent algorithmic tangent operator.
-
class ADVonMises : public MarmotMaterialHypoElasticAD
Inheritance diagram for Marmot::Materials::ADVonMises:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::ADVonMises" tooltip="Marmot::Materials::ADVonMises" fillcolor="#BFBFBF"]
"3" [label="MarmotMaterialHypoElastic" tooltip="MarmotMaterialHypoElastic"]
"2" [label="MarmotMaterialHypoElasticAD" tooltip="MarmotMaterialHypoElasticAD"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"2" -> "3" [dir=forward tooltip="public-inheritance"]
}](../../_images/graphviz-d1c4621b3976c84d10131e226d45f7d86471d5eb.png)
Collaboration diagram for Marmot::Materials::ADVonMises:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::ADVonMises" tooltip="Marmot::Materials::ADVonMises" fillcolor="#BFBFBF"]
"3" [label="MarmotMaterialHypoElastic" tooltip="MarmotMaterialHypoElastic"]
"2" [label="MarmotMaterialHypoElasticAD" tooltip="MarmotMaterialHypoElasticAD"]
"4" [label="MarmotStateLayoutDynamic" tooltip="MarmotStateLayoutDynamic"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"3" -> "4" [dir=forward tooltip="usage"]
"2" -> "3" [dir=forward tooltip="public-inheritance"]
}](../../_images/graphviz-f426bd5c9481ac7e5ebb4fff07b37daa9189716c.png)
Implementation of a isotropic J2-plasticity material for 3D stress states using automatic differentiation.
Public Functions
-
ADVonMises(const double *materialProperties, int nMaterialProperties, int materialNumber)
-
virtual double getDensity(const double *stateVars) const override
Get the mass density of the material.
- Parameters:
stateVars – Pointer to the state variable array
- Returns:
Mass density of the material
Public Members
-
const double &E
Young’s modulus.
-
const double &nu
Poisson’s ratio.
-
const double &yieldStress
Initial yield stress.
-
const double &HLin
First hardening parameter.
-
const double &deltaYieldStress
Second hardening parameter.
-
const double &delta
Third hardening parameter.
-
const double G
Shear modulus.
Protected Functions
-
virtual void computeStressAD(state3DAD &state, const Marmot::Vector6dual &dStrain, const timeInfo &timeInfo) const override
Compute the Cauchy stress tensor \(\boldsymbol{\sigma}\) given an increment of the linearized strain tensor \(\Delta\boldsymbol{\varepsilon}\).
Dual numbers are used for both the Cauchy stress tensor and the linearized strain increment, such that the algorithmic tangent operator \(\frac{\partial\boldsymbol{\sigma}^{(n+1)}}{\partial\boldsymbol{\varepsilon}^{(n+1)}}\) can be obtained by means of automatic differentiation.
- Parameters:
state – [inout] State carrying the dual Cauchy stress, strain energy, and state variables
dStrain – [in] linearized strain increment
timeInfo – Old (pseudo-)time
-
template<typename T>
inline T fy(T kappa_) const Hardening function.
in] kappa Hardening variable.
- Tparam :
- Returns:
Current yield stress.
-
template<typename T>
inline T f(const T rho_, const double kappa_) const Yield function.
in] rho Deviatoric radius ( \(\rho = ||s||\)).
- Tparam :
- Parameters:
kappa – [in] Hardening variable.
- Returns:
Value of the yield function.
-
template<typename T>
inline T g(const T rhoTrial, const double kappa, const T deltaKappa) const Objective function for stress update algorithm.
in] rhoTrial Deviatoric radius.
in] deltaKappa Increment of the hardening variable.
- Tparam :
- Parameters:
kappa – [in] Current value of the hardening variable.
- Tparam :
- Returns:
Value of the yield function.
-
ADVonMises(const double *materialProperties, int nMaterialProperties, int materialNumber)