30 #ifndef OOMPH_TIME_HARMONIC_ELASTICITY_TENSOR_HEADER
31 #define OOMPH_TIME_HARMONIC_ELASTICITY_TENSOR_HEADER
35 #include <oomph-lib-config.h>
38 #include "../generic/oomph_utilities.h"
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
166 double lambda =
E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu));
167 double mu =
E / (2.0 * (1.0 + nu));
182 double lambda =
E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu));
183 double mu =
E / (2.0 * (1.0 + nu));
196 double lambda =
E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu));
197 double mu =
E / (2.0 * (1.0 + nu));
213 C[1] = lambda + 2.0 * mu;
An OomphLibError object which should be thrown when an run-time error is encountered....
A base class that represents the fourth-rank elasticity tensor defined such that.
TimeHarmonicElasticityTensor()
Empty Constructor.
virtual double independent_component(const unsigned &i) const
Member function that returns the i-th independent component of the elasticity tensor.
static const unsigned Index[3][3][3][3]
Translation table from the four indices to the corresponding independent component.
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...
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).
virtual ~TimeHarmonicElasticityTensor()
Empty virtual Destructor.
An isotropic elasticity tensor defined in terms of Young's modulus and Poisson's ratio....
double independent_component(const unsigned &i) const
Overload the independent coefficient function.
static const unsigned StaticIndex[21]
Translation scheme for the isotropic elasticity tensor.
TimeHarmonicIsotropicElasticityTensor(const double &nu)
Constructor. Passing in the value of the Poisson's ratio. Stresses and tractions in the governing equ...
void update_constitutive_parameters(const double &nu, const double &E=1.0)
Update parameters: Specify values of the Poisson's ratio and (optionally) Young's modulus (interprete...
TimeHarmonicIsotropicElasticityTensor(const double &nu, const double &E)
Constructor. Passing in the values of the Poisson's ratio and Young's modulus (interpreted as the rat...
void set_lame_coefficients(const double &lambda, const double &mu)
//////////////////////////////////////////////////////////////////// ////////////////////////////////...