Linear Viscoelastic Orthotropic Power Law model
Theory
This is an orthotropic implementation of the isotropic model described in Linear Viscoelastic Power Law model.
Thus, the normalized initial elastic compliance tensor is replaced by an orthotropic one.
with the Young’s modulus \(E_1\) as the Young’s modulus in the \(x_1\) material direction. Constant Poisson’s ratios are assumed in all material directions.
Implementation
-
class LinearViscoelasticOrthotropicPowerLaw : public MarmotMaterialHypoElastic
Inheritance diagram for Marmot::Materials::LinearViscoelasticOrthotropicPowerLaw:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::LinearViscoelasticOrthotropicPowerLaw" tooltip="Marmot::Materials::LinearViscoelasticOrthotropicPowerLaw" fillcolor="#BFBFBF"]
"4" [label="MarmotMaterial" tooltip="MarmotMaterial"]
"2" [label="MarmotMaterialHypoElastic" tooltip="MarmotMaterialHypoElastic"]
"3" [label="MarmotMaterialMechanical" tooltip="MarmotMaterialMechanical"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"2" -> "3" [dir=forward tooltip="public-inheritance"]
"3" -> "4" [dir=forward tooltip="public-inheritance"]
}](../../_images/graphviz-93a8b7d198bb16c8ede391afda84489cde607e4f.png)
Collaboration diagram for Marmot::Materials::LinearViscoelasticOrthotropicPowerLaw:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::LinearViscoelasticOrthotropicPowerLaw" tooltip="Marmot::Materials::LinearViscoelasticOrthotropicPowerLaw" fillcolor="#BFBFBF"]
"4" [label="MarmotMaterial" tooltip="MarmotMaterial"]
"2" [label="MarmotMaterialHypoElastic" tooltip="MarmotMaterialHypoElastic"]
"3" [label="MarmotMaterialMechanical" tooltip="MarmotMaterialMechanical"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"2" -> "3" [dir=forward tooltip="public-inheritance"]
"3" -> "4" [dir=forward tooltip="public-inheritance"]
}](../../_images/graphviz-93a8b7d198bb16c8ede391afda84489cde607e4f.png)
Implementation of an orthotropic linear viscoelastic material model following a Power Law compliance function and assuming constant Poisson’s ratios generalized for 3D stress states.
Public Functions
-
LinearViscoelasticOrthotropicPowerLaw(const double *materialProperties, int nMaterialProperties, int materialLabel)
-
virtual void computeStress(double *stress, double *dStressDDStrain, const double *dStrain, const double *timeOld, const double dT, double &pNewDT)
For a given linearized strain increment \(\Delta\boldsymbol{\varepsilon}\) at the old and the current time, compute the Cauchy stress and the algorithmic tangent \(\frac{\partial\boldsymbol{\sigma}^{(n+1)}}{\partial\boldsymbol{\varepsilon}^{(n+1)}}\).
- Parameters:
stress – [inout] Cauchy stress
dStressDDstrain – [inout] Algorithmic tangent representing the derivative of the Cauchy stress tensor with respect to the linearized strain
dStrain – [in] linearized strain increment
timeOld – [in] Old (pseudo-)time
dt – [in] (Pseudo-)time increment from the old (pseudo-)time to the current (pseudo-)time
pNewDT – [inout] Suggestion for a new time increment
-
virtual int getNumberOfRequiredStateVars()
- Returns:
Number of state variables required by the material.
-
virtual void assignStateVars(double *stateVars_, int nStateVars)
Assign state variable array to material.
- Parameters:
stateVars – [inout] Pointer to state variable array.
nStateVars – [in] Number of state variables.
Private Members
-
const double &E1
Young’s modulus in x1 direction.
-
const double &E2
Young’s modulus in x2 direction.
-
const double &E3
Young’s modulus in x3 direction.
-
const double &nu12
Poisson’s ratio.
-
const double &nu23
Poisson’s ratio.
-
const double &nu13
Poisson’s ratio.
-
const double &G12
Shear modulus in x1-x2 plane.
-
const double &G23
Shear modulus in x2-x3 plane.
-
const double &G13
Shear modulus in x1-x3 plane.
-
const double &m
power law compliance parameter
-
const double &n
power law exponent
-
const int powerLawApproximationOrder
approximation order for the retardation spectrum (must be 2, 3, 4, or 7)
-
const size_t nKelvin
number of Kelvin units to approximate the viscoelastic compliance
-
const double &minTau
minimal retardation time used in the viscoelastic Kelvin chain
-
const double &spacing
log spacing between the retardation times of the Kelvin Chain
-
const double &timeToDays
ratio of simulation time to days
-
std::unique_ptr<LinearViscoelasticOrthotropicPowerLawStateVarManager> stateVarManager
-
KelvinChain::Properties elasticModuli
Elastic moduli of the Kelvin chain units.
-
KelvinChain::Properties retardationTimes
Retardation times of the Kelvin chain units.
-
double zerothKelvinChainCompliance
Zeroth Kelvin chain compliance.
-
class LinearViscoelasticOrthotropicPowerLawStateVarManager : public MarmotStateVarVectorManager
Inheritance diagram for Marmot::Materials::LinearViscoelasticOrthotropicPowerLaw::LinearViscoelasticOrthotropicPowerLawStateVarManager:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::LinearViscoelasticOrthotropicPowerLaw::LinearViscoelasticOrthotropicPowerLawStateVarManager" tooltip="Marmot::Materials::LinearViscoelasticOrthotropicPowerLaw::LinearViscoelasticOrthotropicPowerLawStateVarManager" fillcolor="#BFBFBF"]
"2" [label="MarmotStateVarVectorManager" tooltip="MarmotStateVarVectorManager"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
}](../../_images/graphviz-85c755373988c22b859fbb404535b6900474fdc7.png)
Collaboration diagram for Marmot::Materials::LinearViscoelasticOrthotropicPowerLaw::LinearViscoelasticOrthotropicPowerLawStateVarManager:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::LinearViscoelasticOrthotropicPowerLaw::LinearViscoelasticOrthotropicPowerLawStateVarManager" tooltip="Marmot::Materials::LinearViscoelasticOrthotropicPowerLaw::LinearViscoelasticOrthotropicPowerLawStateVarManager" fillcolor="#BFBFBF"]
"2" [label="MarmotStateVarVectorManager" tooltip="MarmotStateVarVectorManager"]
"3" [label="MarmotStateVarVectorManager::StateVarVectorLayout" tooltip="MarmotStateVarVectorManager::StateVarVectorLayout"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"2" -> "3" [dir=forward tooltip="usage"]
}](../../_images/graphviz-cb083d76b6809c7c916203f786be4878eae2ac69.png)
Public Functions
-
inline LinearViscoelasticOrthotropicPowerLawStateVarManager(double *theStateVarVector, int nKelvinUnits)
Public Members
-
KelvinChain::mapStateVarMatrix kelvinStateVars
Public Static Attributes
-
static const auto layout =
makeLayout( {{ .name = "kelvinStateVars", .length = 0 },} )
-
inline LinearViscoelasticOrthotropicPowerLawStateVarManager(double *theStateVarVector, int nKelvinUnits)
-
LinearViscoelasticOrthotropicPowerLaw(const double *materialProperties, int nMaterialProperties, int materialLabel)