Chaste  Release::2017.1
AbstractIsotropicIncompressibleMaterialLaw< DIM > Class Template Referenceabstract

#include <AbstractIsotropicIncompressibleMaterialLaw.hpp>

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

Public Member Functions

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 ()
 
template<>
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 ()
 

Protected Member Functions

virtual double Get_dW_dI1 (double I1, double I2)=0
 
virtual double Get_dW_dI2 (double I1, double I2)=0
 
virtual double Get_d2W_dI1 (double I1, double I2)=0
 
virtual double Get_d2W_dI2 (double I1, double I2)=0
 
virtual double Get_d2W_dI1I2 (double I1, double I2)=0
 
- 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)
 

Additional Inherited Members

- Protected Attributes inherited from AbstractMaterialLaw< DIM >
c_matrix< double, DIM, DIM > * mpChangeOfBasisMatrix
 

Detailed Description

template<unsigned DIM>
class AbstractIsotropicIncompressibleMaterialLaw< DIM >

AbstractIsotropicIncompressibleMaterialLaw

An isotropic incompressible hyperelastic material law for finite elastiticy

The law is given by a strain energy function W(I1,I2,I3), where I_i are the principal invariants of C, the Lagrangian deformation tensor. (I1=trace(C), I2=trace(C)^2-trace(C^2), I3=det(C)). Since it is incompressible, the full strain energy has the form W^{full} = W(I_1,I_2) - p/2 C^{-1}

Note: only dimension equals 2 or 3 should be permitted.

Definition at line 55 of file AbstractIsotropicIncompressibleMaterialLaw.hpp.

Constructor & Destructor Documentation

Destructor.

Definition at line 39 of file AbstractIsotropicIncompressibleMaterialLaw.cpp.

Member Function Documentation

template<unsigned DIM>
void AbstractIsotropicIncompressibleMaterialLaw< 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.

This is the implemtation for an isotropic material law, so the stress etc is computed by calling methods returning dW/dI1, dW/dI2 etc.

Implements AbstractMaterialLaw< DIM >.

Definition at line 44 of file AbstractIsotropicIncompressibleMaterialLaw.cpp.

References SecondInvariant(), and Trace().

template<unsigned DIM>
virtual double AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_d2W_dI1 ( double  I1,
double  I2 
)
protectedpure 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

Implemented in MooneyRivlinMaterialLaw< DIM >, PolynomialMaterialLaw3d, and ExponentialMaterialLaw< DIM >.

template<unsigned DIM>
virtual double AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_d2W_dI1I2 ( double  I1,
double  I2 
)
protectedpure 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

Implemented in MooneyRivlinMaterialLaw< DIM >, PolynomialMaterialLaw3d, and ExponentialMaterialLaw< DIM >.

template<unsigned DIM>
virtual double AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_d2W_dI2 ( double  I1,
double  I2 
)
protectedpure 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

Implemented in MooneyRivlinMaterialLaw< DIM >, PolynomialMaterialLaw3d, and ExponentialMaterialLaw< DIM >.

template<unsigned DIM>
virtual double AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_dW_dI1 ( double  I1,
double  I2 
)
protectedpure 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

Implemented in MooneyRivlinMaterialLaw< DIM >, PolynomialMaterialLaw3d, and ExponentialMaterialLaw< DIM >.

Referenced by AbstractIsotropicIncompressibleMaterialLaw< 3 >::GetZeroStrainPressure().

template<unsigned DIM>
virtual double AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_dW_dI2 ( double  I1,
double  I2 
)
protectedpure 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

Implemented in MooneyRivlinMaterialLaw< DIM >, PolynomialMaterialLaw3d, and ExponentialMaterialLaw< DIM >.

Referenced by AbstractIsotropicIncompressibleMaterialLaw< 3 >::GetZeroStrainPressure().

template<>
double AbstractIsotropicIncompressibleMaterialLaw< 2 >::GetZeroStrainPressure ( )
virtual
Returns
the pressure corresponding to zero stress given zero strain.

Implements AbstractIncompressibleMaterialLaw< DIM >.

Definition at line 137 of file AbstractIsotropicIncompressibleMaterialLaw.cpp.

template<unsigned DIM>
double AbstractIsotropicIncompressibleMaterialLaw< DIM >::GetZeroStrainPressure ( )
virtual
Returns
the pressure corresponding to E=0, ie corresponding to C=identity

Since T = 2*Get_dW_dI1 identity + 4*Get_dW_dI2 (I1*identity - C) - p inverse(C), this is equal to 2*Get_dW_dI1(3,3) + 4*Get_dW_dI2(3,3) in 3D

Implements AbstractIncompressibleMaterialLaw< DIM >.


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