85                                                            {
   87 
   88  if (
auto data_ptr = 
dataPtr.lock()) {
 
   89 
   90    const auto nb_eval_points = data_ptr->nbEvalPoints;
   91    const auto &shape_functions = data_ptr->shapeFunctions;
   92    const auto &eval_pointentity_handle = data_ptr->evalPointEntityHandle;
   93 
   94    if (auto fe_ptr = data_ptr->feMethodPtr.lock()) {
   95 
   96      auto &fe = static_cast<ForcesAndSourcesCore &>(*fe_ptr);
   97 
   98#ifndef NDEBUG
   99      if (fe_ptr.get() != fe_raw_ptr)
  101#endif
  102 
  103      const auto fe_ent = fe.numeredEntFiniteElementPtr->getEnt();
  105      const auto fe_dim = moab::CN::Dimension(fe_type);
  106 
  107      auto &gauss_pts = fe.gaussPts;
  108      int nb_gauss_pts;
  109 
  110      if (fe_dim == 3) {
  111        gauss_pts.resize(4, nb_eval_points, false);
  113            &shape_functions(0, 0), &shape_functions(0, 1),
  114            &shape_functions(0, 2), &shape_functions(0, 3)};
  116            &gauss_pts(0, 0), &gauss_pts(1, 0), &gauss_pts(2, 0)};
  117 
  118        nb_gauss_pts = 0;
  119        for (int nn = 0; nn != nb_eval_points; ++nn) {
  120          if (eval_pointentity_handle[nn] == fe_ent) {
  121            for (
const int i : {0, 1, 2}) {
 
  122              t_gauss_pts(
i) = t_shape(
i + 1);
 
  123            }
  124            gauss_pts(3, nb_gauss_pts) = nn;
  125            ++t_gauss_pts;
  126            ++nb_gauss_pts;
  127          }
  128          ++t_shape;
  129        }
  130        gauss_pts.resize(4, nb_gauss_pts, true);
  131      } else if (fe_dim == 2) {
  132        gauss_pts.resize(3, nb_eval_points, false);
  134            &shape_functions(0, 0), &shape_functions(0, 1),
  135            &shape_functions(0, 2)};
  137            &gauss_pts(0, 0), &gauss_pts(1, 0)};
  138        nb_gauss_pts = 0;
  139        for (int nn = 0; nn != nb_eval_points; ++nn) {
  140          if (eval_pointentity_handle[nn] == fe_ent) {
  141            for (
const int i : {0, 1}) {
 
  142              t_gauss_pts(
i) = t_shape(
i + 1);
 
  143            }
  144            gauss_pts(2, nb_gauss_pts) = nn;
  145            ++t_gauss_pts;
  146            ++nb_gauss_pts;
  147          }
  148          ++t_shape;
  149        }
  150        gauss_pts.resize(3, nb_gauss_pts, true);
  151      } else {
  153                "Dimension not implemented");
  154      }
  155 
  156#ifndef NDEBUG
  158          << "nbEvalOPoints / nbGau_sspt_s: " << nb_eval_points << " / "
  159          << nb_gauss_pts;
  160      MOFEM_LOG(
"SELF", Sev::noisy) << 
"gauss pts: " << gauss_pts;
 
  161#endif
  162 
  163    } else
  165              "Pointer to element does not exists");
  166 
  167  } else
  169            "Pointer to data does not exists");
  170 
  172}
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
@ MOFEM_DATA_INCONSISTENCY
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MOFEM_LOG(channel, severity)
Log.
FTensor::Index< 'i', SPACE_DIM > i
auto type_from_handle(const EntityHandle h)
get type from entity handle