46                                    {
   48 
   53 
   54  const auto nb_integration_pts = DomainEleOp::getGaussPts().size2();
   55 
   58 
   60 
   61  auto t_grad = getFTensor2FromMat<DIM, DIM>(*(
matGradPtr));
 
   62 
   63  
   64  const double vol = DomainEleOp::getMeasure();
   65  
   66  auto t_w = DomainEleOp::getFTensor0IntegrationWeight();
   67  
   68  auto t_row_base = data.getFTensor1N<3>();
   69  
   70  auto t_flux = getFTensor1FromMat<DIM>(*
fluxVec);
 
   71  
   72  auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
   73 
   74  
   75  for (size_t gg = 0; gg != nb_integration_pts; ++gg) {
   76    
   77    const double alpha = t_w * vol;
   78 
   80    auto t_J = determinantTensor(t_F);     
   81 
   84        t_F(
m, 
N) * t_flux(
N) / t_J; 
 
   85 
   86    
   87    size_t rr = 0;
   88    for (; rr != DomainEleOp::nbRows; ++rr) {
   89      DomainEleOp::locF[rr] += t_K_inv_Q_over_J(
J) * alpha * (t_row_base(
J));
 
   90      ++t_row_base;
   91    }
   92    for (; rr < DomainEleOp::nbRowBaseFunctions; ++rr)
   93      ++t_row_base;
   94    ++t_w; 
   95    ++t_coords;
   96    ++t_flux;
   97    ++t_grad;
   98  };
  100}
#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< 'J', DIM1 > J
FTensor::Index< 'm', 3 > m