Flow123d
JS_before_hm-2137-g84767e588
|
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 | |
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_ |
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 467 of file compute_intersection.hh.
|
private |
Definition at line 514 of file compute_intersection.hh.
typedef IntersectionPointAux<1,2> ComputeIntersection< 2, 3 >::IPAux12 |
Definition at line 469 of file compute_intersection.hh.
typedef IntersectionPointAux<1,3> ComputeIntersection< 2, 3 >::IPAux13 |
Definition at line 470 of file compute_intersection.hh.
typedef IntersectionPointAux<2,3> ComputeIntersection< 2, 3 >::IPAux23 |
Definition at line 471 of file compute_intersection.hh.
ComputeIntersection< 2, 3 >::ComputeIntersection | ( | ) |
Default constructor, creates empty object. Resizes vectors for Plucker coordinates and products.
Definition at line 991 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 1005 of file compute_intersection.cc.
ComputeIntersection< 2, 3 >::~ComputeIntersection | ( | ) |
Definition at line 1040 of file compute_intersection.cc.
|
private |
Definition at line 1469 of file compute_intersection.cc.
|
inlineprivate |
Add raw intersection point.
Definition at line 561 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 1133 of file compute_intersection.cc.
|
private |
Definition at line 1377 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 1095 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 1066 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 1506 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 1525 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 1107 of file compute_intersection.cc.
|
private |
Definition at line 1390 of file compute_intersection.cc.
|
private |
Compute 1D-2D intersection objects [6].
Definition at line 536 of file compute_intersection.hh.
|
private |
Compute 1D-3D intersection objects [3].
Definition at line 534 of file compute_intersection.hh.
|
private |
Definition at line 577 of file compute_intersection.hh.
|
private |
Definition at line 522 of file compute_intersection.hh.
|
private |
Definition at line 523 of file compute_intersection.hh.
|
private |
Definition at line 540 of file compute_intersection.hh.
|
private |
Definition at line 578 of file compute_intersection.hh.
|
private |
Definition at line 517 of file compute_intersection.hh.
|
private |
Definition at line 543 of file compute_intersection.hh.
|
private |
Definition at line 573 of file compute_intersection.hh.
|
private |
Vector of Plucker coordinates for tetrahedron edges.
Definition at line 528 of file compute_intersection.hh.
|
private |
Vector of Plucker coordinates for triangle side.
Definition at line 526 of file compute_intersection.hh.
|
private |
Vector of pointers to Plucker products of triangle sides and tetrahedron edges.
Definition at line 531 of file compute_intersection.hh.
|
private |
Definition at line 520 of file compute_intersection.hh.
|
private |
Definition at line 519 of file compute_intersection.hh.
|
private |
Definition at line 576 of file compute_intersection.hh.