Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
Marmot::Materials::LinearElastic Class Reference

Implementation of a linear elastic material for 3D stress states. More...

#include <LinearElastic.h>

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

Public Member Functions

 LinearElastic (const double *materialProperties, int nMaterialProperties, int materialNumber)
 
- 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 ()
 
virtual void assignStateVars (double *stateVars, int nStateVars)
 
double * getAssignedStateVars ()
 
int getNumberOfAssignedStateVars ()
 
virtual void initializeYourself ()
 

Protected Types

enum  Type { Type::Isotropic = 2, Type::TransverseIsotropic = 8, Type::Orthotropic = 12 }
 Type of anisotropic behavior. More...
 

Protected Member Functions

void computeStress (double *stress, double *dStressDDStrain, const double *dStrain, const double *timeOld, const double dT, double &pNewDT)
 
StateView getStateView (const std::string &result)
 
int getNumberOfRequiredStateVars ()
 

Protected Attributes

enum Marmot::Materials::LinearElastic::Type anisotropicType
 
const double & E1
 Young's modulus in x1 - direction. More...
 
const double & E2
 Young's modulus in x2 - direction. More...
 
const double & E3
 Young's modulus in x3 - direction. More...
 
const double & nu12
 Poisson's ratio between axis x1 and x2. More...
 
const double & nu23
 Poisson's ratio between axis x2 and x3. More...
 
const double & nu13
 Poisson's ratio between axis x1 and x3. More...
 
const double G12
 Shear modulus between axis x1 and x2. More...
 
const double G23
 Shear modulus between axis x2 and x3. More...
 
const double & G13
 Shear modulus between axis x1 and x3. More...
 
Matrix6d C
 Material stiffness tensor. More...
 
- Protected Attributes inherited from MarmotMaterial
const double * materialProperties
 
const int nMaterialProperties
 
double * stateVars
 
int nStateVars
 

Additional Inherited Members

- Public Attributes inherited from MarmotMaterialHypoElastic
double characteristicElementLength
 Characteristic element length. More...
 
- Public Attributes inherited from MarmotMaterial
const int materialNumber
 

Detailed Description

Implementation of a linear elastic material for 3D stress states.

For further information see Linear Elastic.

Member Enumeration Documentation

◆ Type

Type of anisotropic behavior.

Type is an enum class which involves the following case:

Enumerator
Isotropic 

Number of materialProperties equals 2.

TransverseIsotropic 

Number of materialProperties equals 8. 5 to describe the material behavior and 3 components of a normal vector. The latter corresponds to the x1 - axis of the principal material directions and defines the materials plane of isotropy (directions x2 and x3).

Orthotropic 

Number of materialProperties equals 12. 9 to describe material behavior and 3 components of a normal vector. The latter corresponds to the x1 - axis of the principal material directions.

Constructor & Destructor Documentation

◆ LinearElastic()

Marmot::Materials::LinearElastic::LinearElastic ( const double *  materialProperties,
int  nMaterialProperties,
int  materialNumber 
)

Member Function Documentation

◆ computeStress()

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

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.

◆ getStateView()

StateView Marmot::Materials::LinearElastic::getStateView ( const std::string &  result)
inlineprotectedvirtual

Implements MarmotMaterial.

◆ getNumberOfRequiredStateVars()

int Marmot::Materials::LinearElastic::getNumberOfRequiredStateVars ( )
inlineprotectedvirtual

Implements MarmotMaterial.

Member Data Documentation

◆ anisotropicType

enum Marmot::Materials::LinearElastic::Type Marmot::Materials::LinearElastic::anisotropicType
protected

anisotropicType represents the directional dependence of the material behavior. It is a representative of the enum class Type.

◆ E1

const double& Marmot::Materials::LinearElastic::E1
protected

Young's modulus in x1 - direction.

E1 represents the Young's modulus effective in the direction of the x1 - axis of the user defined local coordinate system. It is a reference variable to materialProperties[0].

◆ E2

const double& Marmot::Materials::LinearElastic::E2
protected

Young's modulus in x2 - direction.

E2 represents the Young's modulus effective in the direction of the x2 - axis of a user defined local coordinate system. In case of isotropic behavior it is set to E1 and does not need to be specified. Otherwise it is a reference variable to materialProperties[1].

◆ E3

const double& Marmot::Materials::LinearElastic::E3
protected

Young's modulus in x3 - direction.

E3 represents the Young's modulus effective in the direction of the x3 - axis of a user defined local coordinate system. In case of orthotropic behavior it needs to be specified and is a reference variable to materialProperties[2].

In case of transverse isotropic and isotropic behavior it is automatically set to E2 and does not need to be specified.

◆ nu12

const double& Marmot::Materials::LinearElastic::nu12
protected

Poisson's ratio between axis x1 and x2.

nu12 represents the Poisson's ratio effective between the x1 and x2 - axis of the user defined local coordinate system. Depending on the anisotropic type it is a reference variable to:

◆ nu23

const double& Marmot::Materials::LinearElastic::nu23
protected

Poisson's ratio between axis x2 and x3.

nu23 represents the Poisson's ratio effective between the x2 and x3 - axis of the user defined local coordinate system. Depending on the anisotropic type it is a reference variable to:

In case of isotropic behavior it is set to nu12 and does not need to be specified.

◆ nu13

const double& Marmot::Materials::LinearElastic::nu13
protected

Poisson's ratio between axis x1 and x3.

nu13 represents the Poisson's ratio effective between the x1 and x3 - axis of the user defined local coordinate system. In case of orthotropic behavior it needs to be specified and is a reference variable to materialProperties[5].

In case of transverse isotropic and isotropic behavior it is set to nu23 and does not need to be specified.

◆ G12

const double Marmot::Materials::LinearElastic::G12
protected

Shear modulus between axis x1 and x2.

G12 represents the Shear modulus effective between the x1 and x2 - axis of the user defined local coordinate system. In case of isotropic behavior, it does not need to be specified and is set to \( \frac{E_1}{2 \cdot ( 1 + \nu_{12})}\). Otherwise, depending on the anisotropic type it is a reference variable to:

◆ G23

const double Marmot::Materials::LinearElastic::G23
protected

Shear modulus between axis x2 and x3.

G23 represents the Shear modulus effective between the x2 and x3 - axis of the user defined local coordinate system. Neither isotropic nor transversal isotropic behavior needs to be specified. In case of isotropic behavior it is set to G12 and in case of transverse isotropic behavior it is set to \( \frac{E_2}{2 \cdot ( 1 + \nu_{23})}\) In case of orthotropic behavior it is a reference variable to materialProperties[7].

◆ G13

const double& Marmot::Materials::LinearElastic::G13
protected

Shear modulus between axis x1 and x3.

G13 represents the Shear modulus effective between the x1 and x3 - axis of the user defined local coordinate system. Neither isotropic nor transversal isotropic behavior needs to be specified and it is set in both cases to G12. In case of orthotropic behavior it is a reference variable to materialProperties[8].

◆ C

Matrix6d Marmot::Materials::LinearElastic::C
protected

Material stiffness tensor.

C represents the materials stiffness tensor in voigt notation. It is calculated by the functions implemented in MarmotElasticity.h .


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