Add high-order operators to the pipeline for 2D face elements.
867 {
869
870 if (!jac_ptr)
871 jac_ptr = boost::make_shared<MatrixDouble>();
872 if (!det_ptr)
873 det_ptr = boost::make_shared<VectorDouble>();
874 if (!inv_jac_ptr)
875 inv_jac_ptr = boost::make_shared<MatrixDouble>();
876
877 if (geom_field_name.empty()) {
878
879 pipeline.push_back(new OpCalculateHOJac<2>(jac_ptr));
880
881 } else {
882
883 pipeline.push_back(new OpCalculateHOCoords<2>(geom_field_name));
884 pipeline.push_back(
885 new OpCalculateVectorFieldGradient<2, 2>(geom_field_name, jac_ptr));
886 pipeline.push_back(new OpGetHONormalsOnFace<2>(geom_field_name));
887 }
888
889 pipeline.push_back(new OpInvertMatrix<2>(jac_ptr, det_ptr, inv_jac_ptr));
890 pipeline.push_back(new OpSetHOWeightsOnFace());
891
892 for (auto s : spaces) {
893 switch (s) {
895 break;
898 pipeline.push_back(new OpSetHOInvJacToScalarBases<2>(s, inv_jac_ptr));
899 break;
903 break;
905 pipeline.push_back(new OpMakeHdivFromHcurl());
908 break;
909 default:
912 }
913 }
914
916}
@ 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