Chaste  Release::2018.1
CompressibleExponentialLaw< DIM > Class Template Reference

#include <CompressibleExponentialLaw.hpp>

+ Inheritance diagram for CompressibleExponentialLaw< DIM >:
+ Collaboration diagram for CompressibleExponentialLaw< DIM >:

Public Member Functions

 CompressibleExponentialLaw ()
 
void ComputeStressAndStressDerivative (c_matrix< double, DIM, DIM > &rC, c_matrix< double, DIM, DIM > &rInvC, double pressure, c_matrix< double, DIM, DIM > &rT, FourthOrderTensor< DIM, DIM, DIM, DIM > &rDTdE, bool computeDTdE)
 
double GetA ()
 
std::vector< std::vector
< double > > 
GetB ()
 
double GetCompressibilityParam ()
 
- Public Member Functions inherited from AbstractCompressibleMaterialLaw< DIM >
 AbstractCompressibleMaterialLaw ()
 
- Public Member Functions inherited from AbstractMaterialLaw< DIM >
 AbstractMaterialLaw ()
 
virtual ~AbstractMaterialLaw ()
 
void ComputeCauchyStress (c_matrix< double, DIM, DIM > &rF, double pressure, c_matrix< double, DIM, DIM > &rSigma)
 
void Compute1stPiolaKirchoffStress (c_matrix< double, DIM, DIM > &rF, double pressure, c_matrix< double, DIM, DIM > &rS)
 
void Compute2ndPiolaKirchoffStress (c_matrix< double, DIM, DIM > &rC, double pressure, c_matrix< double, DIM, DIM > &rT)
 
virtual void ScaleMaterialParameters (double scaleFactor)
 
void SetChangeOfBasisMatrix (c_matrix< double, DIM, DIM > &rChangeOfBasisMatrix)
 
void ResetToNoChangeOfBasisMatrix ()
 

Private Attributes

double mA
 
std::vector< std::vector
< double > > 
mB
 
double mCompressibilityParam
 
c_matrix< double, DIM, DIM > mIdentity
 

Friends

class TestCompressibleLawTransverselyIsotropic
 

Additional Inherited Members

- Protected Member Functions inherited from AbstractMaterialLaw< DIM >
void ComputeTransformedDeformationTensor (c_matrix< double, DIM, DIM > &rC, c_matrix< double, DIM, DIM > &rInvC, c_matrix< double, DIM, DIM > &rCTransformed, c_matrix< double, DIM, DIM > &rInvCTransformed)
 
void TransformStressAndStressDerivative (c_matrix< double, DIM, DIM > &rT, FourthOrderTensor< DIM, DIM, DIM, DIM > &rDTdE, bool transformDTdE)
 
- Protected Attributes inherited from AbstractMaterialLaw< DIM >
c_matrix< double, DIM, DIM > * mpChangeOfBasisMatrix
 

Detailed Description

template<unsigned DIM>
class CompressibleExponentialLaw< DIM >

The compressible exponential material law implemented in

Uysk, Effect of Laminar Orthotropic Myofiber Architecture on Regional Stress and Strain in the Canine Left Ventricle, Journal of Elasticity, 2000.

W = a[exp(Q)-1]/2 + c (J ln(J) - J + 1) where Q = sum b_{MN} E_{MN}^2

The exponential term is the same form as in the SchmidCosta law, although the parameters here are those given in the paper cited above, not the same as in the SchmidCosta class.

Note, by default, the fibre direction is assumed to be THE X-DIRECTION, and the sheet direction the Y-DIRECTION (ie sheets in the XY plane). Call SetChangeOfBasisMatrix() before ComputeStressAndStressDerivative(), with the matrix P = [fibre_vec, sheet_vec, normal_vec] if this is not the case.

Definition at line 59 of file CompressibleExponentialLaw.hpp.

Constructor & Destructor Documentation

template<unsigned DIM>
CompressibleExponentialLaw< DIM >::CompressibleExponentialLaw ( )

Constructor.

Definition at line 39 of file CompressibleExponentialLaw.cpp.

Member Function Documentation

template<unsigned DIM>
void CompressibleExponentialLaw< DIM >::ComputeStressAndStressDerivative ( c_matrix< double, DIM, DIM > &  rC,
c_matrix< double, DIM, DIM > &  rInvC,
double  pressure,
c_matrix< double, DIM, DIM > &  rT,
FourthOrderTensor< DIM, DIM, DIM, DIM > &  rDTdE,
bool  computeDTdE 
)
virtual

Compute the (2nd Piola Kirchoff) stress T and the stress derivative dT/dE for a given strain.

NOTE: the strain E is not expected to be passed in, instead the Lagrangian deformation tensor C is required (recall, E = 0.5(C-I))

dT/dE is a fourth-order tensor, where dT/dE[M][N][P][Q] = dT^{MN}/dE_{PQ}

Parameters
rCThe Lagrangian deformation tensor (F^T F)
rInvCThe inverse of C. Should be computed by the user. (Change this?)
pressurethe current pressure
rTthe stress will be returned in this parameter
rDTdEthe stress derivative will be returned in this parameter, assuming the final parameter is true
computeDTdEa boolean flag saying whether the stress derivative is required or not.
Todo:
#2193 This line is to trap for large deformations which lead to blow up in the exponential Uysk model

Implements AbstractMaterialLaw< DIM >.

Definition at line 79 of file CompressibleExponentialLaw.cpp.

References Determinant(), and FourthOrderTensor< DIM1, DIM2, DIM3, DIM4 >::Zero().

template<unsigned DIM>
double CompressibleExponentialLaw< DIM >::GetA ( )
inline
Returns
the parameter a

Definition at line 108 of file CompressibleExponentialLaw.hpp.

References CompressibleExponentialLaw< DIM >::mA.

template<unsigned DIM>
std::vector<std::vector<double> > CompressibleExponentialLaw< DIM >::GetB ( )
inline
Returns
the parameter b (the values which multiply the strains in Q)

Definition at line 114 of file CompressibleExponentialLaw.hpp.

References CompressibleExponentialLaw< DIM >::mB.

template<unsigned DIM>
double CompressibleExponentialLaw< DIM >::GetCompressibilityParam ( )
inline
Returns
compressibility parameter

Definition at line 120 of file CompressibleExponentialLaw.hpp.

References CompressibleExponentialLaw< DIM >::mCompressibilityParam.

Member Data Documentation

template<unsigned DIM>
double CompressibleExponentialLaw< DIM >::mA
private

Parameter a. (kPa)

Definition at line 66 of file CompressibleExponentialLaw.hpp.

Referenced by CompressibleExponentialLaw< DIM >::GetA().

template<unsigned DIM>
std::vector<std::vector<double> > CompressibleExponentialLaw< DIM >::mB
private

Matrix of parameters b (dimensionless).

Definition at line 69 of file CompressibleExponentialLaw.hpp.

Referenced by CompressibleExponentialLaw< DIM >::GetB().

template<unsigned DIM>
double CompressibleExponentialLaw< DIM >::mCompressibilityParam
private

Compressibility parameter, c in W = a[exp(Q)-1]/2 + c (J ln(J) - J + 1)

Definition at line 72 of file CompressibleExponentialLaw.hpp.

Referenced by CompressibleExponentialLaw< DIM >::GetCompressibilityParam().

template<unsigned DIM>
c_matrix<double,DIM,DIM> CompressibleExponentialLaw< DIM >::mIdentity
private

identity matrix.

Definition at line 75 of file CompressibleExponentialLaw.hpp.


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