281 {
283
288
289
291
292
293 const size_t nb_gauss_pts = getGaussPts().size2();
294
295
298
299
300 auto t_P = getFTensor2FromMat<SPACE_DIM, SPACE_DIM>(*
firstPiolaPtr);
301 auto t_F = getFTensor2FromMat<SPACE_DIM, SPACE_DIM>(*
defGradPtr);
302 auto t_inv_F = getFTensor2FromMat<SPACE_DIM, SPACE_DIM>(*
invDefGradPtr);
303 auto t_det = getFTensor0FromVec<1>(*
dEt);
304 const double two_o_three = 2. / 3.;
305 const double one_o_three = 1. / 3.;
308 for (auto gg = 0; gg != nb_gauss_pts; ++gg) {
309
310
311
312 t_P(
i,
j) = bulk_mod * (t_det - 1.) * t_det * t_inv_F(
j,
i);
313
315 shear_mod * pow(t_det, two_o_three) *
316 (t_F(
i,
j) - one_o_three * (t_F(
l,
k) * t_F(
l,
k)) * t_inv_F(
j,
i));
317
318 ++t_F;
319 ++t_P;
320 ++t_inv_F;
321 ++t_det;
322 }
323
325 }
#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