Flow123d  master-469ee9f
Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
ComputeIntersection< 2, 3 > Class Reference

Class for 2D-2D intersections. More...

#include <compute_intersection.hh>

Collaboration diagram for ComputeIntersection< 2, 3 >:
Collaboration graph
[legend]

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< IPAux12IP12s_
 
std::vector< IPAux23IP23_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_
 

Detailed Description

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.

Member Typedef Documentation

◆ FacePair

typedef std::array<uint, 2> ComputeIntersection< 2, 3 >::FacePair
private

Definition at line 512 of file compute_intersection.hh.

◆ IPAux12

Definition at line 467 of file compute_intersection.hh.

◆ IPAux13

Definition at line 468 of file compute_intersection.hh.

◆ IPAux23

Definition at line 469 of file compute_intersection.hh.

Constructor & Destructor Documentation

◆ ComputeIntersection() [1/2]

Default constructor, creates empty object. Resizes vectors for Plucker coordinates and products.

Definition at line 988 of file compute_intersection.cc.

◆ ComputeIntersection() [2/2]

ComputeIntersection< 2, 3 >::ComputeIntersection ( ElementAccessor< 3 >  triangle,
ElementAccessor< 3 >  tetrahedron 
)

Constructor, sets both triangle objects. It allocates memory, computes plucker coordinates and products.

Parameters
triangleintersecting triangle object
tetrahedronintersecting tetrahedron object

Definition at line 1002 of file compute_intersection.cc.

◆ ~ComputeIntersection()

Definition at line 1037 of file compute_intersection.cc.

Member Function Documentation

◆ _on_faces()

std::vector< std::vector< arma::uvec > > ComputeIntersection< 2, 3 >::_on_faces ( )
private

Definition at line 1465 of file compute_intersection.cc.

◆ add_ip()

unsigned int ComputeIntersection< 2, 3 >::add_ip ( const IPAux23 ip)
inlineprivate

Add raw intersection point.

Definition at line 559 of file compute_intersection.hh.

◆ compute()

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.

Parameters
intersectionfinal 2D-3D intersection object (output) It is then used further in prolongation decision routines.
Returns
number of intersection points found

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.

Here is the caller graph for this function:

◆ edge_faces()

auto ComputeIntersection< 2, 3 >::edge_faces ( uint  i_edge) -> FacePair
private

Definition at line 1373 of file compute_intersection.cc.

◆ have_backlink()

bool ComputeIntersection< 2, 3 >::have_backlink ( uint  i_obj)
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.

◆ init()

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.

Here is the caller graph for this function:

◆ print_plucker_coordinates()

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.

◆ print_plucker_coordinates_tree()

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.

◆ set_links()

void ComputeIntersection< 2, 3 >::set_links ( uint  obj_before_ip,
uint  ip_idx,
uint  obj_after_ip 
)
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.

◆ vertex_faces()

auto ComputeIntersection< 2, 3 >::vertex_faces ( uint  i_vtx) -> FacePair
private

Definition at line 1386 of file compute_intersection.cc.

Member Data Documentation

◆ CI12

ComputeIntersection<1,2> ComputeIntersection< 2, 3 >::CI12[6]
private

Compute 1D-2D intersection objects [6].

Definition at line 534 of file compute_intersection.hh.

◆ CI13

ComputeIntersection<1,3> ComputeIntersection< 2, 3 >::CI13[3]
private

Compute 1D-3D intersection objects [3].

Definition at line 532 of file compute_intersection.hh.

◆ intersection_

IntersectionAux<2,3>* ComputeIntersection< 2, 3 >::intersection_
private

Definition at line 575 of file compute_intersection.hh.

◆ IP12s_

std::vector<IPAux12> ComputeIntersection< 2, 3 >::IP12s_
private

Definition at line 520 of file compute_intersection.hh.

◆ IP23_list

std::vector<IPAux23> ComputeIntersection< 2, 3 >::IP23_list
private

Definition at line 521 of file compute_intersection.hh.

◆ IP_next

std::vector<unsigned int> ComputeIntersection< 2, 3 >::IP_next
private

Definition at line 538 of file compute_intersection.hh.

◆ no_idx

const unsigned int ComputeIntersection< 2, 3 >::no_idx
private

Definition at line 515 of file compute_intersection.hh.

◆ object_next

std::vector<unsigned int> ComputeIntersection< 2, 3 >::object_next
private

Definition at line 541 of file compute_intersection.hh.

◆ on_faces

const std::vector<std::vector<arma::uvec> > ComputeIntersection< 2, 3 >::on_faces
private

Definition at line 571 of file compute_intersection.hh.

◆ plucker_coordinates_tetrahedron

std::vector<Plucker *> ComputeIntersection< 2, 3 >::plucker_coordinates_tetrahedron
private

Vector of Plucker coordinates for tetrahedron edges.

Definition at line 526 of file compute_intersection.hh.

◆ plucker_coordinates_triangle_

std::vector<Plucker *> ComputeIntersection< 2, 3 >::plucker_coordinates_triangle_
private

Vector of Plucker coordinates for triangle side.

Definition at line 524 of file compute_intersection.hh.

◆ plucker_products_

std::vector<double *> ComputeIntersection< 2, 3 >::plucker_products_
private

Vector of pointers to Plucker products of triangle sides and tetrahedron edges.

Definition at line 529 of file compute_intersection.hh.

◆ s2_dim_starts

std::vector<unsigned int> ComputeIntersection< 2, 3 >::s2_dim_starts
private

Definition at line 518 of file compute_intersection.hh.

◆ s3_dim_starts

std::vector<unsigned int> ComputeIntersection< 2, 3 >::s3_dim_starts
private

Definition at line 517 of file compute_intersection.hh.

◆ S3_inverted

bool ComputeIntersection< 2, 3 >::S3_inverted
private

Definition at line 574 of file compute_intersection.hh.


The documentation for this class was generated from the following files: