Flow123d
release_3.0.0-902-gf72c4b4
|
Class for 2D-2D intersections. More...
#include <compute_intersection.hh>
Public Types | |
typedef IntersectionPointAux< 1, 2 > | IPAux12 |
typedef IntersectionPointAux< 1, 3 > | IPAux13 |
typedef IntersectionPointAux< 2, 3 > | IPAux23 |
Public Member Functions | |
ComputeIntersection () | |
Default constructor, creates empty object. Resizes vectors for Plucker coordinates and products. More... | |
ComputeIntersection (ElementAccessor< 3 > triangle, ElementAccessor< 3 > tetrahedron, Mesh *mesh) | |
Constructor, sets both triangle objects. It allocates memory, computes plucker coordinates and products. More... | |
~ComputeIntersection () | |
void | init () |
Initializes lower dimensional objects. Sets correctly the pointers to Plucker coordinates and products. More... | |
void | compute (IntersectionAux< 2, 3 > &intersection) |
Computes intersection points for 2D-3D intersection. Computes lower dimensional CIs: 1) 3x triangle side vs tetrahedron 2) 6x tetrahedron edge vs triangle During cycle determine topology information and set computed flags accordingly. Finally, tracing algorithm is called to sort the intersection points to create convex polygon. More... | |
void | print_plucker_coordinates (std::ostream &os) |
Prints out the Plucker coordinates of triangle sides and tetrahedron edges. More... | |
void | print_plucker_coordinates_tree (std::ostream &os) |
Prints out the Plucker coordinates in a tree simplices. More... | |
Private Types | |
typedef std::array< uint, 2 > | FacePair |
Private Member Functions | |
bool | obj_have_back_link (unsigned int i_obj) |
auto | edge_faces (uint i_edge) -> FacePair |
auto | vertex_faces (uint i_vtx) -> FacePair |
bool | have_backlink (uint i_obj) |
void | set_links (uint obj_before_ip, uint ip_idx, uint obj_after_ip) |
std::vector< std::vector< arma::uvec > > | _on_faces () |
Private Attributes | |
const unsigned int | no_idx |
std::vector< unsigned int > | s3_dim_starts |
std::vector< unsigned int > | s2_dim_starts |
std::vector< IPAux12 > | IP12s_ |
std::vector< IPAux23 > | IP23_list |
std::vector< Plucker * > | plucker_coordinates_triangle_ |
Vector of Plucker coordinates for triangle side. More... | |
std::vector< Plucker * > | plucker_coordinates_tetrahedron |
Vector of Plucker coordinates for tetrahedron edges. More... | |
std::vector< double * > | plucker_products_ |
Vector of pointers to Plucker products of triangle sides and tetrahedron edges. More... | |
ComputeIntersection< 1, 3 > | CI13 [3] |
Compute 1D-3D intersection objects [3]. More... | |
ComputeIntersection< 1, 2 > | CI12 [6] |
Compute 1D-2D intersection objects [6]. More... | |
std::vector< unsigned int > | IP_next |
std::vector< unsigned int > | object_next |
const std::vector< std::vector< arma::uvec > > | on_faces |
IntersectionAux< 2, 3 > * | intersection_ |
Mesh * | mesh_ |
Class for 2D-2D intersections.
Computes the intersection of a triangle and a tetrahedron. Uses 3 ComputeIntersection<1,3> for triangle sides vs tetrahedron intersections. Uses 6 ComputeIntersection<1,2> for tetrahedron sides vs triangle intersections.
Definition at line 462 of file compute_intersection.hh.
|
private |
Definition at line 509 of file compute_intersection.hh.
typedef IntersectionPointAux<1,2> ComputeIntersection< 2, 3 >::IPAux12 |
Definition at line 464 of file compute_intersection.hh.
typedef IntersectionPointAux<1,3> ComputeIntersection< 2, 3 >::IPAux13 |
Definition at line 465 of file compute_intersection.hh.
typedef IntersectionPointAux<2,3> ComputeIntersection< 2, 3 >::IPAux23 |
Definition at line 466 of file compute_intersection.hh.
ComputeIntersection< 2, 3 >::ComputeIntersection | ( | ) |
Default constructor, creates empty object. Resizes vectors for Plucker coordinates and products.
Definition at line 985 of file compute_intersection.cc.
ComputeIntersection< 2, 3 >::ComputeIntersection | ( | ElementAccessor< 3 > | triangle, |
ElementAccessor< 3 > | tetrahedron, | ||
Mesh * | mesh | ||
) |
Constructor, sets both triangle objects. It allocates memory, computes plucker coordinates and products.
triangle | intersecting triangle object |
tetrahedron | intersecting tetrahedron object |
Definition at line 999 of file compute_intersection.cc.
ComputeIntersection< 2, 3 >::~ComputeIntersection | ( | ) |
Definition at line 1030 of file compute_intersection.cc.
|
private |
Definition at line 1440 of file compute_intersection.cc.
void ComputeIntersection< 2, 3 >::compute | ( | IntersectionAux< 2, 3 > & | intersection | ) |
Computes intersection points for 2D-3D intersection. Computes lower dimensional CIs: 1) 3x triangle side vs tetrahedron 2) 6x tetrahedron edge vs triangle During cycle determine topology information and set computed flags accordingly. Finally, tracing algorithm is called to sort the intersection points to create convex polygon.
intersection | final 2D-3D intersection object (output) It is then used further in prolongation decision routines. |
Definition at line 1116 of file compute_intersection.cc.
|
private |
Definition at line 1350 of file compute_intersection.cc.
|
inlineprivate |
Definition at line 1085 of file compute_intersection.cc.
void ComputeIntersection< 2, 3 >::init | ( | ) |
Initializes lower dimensional objects. Sets correctly the pointers to Plucker coordinates and products.
Definition at line 1056 of file compute_intersection.cc.
|
private |
void ComputeIntersection< 2, 3 >::print_plucker_coordinates | ( | std::ostream & | os | ) |
Prints out the Plucker coordinates of triangle sides and tetrahedron edges.
Definition at line 1472 of file compute_intersection.cc.
void ComputeIntersection< 2, 3 >::print_plucker_coordinates_tree | ( | std::ostream & | os | ) |
Prints out the Plucker coordinates in a tree simplices.
Definition at line 1491 of file compute_intersection.cc.
|
inlineprivate |
Set links: obj_before -> IP -> obj_after if obj_after have null successor, set obj_after -> IP (backlink)
Definition at line 1097 of file compute_intersection.cc.
|
private |
Definition at line 1362 of file compute_intersection.cc.
|
private |
Compute 1D-2D intersection objects [6].
Definition at line 531 of file compute_intersection.hh.
|
private |
Compute 1D-3D intersection objects [3].
Definition at line 529 of file compute_intersection.hh.
|
private |
Definition at line 555 of file compute_intersection.hh.
|
private |
Definition at line 517 of file compute_intersection.hh.
|
private |
Definition at line 518 of file compute_intersection.hh.
|
private |
Definition at line 535 of file compute_intersection.hh.
|
private |
Definition at line 556 of file compute_intersection.hh.
|
private |
Definition at line 512 of file compute_intersection.hh.
|
private |
Definition at line 538 of file compute_intersection.hh.
|
private |
Definition at line 552 of file compute_intersection.hh.
|
private |
Vector of Plucker coordinates for tetrahedron edges.
Definition at line 523 of file compute_intersection.hh.
|
private |
Vector of Plucker coordinates for triangle side.
Definition at line 521 of file compute_intersection.hh.
|
private |
Vector of pointers to Plucker products of triangle sides and tetrahedron edges.
Definition at line 526 of file compute_intersection.hh.
|
private |
Definition at line 515 of file compute_intersection.hh.
|
private |
Definition at line 514 of file compute_intersection.hh.