280 {
282
287
288
290
291
292 const size_t nb_gauss_pts = getGaussPts().size2();
293
294
297
298
303 const double two_o_three = 2. / 3.;
304 const double one_o_three = 1. / 3.;
307 for (auto gg = 0; gg != nb_gauss_pts; ++gg) {
308
309
310
311 t_P(
i,
j) = bulk_mod * (t_det - 1.) * t_det * t_inv_F(
j,
i);
312
314 shear_mod * pow(t_det, two_o_three) *
315 (t_F(
i,
j) - one_o_three * (t_F(
l,
k) * t_F(
l,
k)) * t_inv_F(
j,
i));
316
317 ++t_F;
318 ++t_P;
319 ++t_inv_F;
320 ++t_det;
321 }
322
324 }
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
FTensor::Tensor2< FTensor::PackPtr< double *, 1 >, Tensor_Dim1, Tensor_Dim2 > getFTensor2FromMat(MatrixDouble &data)
Get tensor rank 2 (matrix) form data matrix.
static auto getFTensor0FromVec(ublas::vector< T, A > &data)
Get tensor rank 0 (scalar) form data vector.