29 #include "libmesh/tensor_value.h"
34 template <
typename StrainEnergy>
41 template <
typename StrainEnergy>
47 template <
typename StrainEnergy>
58 libMesh::Real I3 = (g_contra*G_cov).det();
60 libMesh::Real I1 = 0.0;
61 libMesh::Real I2 = 0.0;
62 for(
unsigned int i = 0; i < dim; i++ )
64 for(
unsigned int j = 0; j < dim; j++ )
66 I1 += g_contra(i,j)*G_cov(i,j);
67 I2 += G_contra(i,j)*g_cov(i,j);
73 libMesh::Real dWdI1 = _W.dI1(I1,I2,I3);
74 libMesh::Real dWdI2 = _W.dI2(I1,I2,I3);
75 libMesh::Real dWdI3 = _W.dI3(I1,I2,I3);
78 for(
unsigned int i = 0; i < dim; i++ )
80 for(
unsigned int j = 0; j < dim; j++ )
82 for(
unsigned int k = 0; k < dim; k++ )
84 for(
unsigned int l = 0; l < dim; l++ )
86 stress(i,j) += 2.0*dWdI1*g_contra(i,j)
87 + 2.0*dWdI2*(I1*g_contra(i,j) - g_contra(i,k)*g_contra(j,l)*G_cov(k,l))
88 + 2.0*dWdI3*G_contra(i,j);
97 template <
typename StrainEnergy>
106 libmesh_not_implemented();
110 template <
typename StrainEnergy>
116 libmesh_not_implemented();
void compute_stress_imp(unsigned int dim, const libMesh::TensorValue< libMesh::Real > &g_contra, const libMesh::TensorValue< libMesh::Real > &g_cov, const libMesh::TensorValue< libMesh::Real > &G_contra, const libMesh::TensorValue< libMesh::Real > &G_cov, libMesh::TensorValue< libMesh::Real > &stress)
virtual ~Hyperelasticity()
void compute_stress_and_elasticity_imp(unsigned int dim, const libMesh::TensorValue< libMesh::Real > &g_contra, const libMesh::TensorValue< libMesh::Real > &g_cov, const libMesh::TensorValue< libMesh::Real > &G_contra, const libMesh::TensorValue< libMesh::Real > &G_cov, libMesh::TensorValue< libMesh::Real > &stress, ElasticityTensor &C)
libMesh::Real compute_33_stress_imp(const libMesh::TensorValue< libMesh::Real > &g_contra, const libMesh::TensorValue< libMesh::Real > &g_cov, const libMesh::TensorValue< libMesh::Real > &G_contra, const libMesh::TensorValue< libMesh::Real > &G_cov)
Hyperelasticity(const GetPot &input)