30 #ifndef OOMPH_POROELASTICITY_TENSOR_HEADER
31 #define OOMPH_POROELASTICITY_TENSOR_HEADER
35 #include <oomph-lib-config.h>
38 #include "../generic/oomph_utilities.h"
54 class ElasticityTensor
58 static const unsigned Index[3][3][3][3];
76 const unsigned& l)
const
78 if ((
i > 2) || (j > 2) || (k > 2) || (l > 2))
80 std::ostringstream error_message;
83 error_message <<
"Range Error : Index 1 " <<
i
84 <<
" is not in the range (0,2)";
88 error_message <<
"Range Error : Index 2 " << j
89 <<
" is not in the range (0,2)";
94 error_message <<
"Range Error : Index 2 " << k
95 <<
" is not in the range (0,2)";
100 error_message <<
"Range Error : Index 4 " << l
101 <<
" is not in the range (0,2)";
106 OOMPH_CURRENT_FUNCTION,
107 OOMPH_EXCEPTION_LOCATION);
125 const unsigned& l)
const
145 class IsotropicElasticityTensor :
public ElasticityTensor
165 double lambda =
E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu));
166 double mu =
E / (2.0 * (1.0 + nu));
180 double lambda =
E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu));
181 double mu =
E / (2.0 * (1.0 + nu));
207 C[1] = lambda + 2.0 * mu;
248 double mu =
E / (2.0 * (1.0 + nu));
262 double lambda =
E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu));
263 double mu =
E / (2.0 * (1.0 + nu));
277 double lambda =
E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu));
278 double mu =
E / (2.0 * (1.0 + nu));
306 const double&
mu()
const
An isotropic elasticity tensor defined in terms of Young's modulus and Poisson's ratio....
static const unsigned StaticIndex[21]
Translation scheme for the deviatoric isotropic elasticity tensor.
DeviatoricIsotropicElasticityTensor(const double &nu)
Constructor. Passing in the value of the Poisson's ratio. Stresses and tractions in the governing equ...
void set_lame_coefficients(const double &lambda, const double &mu)
DeviatoricIsotropicElasticityTensor()
Constructor. For use with incompressibility. Requires no parameters since Poisson's ratio is fixed at...
DeviatoricIsotropicElasticityTensor(const double &nu, const double &E)
Constructor. Passing in the values of the Poisson's ratio and Young's modulus (interpreted as the rat...
const double & lambda() const
Accessor function for the first lame parameter.
const double & mu() const
Accessor function for the second lame parameter.
double independent_component(const unsigned &i) const
Overload the independent coefficient function.
DeviatoricIsotropicElasticityTensor(const Vector< double > &lame)
Constructur. Passing in the values of the two lame coefficients directly (interpreted as the ratios o...
A base class that represents the fourth-rank elasticity tensor defined such that.
virtual ~ElasticityTensor()
Empty virtual Destructor.
double operator()(const unsigned &i, const unsigned &j, const unsigned &k, const unsigned &l) const
Return the appropriate independent component via the index translation scheme (const version).
static const unsigned Index[3][3][3][3]
Translation table from the four indices to the corresponding independent component.
virtual double independent_component(const unsigned &i) const
Member function that returns the i-th independent component of the elasticity tensor.
ElasticityTensor()
Empty Constructor.
void range_check(const unsigned &i, const unsigned &j, const unsigned &k, const unsigned &l) const
Helper range checking function (Note that this only captures over-runs in 3D but errors are likely to...
IsotropicElasticityTensor(const double &nu, const double &E)
Constructor. Passing in the values of the Poisson's ratio and Young's modulus (interpreted as the rat...
IsotropicElasticityTensor(const Vector< double > &lame)
Constructur. Passing in the values of the two lame coefficients directly (interpreted as the ratios o...
void set_lame_coefficients(const double &lambda, const double &mu)
IsotropicElasticityTensor(const double &nu)
Constructor. Passing in the value of the Poisson's ratio. Stresses and tractions in the governing equ...
double independent_component(const unsigned &i) const
Overload the independent coefficient function.
static const unsigned StaticIndex[21]
Translation scheme for the isotropic elasticity tensor.
An OomphLibError object which should be thrown when an run-time error is encountered....
//////////////////////////////////////////////////////////////////// ////////////////////////////////...