#include <PolynomialMaterialLaw3d.hpp>
Inherits AbstractIsotropicIncompressibleMaterialLaw< 3 >.
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) | |
Static Public Member Functions | |
static std::vector < std::vector< double > > | GetZeroedAlpha (unsigned n) |
Private Attributes | |
unsigned | mN |
std::vector< std::vector < double > > | mAlpha |
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 57 of file PolynomialMaterialLaw3d.hpp.
PolynomialMaterialLaw3d::PolynomialMaterialLaw3d | ( | unsigned | n, | |
std::vector< std::vector< double > > | alpha | |||
) |
Constructor.
n | the parameter n | |
alpha | the matrix of parameters alpha |
Definition at line 123 of file PolynomialMaterialLaw3d.cpp.
Get the second derivative d^2W/dI1^2.
I1 | first principal invariant of C | |
I2 | second principal invariant of C |
Implements AbstractIsotropicIncompressibleMaterialLaw< 3 >.
Definition at line 64 of file PolynomialMaterialLaw3d.cpp.
Get the second derivative d^2W/dI1dI2.
I1 | first principal invariant of C | |
I2 | second principal invariant of C |
Implements AbstractIsotropicIncompressibleMaterialLaw< 3 >.
Definition at line 98 of file PolynomialMaterialLaw3d.cpp.
Get the second derivative d^2W/dI2^2.
I1 | first principal invariant of C | |
I2 | second principal invariant of C |
Implements AbstractIsotropicIncompressibleMaterialLaw< 3 >.
Definition at line 81 of file PolynomialMaterialLaw3d.cpp.
Get the first derivative dW/dI1.
I1 | first principal invariant of C | |
I2 | second principal invariant of C |
Implements AbstractIsotropicIncompressibleMaterialLaw< 3 >.
Definition at line 31 of file PolynomialMaterialLaw3d.cpp.
Get the first derivative dW/dI2.
I1 | first principal invariant of C | |
I2 | second principal invariant of C |
Implements AbstractIsotropicIncompressibleMaterialLaw< 3 >.
Definition at line 48 of file PolynomialMaterialLaw3d.cpp.
Get the parameter alpha_{ij}.
i | index i | |
j | index j |
Definition at line 115 of file PolynomialMaterialLaw3d.cpp.
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.
n | the parameter n |
Definition at line 152 of file PolynomialMaterialLaw3d.cpp.
std::vector< std::vector<double> > PolynomialMaterialLaw3d::mAlpha [private] |
Matrix of parameters alpha.
Definition at line 65 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] |
Parameter N.
Definition at line 62 of file PolynomialMaterialLaw3d.hpp.
Referenced by Get_d2W_dI1(), Get_d2W_dI1I2(), Get_d2W_dI2(), Get_dW_dI1(), Get_dW_dI2(), GetAlpha(), and PolynomialMaterialLaw3d().