Compressible Neo Hooke model (Automatic Differentiation)
An automatic differentiation implementation of the compressible Neo-Hookean hyperelastic material model. This material is intended for demonstration and verification purposes, illustrating how to use the capabilities of the AD (Automatic Differentiation) material framework.
Theory
See Compressible Neo Hooke model for the underlying theory.
Implementation
The implementation follows Compressible Neo Hooke model; however, automatic differentiation is used to compute the consistent algorithmic tangent operator.
Index |
Model Parameter |
Description |
|---|---|---|
0 |
\(K\) |
Bulk modulus |
1 |
\(G\) |
Shear modulus |
State Variable |
Name |
Description |
|---|---|---|
— |
— |
No state variables required. |
-
class ADCompressibleNeoHooke : public MarmotMaterialFiniteStrainAD
Inheritance diagram for Marmot::Materials::ADCompressibleNeoHooke:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::ADCompressibleNeoHooke" tooltip="Marmot::Materials::ADCompressibleNeoHooke" fillcolor="#BFBFBF"]
"3" [label="MarmotMaterialFiniteStrain" tooltip="MarmotMaterialFiniteStrain"]
"2" [label="MarmotMaterialFiniteStrainAD" tooltip="MarmotMaterialFiniteStrainAD"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"2" -> "3" [dir=forward tooltip="public-inheritance"]
}](../../_images/graphviz-1b8b9bdca4ea3fc9a17287ea722f551111acaafe.png)
Collaboration diagram for Marmot::Materials::ADCompressibleNeoHooke:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::ADCompressibleNeoHooke" tooltip="Marmot::Materials::ADCompressibleNeoHooke" fillcolor="#BFBFBF"]
"3" [label="MarmotMaterialFiniteStrain" tooltip="MarmotMaterialFiniteStrain"]
"2" [label="MarmotMaterialFiniteStrainAD" tooltip="MarmotMaterialFiniteStrainAD"]
"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-bb2f3e3fbacb271580180711192a9227ebaae250.png)
Compressible Neo-Hookean hyperelastic material model (Pence–Gou potential, variant B).
- Material parameters
K - bulk modulus
G - shear modulus
- State variables
No state variables required.
Public Functions
-
ADCompressibleNeoHooke(const double *materialProperties, int nMaterialProperties, int materialLabel)
Construct a ADCompressibleNeoHooke material.
- Parameters:
materialProperties – Expects
Kat index 0 andGat index 1.nMaterialProperties – Length of
materialProperties.materialLabel – Material label.
-
virtual void computeStressAD(ConstitutiveResponseAD<3>&, const DeformationAD<3>&, const TimeIncrement&) const override
Compute the Kirchhoff stress with dual numbers.
Template parameter
<3>indicates 3D.- Parameters:
response – [inout]
tau- Kirchhoff stress tensor \(\boldsymbol{\tau}\).elasticEnergyDensity- elastic energy density \(\psi\).rho- density (unused here).
deformation – [in]
F- deformation gradient \(\boldsymbol{F}\).
timeIncrement – [in]
t- old (pseudo-)time.dT- (pseudo-)time increment.
-
inline virtual double getDensity(const double *stateVars) const override
Get the mass density of the material.
- Parameters:
stateVars – [in] Pointer to the state variable array
- Returns:
Mass density
-
inline MarmotMaterialFiniteStrainAD(const double *matProperties_, int nMaterialProperties_, int materialNumber_)
Construct a MarmotMaterialFiniteStrainAD.
- Parameters:
matProperties_ – [in] Pointer to the array of material property values.
nMaterialProperties_ – [in] Number of material property values.
materialNumber_ – [in] Unique identifier for this material instance.