27 if (
_xfem->has_secondary_cut())
32 for (std::list<std::pair<const Elem *, const Elem *>>::const_iterator it =
_elem_pairs->begin();
36 const Elem * elem1 = it->first;
37 const Elem * elem2 = it->second;
39 std::vector<Point> intersectionPoints1;
41 std::vector<Point> q_points1;
42 std::vector<Real> weights1;
44 unsigned int plane_id = 0;
46 _xfem->getXFEMIntersectionInfo(
49 if (intersectionPoints1.size() == 2)
50 _xfem->getXFEMqRuleOnLine(intersectionPoints1, q_points1, weights1);
51 else if (intersectionPoints1.size() > 2)
52 _xfem->getXFEMqRuleOnSurface(intersectionPoints1, q_points1, weights1);
57 elem1, elem2, q_points1, q_points1, weights1, weights1, normal1, -normal1);
59 std::pair<std::pair<const Elem *, const Elem *>,
ElementPairInfo>(*it, new_elem_info));
63 std::vector<Point> intersectionPoints2;
65 std::vector<Point> q_points2;
66 std::vector<Real> weights2;
68 _xfem->getXFEMIntersectionInfo(
72 std::reverse(std::begin(intersectionPoints2), std::end(intersectionPoints2));
74 if (intersectionPoints2.size() == 2)
75 _xfem->getXFEMqRuleOnLine(intersectionPoints2, q_points2, weights2);
76 else if (intersectionPoints2.size() > 2)
77 _xfem->getXFEMqRuleOnSurface(intersectionPoints2, q_points2, weights2);
80 elem1, elem2, q_points1, q_points2, weights1, weights2, normal1, normal2);
82 std::pair<std::pair<const Elem *, const Elem *>,
ElementPairInfo>(*it, new_elem_info));
const ElementPairList * _elem_pairs
std::shared_ptr< XFEM > _xfem
std::map< std::pair< const Elem *, const Elem *>, ElementPairInfo > _element_pair_info