Flow123d
master-7cbe9e2
|
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) | |
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 | |
auto | edge_faces (uint i_edge) -> FacePair |
auto | vertex_faces (uint i_vtx) -> FacePair |
bool | have_backlink (uint i_obj) |
unsigned int | add_ip (const IPAux23 &ip) |
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 |
bool | S3_inverted |
IntersectionAux< 2, 3 > * | intersection_ |
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 465 of file compute_intersection.hh.
|
private |
Definition at line 512 of file compute_intersection.hh.
typedef IntersectionPointAux<1,2> ComputeIntersection< 2, 3 >::IPAux12 |
Definition at line 467 of file compute_intersection.hh.
typedef IntersectionPointAux<1,3> ComputeIntersection< 2, 3 >::IPAux13 |
Definition at line 468 of file compute_intersection.hh.
typedef IntersectionPointAux<2,3> ComputeIntersection< 2, 3 >::IPAux23 |
Definition at line 469 of file compute_intersection.hh.
ComputeIntersection< 2, 3 >::ComputeIntersection | ( | ) |
Default constructor, creates empty object. Resizes vectors for Plucker coordinates and products.
Definition at line 988 of file compute_intersection.cc.
ComputeIntersection< 2, 3 >::ComputeIntersection | ( | ElementAccessor< 3 > | triangle, |
ElementAccessor< 3 > | tetrahedron | ||
) |
Constructor, sets both triangle objects. It allocates memory, computes plucker coordinates and products.
triangle | intersecting triangle object |
tetrahedron | intersecting tetrahedron object |
Definition at line 1002 of file compute_intersection.cc.
ComputeIntersection< 2, 3 >::~ComputeIntersection | ( | ) |
Definition at line 1037 of file compute_intersection.cc.
|
private |
Definition at line 1465 of file compute_intersection.cc.
|
inlineprivate |
Add raw intersection point.
Definition at line 559 of file compute_intersection.hh.
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. |
Compute triangle side - tetrahedron intersections IPs order is given by orientation of triangle sides, sign of IP results influenced by S3 inversion is irrelevant.
Definition at line 1130 of file compute_intersection.cc.
|
private |
Definition at line 1373 of file compute_intersection.cc.
|
inlineprivate |
Returns true if: i_obj -> IP -> i_obj Returns false if i_obj -> no_idx OR i_obj -> IP -> j_obj != i_obj
Backlink marks: end of the created chain
Definition at line 1092 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 1063 of file compute_intersection.cc.
void ComputeIntersection< 2, 3 >::print_plucker_coordinates | ( | std::ostream & | os | ) |
Prints out the Plucker coordinates of triangle sides and tetrahedron edges.
Definition at line 1502 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 1521 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 1104 of file compute_intersection.cc.
|
private |
Definition at line 1386 of file compute_intersection.cc.
|
private |
Compute 1D-2D intersection objects [6].
Definition at line 534 of file compute_intersection.hh.
|
private |
Compute 1D-3D intersection objects [3].
Definition at line 532 of file compute_intersection.hh.
|
private |
Definition at line 575 of file compute_intersection.hh.
|
private |
Definition at line 520 of file compute_intersection.hh.
|
private |
Definition at line 521 of file compute_intersection.hh.
|
private |
Definition at line 538 of file compute_intersection.hh.
|
private |
Definition at line 515 of file compute_intersection.hh.
|
private |
Definition at line 541 of file compute_intersection.hh.
|
private |
Definition at line 571 of file compute_intersection.hh.
|
private |
Vector of Plucker coordinates for tetrahedron edges.
Definition at line 526 of file compute_intersection.hh.
|
private |
Vector of Plucker coordinates for triangle side.
Definition at line 524 of file compute_intersection.hh.
|
private |
Vector of pointers to Plucker products of triangle sides and tetrahedron edges.
Definition at line 529 of file compute_intersection.hh.
|
private |
Definition at line 518 of file compute_intersection.hh.
|
private |
Definition at line 517 of file compute_intersection.hh.
|
private |
Definition at line 574 of file compute_intersection.hh.