AbstractIsotropicIncompressibleMaterialLaw< DIM > Class Template Reference

#include <AbstractIsotropicIncompressibleMaterialLaw.hpp>

Inheritance diagram for AbstractIsotropicIncompressibleMaterialLaw< DIM >:

Inheritance graph
[legend]
Collaboration diagram for AbstractIsotropicIncompressibleMaterialLaw< DIM >:

Collaboration graph
[legend]

List of all members.

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 ()
void SetChangeOfBasisMatrix (c_matrix< double, DIM, DIM > &rChangeOfBasisMatrix)
template<>
double GetZeroStrainPressure ()

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


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 48 of file AbstractIsotropicIncompressibleMaterialLaw.hpp.


Constructor & Destructor Documentation

template<unsigned DIM>
AbstractIsotropicIncompressibleMaterialLaw< DIM >::~AbstractIsotropicIncompressibleMaterialLaw (  )  [inline, virtual]

Destructor.

Definition at line 32 of file AbstractIsotropicIncompressibleMaterialLaw.cpp.


Member Function Documentation

template<unsigned DIM>
virtual double AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_dW_dI1 ( double  I1,
double  I2 
) [protected, pure virtual]

Get the first derivative dW/dI1.

Todo:
The name of this method should not include underscores.
Parameters:
I1 first principal invariant of C
I2 second principal invariant of C

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

Referenced by AbstractIsotropicIncompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative(), AbstractIsotropicIncompressibleMaterialLaw< 3 >::GetZeroStrainPressure(), and AbstractIsotropicIncompressibleMaterialLaw< DIM >::GetZeroStrainPressure().

template<unsigned DIM>
virtual double AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_dW_dI2 ( double  I1,
double  I2 
) [protected, pure virtual]

Get the first derivative dW/dI2.

Todo:
The name of this method should not include underscores.
Parameters:
I1 first principal invariant of C
I2 second principal invariant of C

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

Referenced by AbstractIsotropicIncompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative(), and AbstractIsotropicIncompressibleMaterialLaw< 3 >::GetZeroStrainPressure().

template<unsigned DIM>
virtual double AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_d2W_dI1 ( double  I1,
double  I2 
) [protected, pure virtual]

Get the second derivative d^2W/dI1^2.

Todo:
The name of this method should not include underscores.
Parameters:
I1 first principal invariant of C
I2 second principal invariant of C

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

Referenced by AbstractIsotropicIncompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative().

template<unsigned DIM>
virtual double AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_d2W_dI2 ( double  I1,
double  I2 
) [protected, pure virtual]

Get the second derivative d^2W/dI2^2.

Todo:
The name of this method should not include underscores.
Parameters:
I1 first principal invariant of C
I2 second principal invariant of C

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

Referenced by AbstractIsotropicIncompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative().

template<unsigned DIM>
virtual double AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_d2W_dI1I2 ( double  I1,
double  I2 
) [protected, pure virtual]

Get the second derivative d^2W/dI1dI2.

Todo:
The name of this method should not include underscores.
Parameters:
I1 first principal invariant of C
I2 second principal invariant of C

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

Referenced by AbstractIsotropicIncompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative().

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 
) [inline, 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:
rC The Lagrangian deformation tensor (F^T F)
rInvC The inverse of C. Should be computed by the user. (Change this?)
pressure the current pressure
rT the stress will be returned in this parameter
rDTdE the stress derivative will be returned in this parameter, assuming the final parameter is true
computeDTdE a 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 AbstractIncompressibleMaterialLaw< DIM >.

Definition at line 37 of file AbstractIsotropicIncompressibleMaterialLaw.cpp.

References AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_d2W_dI1(), AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_d2W_dI1I2(), AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_d2W_dI2(), AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_dW_dI1(), AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_dW_dI2(), SecondInvariant(), and Trace().

template<unsigned DIM>
double AbstractIsotropicIncompressibleMaterialLaw< DIM >::GetZeroStrainPressure (  )  [virtual]

Get 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 >.

template<unsigned DIM>
void AbstractIsotropicIncompressibleMaterialLaw< DIM >::SetChangeOfBasisMatrix ( c_matrix< double, DIM, DIM > &  rChangeOfBasisMatrix  )  [inline, virtual]

See documentation in AbstractIncompressibleMaterialLaw. Isotropic materials have no preferred directions so this method does not need to do anything.

Parameters:
rChangeOfBasisMatrix Change of basis matrix.

Implements AbstractIncompressibleMaterialLaw< DIM >.

Definition at line 152 of file AbstractIsotropicIncompressibleMaterialLaw.hpp.

template<>
double AbstractIsotropicIncompressibleMaterialLaw< 2 >::GetZeroStrainPressure (  )  [inline, virtual]

Get the pressure corresponding to E=0, ie C=identity

Implements AbstractIncompressibleMaterialLaw< DIM >.

Definition at line 132 of file AbstractIsotropicIncompressibleMaterialLaw.cpp.

References AbstractIsotropicIncompressibleMaterialLaw< DIM >::Get_dW_dI1().


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

Generated on Mon Nov 1 12:35:44 2010 for Chaste by  doxygen 1.5.5