280                                                               {
  282    
  287 
  288    
  290 
  291    
  292    const size_t nb_gauss_pts = getGaussPts().size2();
  293 
  294    
  297 
  298    
  299    auto t_P = getFTensor2FromMat<SPACE_DIM, SPACE_DIM>(*
firstPiolaPtr);
 
  300    auto t_F = getFTensor2FromMat<SPACE_DIM, SPACE_DIM>(*
defGradPtr);
 
  301    auto t_inv_F = getFTensor2FromMat<SPACE_DIM, SPACE_DIM>(*
invDefGradPtr);
 
  302    auto t_det = getFTensor0FromVec<1>(*
dEt);
 
  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