Classes | Public Member Functions | Private Attributes | Static Private Attributes | List of all members
Marmot::Materials::LinearViscoelasticPowerLaw Class Reference

Implementation of a linear elastic material according to the LinearViscoelasticPowerLaw model by Bazant et al. (2015) generalized for 3D stress states. More...

#include <LinearViscoelasticPowerLaw.h>

Inheritance diagram for Marmot::Materials::LinearViscoelasticPowerLaw:
[legend]

Classes

class  LinearViscoelasticPowerLawStateVarManager
 

Public Member Functions

 LinearViscoelasticPowerLaw (const double *materialProperties, int nMaterialProperties, int materialLabel)
 
void computeStress (double *stress, double *dStressDDStrain, const double *dStrain, const double *timeOld, const double dT, double &pNewDT)
 
int getNumberOfRequiredStateVars ()
 
void assignStateVars (double *stateVars_, int nStateVars)
 
StateView getStateView (const std::string &stateName)
 
- Public Member Functions inherited from MarmotMaterialHypoElastic
void setCharacteristicElementLength (double length)
 
virtual void computeStress (double *stress, double *dStressDDStrain, const double *FOld, const double *FNew, const double *timeOld, const double dT, double &pNewDT) override
 
virtual void computePlaneStress (double *stress2D, double *dStress_dStrain2D, const double *dStrain2D, const double *timeOld, const double dT, double &pNewDT)
 
virtual void computeUniaxialStress (double *stress1D, double *dStress_dStrain1D, const double *dStrain, const double *timeOld, const double dT, double &pNewDT)
 
virtual void computePlaneStress (double *stress2D, double *dStress_dF2DNew, const double *FOld2D, const double *FNew2D, const double *timeOld, const double dT, double &pNewDT)
 
virtual void computeUniaxialStress (double *stress1D, double *dStress1D_dF1DNew, const double *F1DOld, const double *F1DNew, const double *timeOld, const double dT, double &pNewDT)
 
- Public Member Functions inherited from MarmotMaterialMechanical
virtual void computePlaneStress (double *stress2D, double *dStress_dF2DNew, const double *FOld2D, const double *FNew2D, const double *timeOld, const double dT, double &pNewDT)
 
virtual void computeUniaxialStress (double *stress1D, double *dStress1D_dF1DNew, const double *F1DOld, const double *F1DNew, const double *timeOld, const double dT, double &pNewDT)
 
 MarmotMaterial (const double *materialProperties, int nMaterialProperties, int materialNumber)
 
- Public Member Functions inherited from MarmotMaterial
 MarmotMaterial (const double *materialProperties, int nMaterialProperties, int materialNumber)
 
virtual ~MarmotMaterial ()
 
double * getAssignedStateVars ()
 
int getNumberOfAssignedStateVars ()
 
virtual void initializeYourself ()
 
virtual double getDensity ()
 

Private Attributes

const double & E
 Young's modulus. More...
 
const double & nu
 Poisson's ratio. More...
 
const double & m
 power law compliance parameter More...
 
const double & n
 power law exponent More...
 
const size_t nKelvin
 number of Kelvin units to approximate the viscoelastic compliance More...
 
const double & minTau
 minimal retardation time used in the viscoelastic Kelvin chain More...
 
const double & timeToDays
 ratio of simulation time to days More...
 
std::unique_ptr< LinearViscoelasticPowerLawStateVarManagerstateVarManager
 
KelvinChain::Properties elasticModuli
 
KelvinChain::Properties retardationTimes
 
double zerothKelvinChainCompliance
 

Static Private Attributes

static constexpr int powerLawApproximationOrder = 2
 

Additional Inherited Members

- Public Attributes inherited from MarmotMaterialHypoElastic
double characteristicElementLength
 Characteristic element length. More...
 
- Public Attributes inherited from MarmotMaterial
const int materialNumber
 
- Protected Attributes inherited from MarmotMaterial
const double * materialProperties
 
const int nMaterialProperties
 
double * stateVars
 
int nStateVars
 

Detailed Description

Implementation of a linear elastic material according to the LinearViscoelasticPowerLaw model by Bazant et al. (2015) generalized for 3D stress states.

For further information see B4 Model.

Constructor & Destructor Documentation

◆ LinearViscoelasticPowerLaw()

Marmot::Materials::LinearViscoelasticPowerLaw::LinearViscoelasticPowerLaw ( const double *  materialProperties,
int  nMaterialProperties,
int  materialLabel 
)

Member Function Documentation

◆ computeStress()

void Marmot::Materials::LinearViscoelasticPowerLaw::computeStress ( double *  stress,
double *  dStressDDStrain,
const double *  dStrain,
const double *  timeOld,
const double  dT,
double &  pNewDT 
)
virtual

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
[in,out]stressCauchy stress
[in,out]dStressDDstrainAlgorithmic tangent representing the derivative of the Cauchy stress tensor with respect to the linearized strain
[in]dStrainlinearized strain increment
[in]timeOldOld (pseudo-)time
[in]dt(Pseudo-)time increment from the old (pseudo-)time to the current (pseudo-)time
[in,out]pNewDTSuggestion for a new time increment

Implements MarmotMaterialHypoElastic.

◆ getNumberOfRequiredStateVars()

int Marmot::Materials::LinearViscoelasticPowerLaw::getNumberOfRequiredStateVars ( )
virtual

Implements MarmotMaterial.

◆ assignStateVars()

void Marmot::Materials::LinearViscoelasticPowerLaw::assignStateVars ( double *  stateVars_,
int  nStateVars 
)
virtual

Reimplemented from MarmotMaterial.

◆ getStateView()

StateView Marmot::Materials::LinearViscoelasticPowerLaw::getStateView ( const std::string &  stateName)
virtual

Implements MarmotMaterial.

Member Data Documentation

◆ E

const double& Marmot::Materials::LinearViscoelasticPowerLaw::E
private

Young's modulus.

◆ nu

const double& Marmot::Materials::LinearViscoelasticPowerLaw::nu
private

Poisson's ratio.

◆ m

const double& Marmot::Materials::LinearViscoelasticPowerLaw::m
private

power law compliance parameter

◆ n

const double& Marmot::Materials::LinearViscoelasticPowerLaw::n
private

power law exponent

◆ nKelvin

const size_t Marmot::Materials::LinearViscoelasticPowerLaw::nKelvin
private

number of Kelvin units to approximate the viscoelastic compliance

◆ minTau

const double& Marmot::Materials::LinearViscoelasticPowerLaw::minTau
private

minimal retardation time used in the viscoelastic Kelvin chain

◆ timeToDays

const double& Marmot::Materials::LinearViscoelasticPowerLaw::timeToDays
private

ratio of simulation time to days

◆ stateVarManager

std::unique_ptr< LinearViscoelasticPowerLawStateVarManager > Marmot::Materials::LinearViscoelasticPowerLaw::stateVarManager
private

◆ elasticModuli

KelvinChain::Properties Marmot::Materials::LinearViscoelasticPowerLaw::elasticModuli
private

◆ retardationTimes

KelvinChain::Properties Marmot::Materials::LinearViscoelasticPowerLaw::retardationTimes
private

◆ zerothKelvinChainCompliance

double Marmot::Materials::LinearViscoelasticPowerLaw::zerothKelvinChainCompliance
private

◆ powerLawApproximationOrder

constexpr int Marmot::Materials::LinearViscoelasticPowerLaw::powerLawApproximationOrder = 2
staticconstexprprivate

The documentation for this class was generated from the following files: