65                                                                         {
   67 
   68  auto &locMat = AssemblyDomainEleOp::locMat;
   69 
   70  const auto nb_integration_pts = row_data.getN().size1();
   71  const auto nb_row_base_functions = row_data.getN().size2();
   72  auto t_w = getFTensor0IntegrationWeight();
   73  auto t_row_diff_base = row_data.getFTensor1DiffN<
SPACE_DIM>();
 
   74  auto t_D = getFTensor4DdgFromMat<SPACE_DIM, SPACE_DIM, 0>(*
mDPtr);
 
   75 
   81 
   83  t_coeff_exp(
i, 
j) = 0;
 
   85    t_coeff_exp(d, d) = (*coeffExpansionPtr)[
d];
 
   86  }
   87 
   88  t_eigen_strain(
i, 
j) = (t_D(
i, 
j, 
k, 
l) * t_coeff_exp(
k, 
l));
 
   89 
   90  for (auto gg = 0; gg != nb_integration_pts; ++gg) {
   91 
   92    double alpha = getMeasure() * t_w;
   93    auto rr = 0;
   94    for (; rr != AssemblyDomainEleOp::nbRows / 
SPACE_DIM; ++rr) {
 
   95      auto t_mat = getFTensor1FromMat<SPACE_DIM, 1>(locMat, rr * 
SPACE_DIM);
 
   96      auto t_col_base = col_data.getFTensor0N(gg, 0);
   97      for (auto cc = 0; cc != AssemblyDomainEleOp::nbCols; cc++) {
   98 
  100            (t_row_diff_base(
j) * t_eigen_strain(
i, 
j)) * (t_col_base * alpha);
 
  101 
  102        ++t_mat;
  103        ++t_col_base;
  104      }
  105 
  106      ++t_row_diff_base;
  107    }
  108    for (; rr != nb_row_base_functions; ++rr)
  109      ++t_row_diff_base;
  110 
  111    ++t_w;
  112  }
  113 
  115}
#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