847                                    {
  849 
  854  constexpr auto size_symm = (DIM * (DIM + 1)) / 2;
 
  856 
  857  const auto nb_integration_pts = AssemblyDomainEleOp::getGaussPts().size2();
  858  const auto nb_base_functions = data.getN().size2();
  859 
  860  auto t_res_flow = getFTensor2SymmetricFromMat<DIM>(
commonDataPtr->resFlow);
 
  861 
  863 
  864  auto next = [&]() { ++t_res_flow; };
  865 
  866  auto t_w = AssemblyDomainEleOp::getFTensor0IntegrationWeight();
  867  auto t_base = data.getFTensor0N();
  868  auto &nf = AssemblyDomainEleOp::locF;
  869  for (size_t gg = 0; gg != nb_integration_pts; ++gg) {
  870    double alpha = AssemblyDomainEleOp::getMeasure() * t_w;
  871    ++t_w;
  872 
  874    t_rhs(L) = alpha * (t_res_flow(
i, 
j) * t_L(
i, 
j, L));
 
  875    next();
  876 
  877    auto t_nf = getFTensor1FromArray<size_symm, size_symm>(nf);
  878    size_t bb = 0;
  879    for (; bb != AssemblyDomainEleOp::nbRows / 
size_symm; ++bb) {
 
  880      t_nf(L) += t_base * t_rhs(L);
  881      ++t_base;
  882      ++t_nf;
  883    }
  884    for (; bb < nb_base_functions; ++bb)
  885      ++t_base;
  886  }
  887 
  889}
#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
auto symm_L_tensor(FTensor::Number< DIM >)