Compressible Finite-Strain Linear Viscoelasticity
A finite-strain viscoelastic material model based on a generalized Maxwell model. The instantaneous hyperelastic response is provided by a selectable compressible hyperelastic base potential, and the viscous contribution is formulated in terms of the second Piola–Kirchhoff stress.
Material parameters
The material parameters are provided as a flat vector with the following layout:
Index |
Model Parameter |
Description |
|---|---|---|
0 |
hyperelasticBase |
Hyperelastic base model selector: |
1 |
onlyShearCreep |
Flag: |
2 … 2+ne−1 |
elastic properties |
Elastic properties of the selected hyperelastic base model (see below) |
2+ne |
nM |
Number of Maxwell elements |
2+ne+1 … 2+ne+2nM |
\(\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\)) |
2+ne+1+2nM (optional) |
\(\rho\) |
Density |
Elastic properties by base model
Base model |
selector value |
ne |
Properties (in order) |
|---|---|---|---|
NeoHooke |
0 |
2 |
\(K\) (bulk modulus), \(G\) (shear modulus) |
Yeoh |
1 |
4 |
\(C_{10}\), \(C_{20}\), \(C_{30}\), \(K\) |
MooneyRivlin |
2 |
3 |
\(C_{10}\), \(C_{01}\), \(K\) |
PenceGouNeoHooke |
3 |
2 |
\(K\) (bulk modulus), \(G\) (shear modulus) |
State Variable |
Description |
|---|---|
|
Second Piola–Kirchhoff stress from the previous increment |
|
Creep state tensors for each Maxwell element |
Theory
The model is a finite-strain generalization of the linear viscoelastic model described, e.g., in Liu et al. (2021). A generalized Maxwell model is employed in which the long-term elastic part is provided by the chosen hyperelastic base potential.
The total second Piola–Kirchhoff stress reads
where \(\boldsymbol{S}_{\infty}\) is the long-term (hyperelastic) stress and \(\boldsymbol{h}_i\) are the non-equilibrium (viscous) overstresses of each Maxwell element.
The evolution of each overstress is governed by
where \(\tau_i\) is the relaxation time, \(\gamma_i\) the relative stiffness weight, \(\mathbb{C}_0\) the instantaneous (reference) stiffness tensor, and \(\boldsymbol{S}_0\) the instantaneous stress.
The algorithmic update uses a mid-point rule (see Liu et al. 2021):
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 CompressibleFiniteStrainLinearViscoelasticity : public MarmotMaterialFiniteStrain
Inheritance diagram for Marmot::Materials::CompressibleFiniteStrainLinearViscoelasticity:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::CompressibleFiniteStrainLinearViscoelasticity" tooltip="Marmot::Materials::CompressibleFiniteStrainLinearViscoelasticity" fillcolor="#BFBFBF"]
"2" [label="MarmotMaterialFiniteStrain" tooltip="MarmotMaterialFiniteStrain"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
}](../../_images/graphviz-3e1b8cf64f4487bba9253a291311363cbe5ecb54.png)
Collaboration diagram for Marmot::Materials::CompressibleFiniteStrainLinearViscoelasticity:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"4" [label="Marmot::ContinuumMechanics::FiniteStrain::Viscoelasticity::MaxwellProperties" tooltip="Marmot::ContinuumMechanics::FiniteStrain::Viscoelasticity::MaxwellProperties"]
"1" [label="Marmot::Materials::CompressibleFiniteStrainLinearViscoelasticity" tooltip="Marmot::Materials::CompressibleFiniteStrainLinearViscoelasticity" fillcolor="#BFBFBF"]
"2" [label="MarmotMaterialFiniteStrain" tooltip="MarmotMaterialFiniteStrain"]
"3" [label="MarmotStateLayoutDynamic" tooltip="MarmotStateLayoutDynamic"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"1" -> "4" [dir=forward tooltip="usage"]
"2" -> "3" [dir=forward tooltip="usage"]
}](../../_images/graphviz-6ea130c3196b334249ad4a0da87f9f8170fe8ae5.png)
Finite-strain compressible hyper-viscoelastic material model.
The model combines a selectable hyperelastic base potential with a generalized Maxwell viscoelastic evolution in the second Piola-Kirchhoff stress space.
- Material parameters
baseModel - hyperelastic base identifier (
NeoHooke,Yeoh,MooneyRivlin,PenceGouNeoHooke)onlyShearCreep - flag to restrict viscoelastic evolution to the deviatoric part
elasticProperties - coefficients required by the selected base model
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- previous step stress-like internal variable used in viscoelastic updatecreepStateVars- internal variables for the generalized Maxwell chain
Public Functions
-
CompressibleFiniteStrainLinearViscoelasticity(const double *materialProperties, int nMaterialProperties, int materialLabel)
Construct a CompressibleFiniteStrainLinearViscoelasticity material.
- Parameters:
materialProperties – Pointer to the material properties vector.
nMaterialProperties – Length of
materialProperties.materialLabel – Material label.
-
virtual void computeStress(ConstitutiveResponse<3>&, AlgorithmicModuli<3>&, const Deformation<3>&, const TimeIncrement&) const override
Compute the Kirchhoff stress and the algorithmic tangent for the current step.
Template parameter
<3>indicates 3D.- Parameters:
response – [inout]
tau- Kirchhoff stress tensor \(\boldsymbol{\tau}\).elasticEnergyDensity- elastic energy density \(\psi\).rho- density (unused here).
tangents – [inout]
dTau_dF- algorithmic tangent \(\partial\boldsymbol{\tau}/\partial\boldsymbol{F}\).
deformation – [in]
F- deformation gradient \(\boldsymbol{F}\).
timeIncrement – [in]
t- old time.dT- time increment.
-
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 MarmotMaterialFiniteStrain(const double *matProperties_, int nMaterialProperties_, int materialNumber_)
Construct a MarmotMaterialFiniteStrain.
- 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 Types
Protected Functions
-
inline void initializeStateLayout()
Define the layout of persistent state variables.
-
std::tuple<double, FastorStandardTensors::Tensor33d, FastorStandardTensors::Tensor3333d, FastorStandardTensors::Tensor333333d> computeEnergyDensityAndDerivatives(const FastorStandardTensors::Tensor33d &C) const
Compute strain energy density and derivatives with respect to \(\mathbf{C}\).
- Parameters:
C – [in] Right Cauchy-Green deformation tensor.
- Returns:
Tuple containing energy density and first, second and third derivatives.
Protected Attributes
-
const std::map<HyperelasticBase, int> nElasticPropertiesMap = {{NeoHooke, 2}, {Yeoh, 4}, {MooneyRivlin, 3}, {PenceGouNeoHooke, 2},}
Mapping from hyperelastic base model to required number of elastic properties.
-
const HyperelasticBase hyperelasticBase
Selected hyperelastic base model.
-
const double onlyShearCreep
Flag indicating whether viscoelasticity acts on deviatoric stresses only.
-
const Eigen::Map<const Eigen::VectorXd> elasticProperties
Elastic coefficients of the selected hyperelastic base model.
-
const ContinuumMechanics::FiniteStrain::Viscoelasticity::MaxwellProperties maxwellProperties
Generalized Maxwell model parameters.
-
FastorStandardTensors::Tensor3333d initialCompliance
Initial compliance tensor used for viscoelastic stress update.