Chaste  Release::2018.1
PolynomialMaterialLaw3d Class Reference

#include <PolynomialMaterialLaw3d.hpp>

+ Inheritance diagram for PolynomialMaterialLaw3d:
+ Collaboration diagram for PolynomialMaterialLaw3d:

Public Member Functions

double Get_dW_dI1 (double I1, double I2)
 
double Get_dW_dI2 (double I1, double I2)
 
double Get_d2W_dI1 (double I1, double I2)
 
double Get_d2W_dI2 (double I1, double I2)
 
double Get_d2W_dI1I2 (double I1, double I2)
 
double GetAlpha (unsigned i, unsigned j)
 
 PolynomialMaterialLaw3d (unsigned n, std::vector< std::vector< double > > alpha)
 
- Public Member Functions inherited from AbstractIsotropicIncompressibleMaterialLaw< 3 >
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)
 
virtual ~AbstractIsotropicIncompressibleMaterialLaw ()
 
double GetZeroStrainPressure ()
 
- Public Member Functions inherited from AbstractIncompressibleMaterialLaw< DIM >
 AbstractIncompressibleMaterialLaw ()
 
virtual ~AbstractIncompressibleMaterialLaw ()
 
- 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 ()
 

Static Public Member Functions

static std::vector
< std::vector< double > > 
GetZeroedAlpha (unsigned n)
 

Private Attributes

unsigned mN
 
std::vector< std::vector
< double > > 
mAlpha
 

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

PolynomialMaterialLaw3d

An incompressible, isotropic, hyperelastic material law with a polynomial form

W(I_1,I_2) = Sigma_{0<p+q<=N} alpha_{pq} (I_1-3)^p (I_2-3)^q - (pressure/2) C^{-1}

For example, if N=1, this reduces to the Mooney Rivlin law W(I_1,I_2) = alpha_{10} (I_1-3) + alpha_{01} (I_2-3) - (pressure/2) C^{-1} ie the matrix alpha has the form [ 0 c1 ] [ c2 0 ] where c1 and c2 is the usual notation for the Mooney-Rivlin constants

The polynomial is specified by passing in N and the matrix (actually a std::vector of std::vector<double>s) alpha. alpha should be of size N+1 by N+1, with the bottom right hand block (ie the components such that p+q>N) all zero. alpha[0][0] should really also be 0, but, being since alpha[0][0] (I1_3)^0 (I2-3)^0 is a constant and disappears when the strain energy W is differentiated to obtain the stress, it is not used. An exception is thrown if alpha[p][q]!=0 for p+q > N though.

Definition at line 64 of file PolynomialMaterialLaw3d.hpp.

Constructor & Destructor Documentation

PolynomialMaterialLaw3d::PolynomialMaterialLaw3d ( unsigned  n,
std::vector< std::vector< double > >  alpha 
)

Constructor.

Parameters
nthe parameter n
alphathe matrix of parameters alpha

Definition at line 130 of file PolynomialMaterialLaw3d.cpp.

References EXCEPTION, mAlpha, and mN.

Member Function Documentation

double PolynomialMaterialLaw3d::Get_d2W_dI1 ( double  I1,
double  I2 
)
virtual
Returns
the second derivative d^2W/dI1^2.
Todo:
The name of this method should not include underscores.
Parameters
I1first principal invariant of C
I2second principal invariant of C

Implements AbstractIsotropicIncompressibleMaterialLaw< 3 >.

Definition at line 71 of file PolynomialMaterialLaw3d.cpp.

References mAlpha, and mN.

double PolynomialMaterialLaw3d::Get_d2W_dI1I2 ( double  I1,
double  I2 
)
virtual
Returns
the second derivative d^2W/dI1dI2.
Todo:
The name of this method should not include underscores.
Parameters
I1first principal invariant of C
I2second principal invariant of C

Implements AbstractIsotropicIncompressibleMaterialLaw< 3 >.

Definition at line 105 of file PolynomialMaterialLaw3d.cpp.

References mAlpha, and mN.

double PolynomialMaterialLaw3d::Get_d2W_dI2 ( double  I1,
double  I2 
)
virtual
Returns
the second derivative d^2W/dI2^2.
Todo:
The name of this method should not include underscores.
Parameters
I1first principal invariant of C
I2second principal invariant of C

Implements AbstractIsotropicIncompressibleMaterialLaw< 3 >.

Definition at line 88 of file PolynomialMaterialLaw3d.cpp.

References mAlpha, and mN.

double PolynomialMaterialLaw3d::Get_dW_dI1 ( double  I1,
double  I2 
)
virtual
Returns
the first derivative dW/dI1.
Todo:
The name of this method should not include underscores.
Parameters
I1first principal invariant of C
I2second principal invariant of C

Implements AbstractIsotropicIncompressibleMaterialLaw< 3 >.

Definition at line 38 of file PolynomialMaterialLaw3d.cpp.

References mAlpha, and mN.

double PolynomialMaterialLaw3d::Get_dW_dI2 ( double  I1,
double  I2 
)
virtual
Returns
the first derivative dW/dI2.
Todo:
The name of this method should not include underscores.
Parameters
I1first principal invariant of C
I2second principal invariant of C

Implements AbstractIsotropicIncompressibleMaterialLaw< 3 >.

Definition at line 55 of file PolynomialMaterialLaw3d.cpp.

References mAlpha, and mN.

double PolynomialMaterialLaw3d::GetAlpha ( unsigned  i,
unsigned  j 
)
Returns
the parameter alpha_{ij}.
Parameters
iindex i
jindex j

Definition at line 122 of file PolynomialMaterialLaw3d.cpp.

References mAlpha, and mN.

std::vector< std::vector< double > > PolynomialMaterialLaw3d::GetZeroedAlpha ( unsigned  n)
static

Resize the matrix alpha to be of size (n+1)*(n+1) and zero all entries.

Parameters
nthe parameter n
Returns
the matrix alpha

Definition at line 159 of file PolynomialMaterialLaw3d.cpp.

Member Data Documentation

std::vector< std::vector<double> > PolynomialMaterialLaw3d::mAlpha
private

Matrix of parameters alpha.

Definition at line 72 of file PolynomialMaterialLaw3d.hpp.

Referenced by Get_d2W_dI1(), Get_d2W_dI1I2(), Get_d2W_dI2(), Get_dW_dI1(), Get_dW_dI2(), GetAlpha(), and PolynomialMaterialLaw3d().

unsigned PolynomialMaterialLaw3d::mN
private

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