Add high-order operators to the pipeline for 2D face elements embedded in 3D.
923 {
925
926 if (!jac_ptr)
927 jac_ptr = boost::make_shared<MatrixDouble>();
928 if (!det_ptr)
929 det_ptr = boost::make_shared<VectorDouble>();
930 if (!inv_jac_ptr)
931 inv_jac_ptr = boost::make_shared<MatrixDouble>();
932
933 if (geom_field_name.empty()) {
934
935 } else {
936
937 pipeline.push_back(new OpCalculateHOCoords<3>(geom_field_name));
938 pipeline.push_back(new OpGetHONormalsOnFace<3>(geom_field_name));
939 }
940
942 pipeline.push_back(new OpInvertMatrix<3>(jac_ptr, det_ptr, inv_jac_ptr));
943 pipeline.push_back(new OpSetHOWeightsOnFace());
944
945 for (auto s : spaces) {
946 switch (s) {
948 break;
950 pipeline.push_back(
951 new OpSetInvJacH1ForFaceEmbeddedIn3DSpace(inv_jac_ptr));
952 break;
954 pipeline.push_back(new OpMakeHdivFromHcurl());
955 pipeline.push_back(
957 jac_ptr));
958 pipeline.push_back(
960 break;
962 pipeline.push_back(
963 new OpSetInvJacL2ForFaceEmbeddedIn3DSpace(inv_jac_ptr));
964 break;
965 default:
968 }
969 }
970
972}
@ 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