20 #ifndef INSPECT_ELEMENTS_ALGORITHM_H_ 21 #define INSPECT_ELEMENTS_ALGORITHM_H_ 41 typedef std::pair<unsigned int, IntersectionLocalBase*>
ILpair;
43 template<
unsigned int dimA,
unsigned int dimB>
97 template<
unsigned int dim>
108 void compute_intersections(
const BIHTree& bih);
110 void compute_intersections_BIHtree(
const BIHTree& bih);
113 void compute_intersections_BB();
158 void compute_bounding_boxes();
160 void assert_same_intersection(
unsigned int comp_ele_idx,
unsigned int bulk_ele_idx);
163 bool intersection_exists(
unsigned int component_ele_idx,
unsigned int bulk_ele_idx);
174 void prolongate(
const Prolongation &pr);
176 template<
unsigned int ele_dim>
179 unsigned int ip_obj_idx);
184 unsigned int create_prolongation(
unsigned int bulk_ele_idx,
185 unsigned int component_ele_idx,
186 std::queue<Prolongation>& queue);
209 const unsigned int unset_comp = (
unsigned int)(-1);
222 void create_component_numbering();
268 void compute_intersections_2(
const BIHTree& bih);
273 void compute_intersections_1(
const BIHTree& bih);
286 #endif // INSPECT_ELEMENTS_ALGORITHM_H_ Bounding box in 3d ambient space.
IntersectionAlgorithmBase(Mesh *mesh)
std::vector< BoundingBox > elements_bb
Elements bounding boxes.
Common base for intersection object.
Mesh * mesh
Auxiliary function that translates ElementAccessor<3> to Simplex<simplex_dim>.
std::vector< unsigned int > last_slave_for_3D_elements
Auxiliary structure for prolongation process.
Class represents intersection of two elements.
unsigned int n_intersections_
Counter for intersection among elements.
unsigned int component_counter_
std::queue< Prolongation > component_queue_
Prolongation queue in the component mesh.
std::vector< unsigned int > component_idx_
Implements algorithm for finding 2D-2D intersections.
std::vector< IntersectionAux< 1, 2 > > intersectionaux_storage12_
Stores temporarily 1D-2D intersections.
std::vector< std::vector< IntersectionAux< dim, 3 > > > intersection_list_
Resulting vector of intersections.
const unsigned int undefined_elm_idx_
unsigned int dictionary_idx
Class for O(log N) lookup for intersections with a set of bounding boxes.
unsigned int component_elm_idx
std::vector< IntersectionAux< 2, 2 > > intersectionaux_storage22_
Stores temporarily 2D-2D intersections.
Class implements algorithm for dim-dimensional intersections with 3D elements.
std::pair< unsigned int, IntersectionLocalBase * > ILpair
First = element index, Second = pointer to intersection object.
BoundingBox mesh_3D_bb
Bounding box of all 3D elements.
Internal auxiliary class represents an intersection point of simplex<N> and simplex<M>.
Internal auxiliary class representing intersection object of simplex<dimA> and simplex<dimB>.
std::queue< Prolongation > bulk_queue_
Prolongation queue in the bulk mesh.
Implements algorithm for finding 1D-2D intersections.
std::vector< bool > closed_elements
Main class for computation of intersection of meshes of combined dimensions.