Finite-Strain Isotropic Biot Viscoelasticity

A finite-strain isotropic viscoelastic material model based on a generalized Maxwell model formulated in terms of the Biot stress and the right stretch tensor \(\boldsymbol{U}\). The hyperelastic base follows a Neo-Hookean Biot potential. The consistent algorithmic tangent is computed via automatic differentiation.

Index

Model Parameter

Description

0

\(K\)

Bulk modulus

1

\(G\)

Shear modulus

2

nM

Number of Maxwell elements

3 … 3+2nM−1

\(\gamma_i,\,\tau_i\)

Pairs of relative stiffness weight \(\gamma_i\) and relaxation time \(\tau_i\) for each Maxwell element (\(i=1,\ldots,n_M\))

3+2nM (optional)

\(\rho\)

Density

State Variable

Description

S0_old (9 components)

Biot stress from the previous increment

creepStateVars (9 × nM components)

Creep state tensors for each Maxwell element

Theory

The model employs the polar decomposition \(\boldsymbol{F} = \boldsymbol{R}\,\boldsymbol{U}\), where \(\boldsymbol{U}\) is the right stretch tensor obtained from the spectral decomposition of the right Cauchy–Green tensor \(\boldsymbol{C} = \boldsymbol{Q}\,\boldsymbol{\Lambda}\,\boldsymbol{Q}^{\mathsf{T}}\).

The Biot stress is derived from a Neo-Hookean strain energy density function \(\Psi(\boldsymbol{U})\) as

\[\boldsymbol{T}_{\rm Biot} = \frac{\partial \Psi}{\partial \boldsymbol{U}}.\]

The total Biot stress is decomposed into instantaneous and viscous contributions following the generalized Maxwell model:

\[\boldsymbol{T}_{\rm Biot} = \boldsymbol{T}_{\rm Biot,\infty} + \sum_{i=1}^{n_M} \boldsymbol{h}_i.\]

The overstress evolution and algorithmic update are identical to the finite-strain Maxwell model described in Liu et al. (2021), with the Biot stress increment as the driving quantity. The second Piola–Kirchhoff stress is recovered from the Biot stress via the spectral representation

\[\boldsymbol{S}_{IJ} = \frac{2\,T_{\rm Biot,IJ}}{\lambda_I + \lambda_J}, \quad \lambda_I = \sqrt{\Lambda_{II}},\]

where \(\lambda_I\) are the principal stretches. The Kirchhoff stress follows by push-forward: \(\boldsymbol{\tau} = \boldsymbol{F}\,\boldsymbol{S}\,\boldsymbol{F}^{\mathsf{T}}\).

Primary reference: Liu et al. 2021, A continuum and computational framework for viscoelastodynamics: I. Finite deformation linear models, Comput. Meth. Appl. Mech. Engrg. 385, 114059.

Implementation

class FiniteStrainIsotropicBiotViscoelasticity : public MarmotMaterialFiniteStrainAD

Inheritance diagram for Marmot::Materials::FiniteStrainIsotropicBiotViscoelasticity:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="Marmot::Materials::FiniteStrainIsotropicBiotViscoelasticity" tooltip="Marmot::Materials::FiniteStrainIsotropicBiotViscoelasticity" 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::FiniteStrainIsotropicBiotViscoelasticity:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "5" [label="Marmot::ContinuumMechanics::FiniteStrain::Viscoelasticity::MaxwellProperties" tooltip="Marmot::ContinuumMechanics::FiniteStrain::Viscoelasticity::MaxwellProperties"]
    "1" [label="Marmot::Materials::FiniteStrainIsotropicBiotViscoelasticity" tooltip="Marmot::Materials::FiniteStrainIsotropicBiotViscoelasticity" fillcolor="#BFBFBF"]
    "3" [label="MarmotMaterialFiniteStrain" tooltip="MarmotMaterialFiniteStrain"]
    "2" [label="MarmotMaterialFiniteStrainAD" tooltip="MarmotMaterialFiniteStrainAD"]
    "4" [label="MarmotStateLayoutDynamic" tooltip="MarmotStateLayoutDynamic"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
    "1" -> "5" [dir=forward tooltip="usage"]
    "3" -> "4" [dir=forward tooltip="usage"]
    "2" -> "3" [dir=forward tooltip="public-inheritance"]
}

Finite-strain isotropic Biot-viscoelastic material model.

The model combines isotropic Biot-type hyperelasticity with a generalized Maxwell evolution in Biot stress space.

Material parameters

  • K - bulk modulus

  • G - shear modulus

  • n_Maxwell - number of Maxwell elements

  • tau[i], beta[i] (i = 1..n_Maxwell) - Maxwell retardation times and relative weights

  • rho - density (optional; read from the last material property entry)

State variables

  • S0_old - Biot stress from the previous increment

  • creepStateVars - internal variables for the generalized Maxwell chain

Public Functions

FiniteStrainIsotropicBiotViscoelasticity(const double *materialProperties, int nMaterialProperties, int materialLabel)

Construct a FiniteStrainIsotropicBiotViscoelasticity material.

Parameters:
  • materialProperties – Pointer to the material properties vector.

  • nMaterialProperties – Length of materialProperties.

  • materialLabel – Material label.

virtual void computeStressAD(ConstitutiveResponseAD<3>&, const DeformationAD<3>&, const TimeIncrement&) const override

Compute Kirchhoff stress using automatic differentiation.

Parameters:
  • response[inout] Constitutive response including stress, energy density and state variables.

  • deformation[in] Deformation information with deformation gradient \(\mathbf{F}\).

  • timeIncrement[in] Time increment information.

virtual double getDensity(const double *stateVars) const override

Get the material density.

Parameters:

stateVars[in] Pointer to state variables (unused).

Returns:

Density from the last entry in materialProperties.

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.

Protected Functions

inline void initializeStateLayout()

Define the layout of persistent state variables.

Protected Attributes

const double K

Bulk modulus.

const double G

Shear modulus.

const ContinuumMechanics::FiniteStrain::Viscoelasticity::MaxwellProperties maxwellProperties

Generalized Maxwell model parameters.

const FastorStandardTensors::Tensor3333t<autodiff::dual> initialCompliance

Initial compliance tensor used for viscoelastic stress update.