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()
OpSetInvJacHcurlFaceImpl< 3 > OpSetInvJacHcurlFaceEmbeddedIn3DSpace
OpSetContravariantPiolaTransformOnFace2DImpl< 3 > OpSetContravariantPiolaTransformOnFace2DEmbeddedIn3DSpace
OpCalculateHOJacForFaceImpl< 3 > OpCalculateHOJacForFaceEmbeddedIn3DSpace