652 {
654
655 if (!jac_ptr)
656 jac_ptr = boost::make_shared<MatrixDouble>();
657 if (!det_ptr)
658 det_ptr = boost::make_shared<VectorDouble>();
659 if (!inv_jac_ptr)
660 inv_jac_ptr = boost::make_shared<MatrixDouble>();
661
662 if (geom_field_name.empty()) {
663
664 pipeline.push_back(new OpCalculateHOJac<2>(jac_ptr));
665
666 } else {
667
668 pipeline.push_back(new OpCalculateHOCoords<2>(geom_field_name));
669 pipeline.push_back(
671 pipeline.push_back(new OpGetHONormalsOnFace<2>(geom_field_name));
672 }
673
674 pipeline.push_back(new OpInvertMatrix<2>(jac_ptr, det_ptr, inv_jac_ptr));
675 pipeline.push_back(new OpSetHOWeightsOnFace());
676
677 for (auto s : spaces) {
678 switch (s) {
680 break;
683 pipeline.push_back(new OpSetHOInvJacToScalarBases<2>(s, inv_jac_ptr));
684 break;
688 break;
690 pipeline.push_back(new OpMakeHdivFromHcurl());
693 break;
694 default:
697 }
698 }
699
701}
@ L2
field with C-1 continuity
@ HCURL
field with continuous tangents
@ 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< 2 > OpSetInvJacHcurlFace
OpSetCovariantPiolaTransformOnFace2DImpl< 2 > OpSetCovariantPiolaTransformOnFace2D
OpSetContravariantPiolaTransformOnFace2DImpl< 2 > OpSetContravariantPiolaTransformOnFace2D