Add high-order operators to the pipeline for 2D face elements embedded in 3D. 
  836                                               {
  838 
  839  if (!jac_ptr)
  840    jac_ptr = boost::make_shared<MatrixDouble>();
  841  if (!det_ptr)
  842    det_ptr = boost::make_shared<VectorDouble>();
  843  if (!inv_jac_ptr)
  844    inv_jac_ptr = boost::make_shared<MatrixDouble>();
  845 
  846  if (geom_field_name.empty()) {
  847 
  848  } else {
  849 
  850    pipeline.push_back(new OpCalculateHOCoords<3>(geom_field_name));
  851    pipeline.push_back(new OpGetHONormalsOnFace<3>(geom_field_name));
  852  }
  853 
  855  pipeline.push_back(new OpInvertMatrix<3>(jac_ptr, det_ptr, inv_jac_ptr));
  856  pipeline.push_back(new OpSetHOWeightsOnFace());
  857 
  858  for (auto s : spaces) {
  859    switch (s) {
  861      break;
  863      pipeline.push_back(
  864          new OpSetInvJacH1ForFaceEmbeddedIn3DSpace(inv_jac_ptr));
  865      break;
  867      pipeline.push_back(new OpMakeHdivFromHcurl());
  868      pipeline.push_back(
  870              jac_ptr));
  871      pipeline.push_back(
  873      break;
  875      pipeline.push_back(
  876          new OpSetInvJacL2ForFaceEmbeddedIn3DSpace(inv_jac_ptr));
  877      break;
  878    default:
  881    }
  882  }
  883 
  885}
@ L2
field with C-1 continuity
@ HDIV
field with continuous normal traction
static const char *const FieldSpaceNames[]
#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()
OpSetContravariantPiolaTransformOnFace2DImpl< 3 > OpSetContravariantPiolaTransformOnFace2DEmbeddedIn3DSpace
OpSetInvJacHcurlFaceImpl< 3 > OpSetInvJacHcurlFaceEmbeddedIn3DSpace
OpCalculateHOJacForFaceImpl< 3 > OpCalculateHOJacForFaceEmbeddedIn3DSpace