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"]
}

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"]
}

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 K at index 0 and G at 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.