8 #ifndef COMMON_INTERSECTIONS_PARALLEL_INTERSECTION_TOOLS_H_
9 #define COMMON_INTERSECTIONS_PARALLEL_INTERSECTION_TOOLS_H_
101 std::vector<ExactPoint_3> & elem_C_points,
102 std::vector<std::vector<unsigned int> > & elem_C_tetras,
103 std::vector<std::vector<unsigned int> > & elem_C_triangles,
104 std::vector<ExactPoint_3> & elem_D_points,
105 std::vector<std::vector<unsigned int> > & elem_D_tetras,
106 std::vector<std::vector<unsigned int> > & elem_D_triangles);
114 Intersection_Tools(
const libMesh::Elem * elem_C,
double Min_Inter_Volume = 1E-21,
bool bDoPerf_log =
false) :
115 m_Min_Inter_Volume { Min_Inter_Volume },
116 MASTER_bPerfLog_intersection_tools {bDoPerf_log},
117 m_perf_log { libMesh::PerfLog(
"Intersection tools", MASTER_bPerfLog_intersection_tools) }
119 m_exact_points_A.resize(8);
120 m_exact_points_B.resize(8);
121 m_exact_points_C.resize(8);
123 m_dummyPoly.reserve(8,18,12);
129 m_elem_C_tetrahedrons = NULL;
130 m_elem_C_triangles = NULL;
136 m_Min_Inter_Volume { Min_Inter_Volume },
137 MASTER_bPerfLog_intersection_tools {bDoPerf_log},
138 m_perf_log { libMesh::PerfLog(
"Intersection tools", MASTER_bPerfLog_intersection_tools) }
140 m_exact_points_A.resize(8);
141 m_exact_points_B.resize(8);
142 m_exact_points_C.resize(8);
144 m_dummyPoly.reserve(8,18,12);
146 m_nef_C.clear(Nef_Polyhedron::EMPTY);
150 m_elem_C_tetrahedrons = NULL;
151 m_elem_C_triangles = NULL;
163 std::unique_ptr<libMesh::PointLocatorBase> & point_locator,
164 bool bGuaranteeQueryIsInMesh =
false);
170 std::unique_ptr<libMesh::PointLocatorBase> & point_locator,
171 std::set<unsigned int> & Intersecting_elems);
178 const libMesh::Elem * elem_B);
183 const libMesh::Elem * elem_B,
184 std::set<Point_3> & points_out,
185 bool bCreateNewNefForA =
true,
186 bool bConvertPoints =
true,
187 bool bTestNeeded =
true);
195 const libMesh::Elem * elem_B,
196 bool bCreateNewNefForA =
true);
206 const libMesh::Elem * elem_B,
207 std::set<libMesh::Point> & points_out,
208 bool bCreateNewNefForA =
true,
209 bool bConvertPoints =
true,
210 bool bTestNeeded =
false);
219 std::vector<ExactPoint_3> & points_output);
224 std::vector<ExactPoint_3>::const_iterator it_end,
CGAL::Polyhedron_3< ExactKernel > ExactPolyhedron
ExactKernel::Triangle_3 ExactTriangle_3
CGAL::Cartesian_converter< ExactKernel, Kernel > ExactKernel_to_Kernel
CGAL::Nef_polyhedron_3< ExactKernel, CGAL::SNC_indexed_items > Nef_Polyhedron
CGAL::Tetrahedron_3< ExactKernel > ExactTetrahedron
CGAL::Cartesian_converter< Kernel, ExactKernel > Kernel_to_ExactKernel