#include <AbstractIncompressibleMaterialLaw.hpp>
Public Member Functions | |
virtual void | ComputeStressAndStressDerivative (c_matrix< double, DIM, DIM > &rC, c_matrix< double, DIM, DIM > &rInvC, double pressure, c_matrix< double, DIM, DIM > &rT, FourthOrderTensor< DIM > &rDTdE, bool computeDTdE)=0 |
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 double | GetZeroStrainPressure ()=0 |
virtual | ~AbstractIncompressibleMaterialLaw () |
virtual void | ScaleMaterialParameters (double scaleFactor) |
An incompressible hyperelastic material law for finite elastiticy
The law is given by a strain energy function W(E), where E is the strain, such that the stress T = dW/dE
Definition at line 48 of file AbstractIncompressibleMaterialLaw.hpp.
AbstractIncompressibleMaterialLaw< DIM >::~AbstractIncompressibleMaterialLaw | ( | ) | [inline, virtual] |
Destructor.
Definition at line 32 of file AbstractIncompressibleMaterialLaw.cpp.
virtual void AbstractIncompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative | ( | c_matrix< double, DIM, DIM > & | rC, | |
c_matrix< double, DIM, DIM > & | rInvC, | |||
double | pressure, | |||
c_matrix< double, DIM, DIM > & | rT, | |||
FourthOrderTensor< DIM > & | rDTdE, | |||
bool | computeDTdE | |||
) | [pure 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}
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. |
Implemented in AbstractIsotropicIncompressibleMaterialLaw< DIM >, PoleZeroMaterialLaw< DIM >, and AbstractIsotropicIncompressibleMaterialLaw< 3 >.
Referenced by NonlinearElasticityAssembler< DIM >::AssembleOnElement(), ImplicitCardiacMechanicsAssembler< DIM >::AssembleOnElement(), AbstractIncompressibleMaterialLaw< DIM >::Compute1stPiolaKirchoffStress(), AbstractIncompressibleMaterialLaw< DIM >::Compute2ndPiolaKirchoffStress(), and AbstractIncompressibleMaterialLaw< DIM >::ComputeCauchyStress().
void AbstractIncompressibleMaterialLaw< DIM >::ComputeCauchyStress | ( | c_matrix< double, DIM, DIM > & | rF, | |
double | pressure, | |||
c_matrix< double, DIM, DIM > & | rSigma | |||
) | [inline] |
Compute the Cauchy stress (the true stress), given the deformation gradient F and the pressure. The Cauchy stress is given by
sigma^{ij} = (1/detF) F^i_M T^{MN} F^j_N
where T is the 2nd Piola Kirchoff stress, dW/dE
rF | the deformation gradient | |
pressure | the pressure | |
rSigma | an empty matrix, which will be filled in with the Cauchy stress |
Definition at line 37 of file AbstractIncompressibleMaterialLaw.cpp.
References AbstractIncompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative().
void AbstractIncompressibleMaterialLaw< DIM >::Compute1stPiolaKirchoffStress | ( | c_matrix< double, DIM, DIM > & | rF, | |
double | pressure, | |||
c_matrix< double, DIM, DIM > & | rS | |||
) | [inline] |
Compute the 1st Piola Kirchoff stress, given the deformation gradient F and the pressure. The 1st Piola Kirchoff stress given by
S^{Mi} = T^{MN} F^i_M,
where T is the 2nd PK stress, dW/dE.
Note that this stress is not symmetric and the least useful of the three stresses.
rF | the deformation gradient | |
pressure | the pressure | |
rS | an empty matrix, which will be filled in with the stress |
Definition at line 73 of file AbstractIncompressibleMaterialLaw.cpp.
References AbstractIncompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative().
void AbstractIncompressibleMaterialLaw< DIM >::Compute2ndPiolaKirchoffStress | ( | c_matrix< double, DIM, DIM > & | rC, | |
double | pressure, | |||
c_matrix< double, DIM, DIM > & | rT | |||
) | [inline] |
Compute the 2nd Piola Kirchoff stress, given the deformation tensor C and the pressure. The 2nd Piola Kirchoff stress given by
T^{MN} = dW/dE_{MN} = 2dW/dC_{MN}
rC | the Lagrange deformation tensor (C=F^T F), *not* F, and *not* E | |
pressure | the pressure | |
rT | an empty matrix, which will be filled in with the stress |
Definition at line 90 of file AbstractIncompressibleMaterialLaw.cpp.
References AbstractIncompressibleMaterialLaw< DIM >::ComputeStressAndStressDerivative().
virtual double AbstractIncompressibleMaterialLaw< DIM >::GetZeroStrainPressure | ( | ) | [pure virtual] |
Get the pressure corresponding to E=0, ie C=identity
Implemented in AbstractIsotropicIncompressibleMaterialLaw< DIM >, PoleZeroMaterialLaw< DIM >, SchmidCostaExponentialLaw2d, AbstractIsotropicIncompressibleMaterialLaw< 3 >, and AbstractIsotropicIncompressibleMaterialLaw< DIM >.
void AbstractIncompressibleMaterialLaw< DIM >::ScaleMaterialParameters | ( | double | scaleFactor | ) | [inline, virtual] |
Set a scale factor by which (dimensional) material parameters are scaled. This method can be optionally implemented in the child class; if no implementation is made an exception is thrown. A scale factor may be used/needed to improve GMRES convergence. Note that is a material law is scaled like this any dimensionally equivalent terms (eg gravity, tractions, active tensions) must also be scaled. Also, computed pressure will come out scaled.
scaleFactor | the scale factor |
Reimplemented in MooneyRivlinMaterialLaw< DIM >, and PoleZeroMaterialLaw< DIM >.
Definition at line 102 of file AbstractIncompressibleMaterialLaw.cpp.