Material whose thermodynamic state depends only on the local strain. More...
#include <Material.h>
Public Types | |
| enum | ConstRespMode { COMPUTE_TANGENTS, SKIP_TANGENTS } |
for use with getConstitutiveResponse optional to compute the tangents or skip the computation More... | |
Public Member Functions | |
| SimpleMaterial (double rhoInput=0) | |
| virtual | ~SimpleMaterial () |
| SimpleMaterial (const SimpleMaterial &SM) | |
| Copy constructor. | |
| virtual SimpleMaterial * | clone () const =0 |
| virtual bool | getConstitutiveResponse (const std::vector< double > &strain, std::vector< double > &stress, std::vector< double > &tangents, const ConstRespMode &mode) const =0 |
| Returns the constitutive response of the material. | |
| double | getDensityInReference () const |
| Returns the (uniform) density of the reference configuration. | |
| bool | getLocalMaterialDensity (const std::vector< double > *strain, double &LocDensity) const |
| Returns the local density that is a function of only the strain. | |
| virtual const std::string | getMaterialName () const =0 |
| returns a string with the name of the material | |
| virtual double | getSoundSpeed (void) const =0 |
Static Public Member Functions | |
| static bool | consistencyTest (const SimpleMaterial &Smat) |
| Consistency test Checks that the tangets are in fact the derivatives of the stress with respect to the strain. | |
Static Public Attributes | |
| static const double | EPS = 1.e-6 |
| Some constants collected together here. | |
| static const double | PERT = 1.e-1 |
| static const double | DET_MIN = 1.e-10 |
| static const size_t | MAT_SIZE = 9 |
| static const size_t | NDF = 3 |
| static const size_t | NDM = 3 |
| static const double | I_MAT [MAT_SIZE] = { 1., 0., 0., 0., 1., 0., 0., 0., 1. } |
Private Attributes | |
| double | RefRho |
Material whose thermodynamic state depends only on the local strain.
Simple materials are those for which the stress depends only on the strain. Assumes a homogeneous density in the reference configuration.
Convention:
Any 3x3 second-order tensor
is represented by a 2x2 matrix with components ordered in an array
as
=A[i*3+J].
Any 3x3x3x3 fourth-order tensor
is represented by a 3x3x3x3 matrix with components ordered in an array
as
=C[i*27+J*9+k*3+l].
| SimpleMaterial::SimpleMaterial | ( | double | rhoInput = 0 |
) | [inline] |
| rhoInput | Density in reference configuration. If not provided, assumed to be zero. |
| virtual SimpleMaterial::~SimpleMaterial | ( | ) | [inline, virtual] |
| SimpleMaterial::SimpleMaterial | ( | const SimpleMaterial & | SM | ) | [inline] |
Copy constructor.
| SM | SimpleMaterial object to be copied. |
| virtual SimpleMaterial* SimpleMaterial::clone | ( | ) | const [pure virtual] |
Implemented in NeoHookean, LinearElasticBase, and IsotropicLinearElastic.
| bool SimpleMaterial::consistencyTest | ( | const SimpleMaterial & | Smat | ) | [static] |
Consistency test
Checks that the tangets are in fact the derivatives of the stress with respect to the strain.
| virtual bool SimpleMaterial::getConstitutiveResponse | ( | const std::vector< double > & | strain, | |
| std::vector< double > & | stress, | |||
| std::vector< double > & | tangents, | |||
| const ConstRespMode & | mode | |||
| ) | const [pure virtual] |
Returns the constitutive response of the material.
Given the local strain, it returns the local stress, and if requested, the constitutive tangents.
More precisely:
The strain is assumed to be a 3x3 second-order tensor
.
The stress is assumed to be a 3x3 second-order tensor
.
The constitutive tangents are a 3x3x3x3 fourth-order tensor
| strain | strain tensor, input | |
| stress | array where the stress tensor is returned | |
| tangents | array where the constitutive tangents are returned. If not provided, not computed. | |
| mode | tells whether to compute tangents vector or skip it |
If cannot compute the constitutive relation for some reason, for example a negative determinant in the strain, it returns false. If successful, returns true.
Implemented in NeoHookean, and LinearElasticBase.
| double SimpleMaterial::getDensityInReference | ( | ) | const [inline] |
Returns the (uniform) density of the reference configuration.
| bool SimpleMaterial::getLocalMaterialDensity | ( | const std::vector< double > * | strain, | |
| double & | LocDensity | |||
| ) | const [inline] |
Returns the local density that is a function of only the strain.
The density is computed as
where
is the deformation gradient (as described above).
Returns true if the computation went well and false otherwise.
| strain | Deformation gradient. | |
| LocDensity | Computed local density. |
| virtual const std::string SimpleMaterial::getMaterialName | ( | ) | const [pure virtual] |
returns a string with the name of the material
Implemented in NeoHookean, LinearElasticBase, and IsotropicLinearElastic.
| virtual double SimpleMaterial::getSoundSpeed | ( | void | ) | const [pure virtual] |
Implemented in NeoHookean, and IsotropicLinearElastic.
const double SimpleMaterial::DET_MIN = 1.e-10 [static] |
const double SimpleMaterial::EPS = 1.e-6 [static] |
Some constants collected together here.
const double SimpleMaterial::I_MAT = { 1., 0., 0., 0., 1., 0., 0., 0., 1. } [static] |
const size_t SimpleMaterial::MAT_SIZE = 9 [static] |
const size_t SimpleMaterial::NDF = 3 [static] |
const size_t SimpleMaterial::NDM = 3 [static] |
const double SimpleMaterial::PERT = 1.e-1 [static] |
double SimpleMaterial::RefRho [private] |
1.6.3