Finite-Strain Orthotropic Biot Viscoelasticity
A finite-strain orthotropic viscoelastic material model based on a generalized Maxwell model formulated in terms of the Biot stress and the right stretch tensor \(\boldsymbol{U}\). The instantaneous elastic response is governed by an orthotropic linear Biot constitutive law. The consistent algorithmic tangent is computed via automatic differentiation.
Index |
Model Parameter |
Description |
|---|---|---|
0 |
\(E_1\) |
Young’s modulus in material direction 1 |
1 |
\(E_2\) |
Young’s modulus in material direction 2 |
2 |
\(E_3\) |
Young’s modulus in material direction 3 |
3 |
\(\nu_{12}\) |
Poisson’s ratio (1–2 plane) |
4 |
\(\nu_{13}\) |
Poisson’s ratio (1–3 plane) |
5 |
\(\nu_{23}\) |
Poisson’s ratio (2–3 plane) |
6 |
\(G_{12}\) |
Shear modulus in the 1–2 plane |
7 |
\(G_{13}\) |
Shear modulus in the 1–3 plane |
8 |
\(G_{23}\) |
Shear modulus in the 2–3 plane |
9 |
nM |
Number of Maxwell elements |
10 … 10+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\)) |
10+2nM (optional) |
\(\rho\) |
Density |
The Poisson’s ratio \(\nu_{ij}\) is defined as the ratio of lateral strain in
direction \(x_j\) to axial strain in direction \(x_i\) under uniaxial stress in
direction \(x_i\). See namespace Marmot::ContinuumMechanics::Elasticity for details.
State Variable |
Description |
|---|---|
|
Biot stress from the previous increment |
|
Creep state tensors for each Maxwell element |
Theory
The model is the orthotropic counterpart of the Finite-Strain Isotropic Biot Viscoelasticity. It replaces the isotropic Neo-Hookean Biot potential with a fully orthotropic linear Biot constitutive relation.
The polar decomposition \(\boldsymbol{F} = \boldsymbol{R}\,\boldsymbol{U}\) is used. The right stretch tensor \(\boldsymbol{U}\) is obtained from the spectral decomposition of \(\boldsymbol{C} = \boldsymbol{Q}\,\boldsymbol{\Lambda}\,\boldsymbol{Q}^{\mathsf{T}}\).
The instantaneous Biot stress is given by the orthotropic linear relation
where \(\mathbb{C}_{\rm Biot}\) is the fourth-order orthotropic stiffness tensor assembled from the nine independent engineering constants \(E_1,\,E_2,\,E_3,\,\nu_{12},\,\nu_{13},\,\nu_{23},\,G_{12},\,G_{13},\,G_{23}\).
The generalized Maxwell model introduces non-equilibrium overstresses:
The algorithmic update for each overstress is
The second Piola–Kirchhoff stress is recovered from the Biot stress in the principal-stretch frame via
and 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 FiniteStrainOrthotropicBiotViscoelasticity : public MarmotMaterialFiniteStrainAD
Inheritance diagram for Marmot::Materials::FiniteStrainOrthotropicBiotViscoelasticity:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::FiniteStrainOrthotropicBiotViscoelasticity" tooltip="Marmot::Materials::FiniteStrainOrthotropicBiotViscoelasticity" 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-a88238167812bd41f6102bd30a716f02eca56fb9.png)
Collaboration diagram for Marmot::Materials::FiniteStrainOrthotropicBiotViscoelasticity:
![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::FiniteStrainOrthotropicBiotViscoelasticity" tooltip="Marmot::Materials::FiniteStrainOrthotropicBiotViscoelasticity" 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"]
}](../../_images/graphviz-bb829ae3aff7250eab5465e831ec7fec3ac035be.png)
Finite-strain orthotropic Biot-viscoelastic material model.
The model combines orthotropic Biot-type hyperelasticity with a generalized Maxwell evolution in Biot stress space.
- Material parameters
E1, E2, E3 - Young’s moduli in principal material directions
nu12, nu13, nu23 - Poisson ratios
G12, G13, G23 - shear moduli
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 incrementcreepStateVars- internal variables for the generalized Maxwell chain
Public Functions
-
FiniteStrainOrthotropicBiotViscoelasticity(const double *materialProperties, int nMaterialProperties, int materialLabel)
Construct a FiniteStrainOrthotropicBiotViscoelasticity 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 E1
Young’s modulus in principal material direction 1.
-
const double E2
Young’s modulus in principal material direction 2.
-
const double E3
Young’s modulus in principal material direction 3.
-
const double nu12
Poisson ratio relating directions 1 and 2.
-
const double nu13
Poisson ratio relating directions 1 and 3.
-
const double nu23
Poisson ratio relating directions 2 and 3.
-
const double G12
Shear modulus in the 1-2 plane.
-
const double G13
Shear modulus in the 1-3 plane.
-
const double G23
Shear modulus in the 2-3 plane.
-
const ContinuumMechanics::FiniteStrain::Viscoelasticity::MaxwellProperties maxwellProperties
Generalized Maxwell model parameters.
-
const FastorStandardTensors::Tensor3333t<autodiff::dual> dBiotStress_dU
Constant derivative of Biot stress with respect to right stretch tensor.