Flow123d  JS_before_hm-1804-gf2ad740aa
Public Types | Public Member Functions | List of all members
ComputeIntersection< 2, 2 > Class Reference

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

#include <compute_intersection.hh>

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

Public Types

typedef IntersectionPointAux< 1, 2 > IPAux12
 
typedef IntersectionPointAux< 2, 2 > IPAux22
 

Public Member Functions

 ComputeIntersection ()
 Default constructor, creates empty object. Resizes vectors for Plucker coordinates and products. More...
 
 ComputeIntersection (ElementAccessor< 3 > triaA, ElementAccessor< 3 > triaB, 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...
 
unsigned int compute (IntersectionAux< 2, 2 > &intersection)
 Computes final 2D-2D intersection. Computes CIs (side vs triangle) in following order: [A0_B, A1_B, A2_B, B0_A, B1_A, B2_A]. During cycle determine topology information and set computed flags accordingly. More...
 

Setters and Getters

std::vector< Plucker * > plucker_coordinates_
 Pointers to plucker coordinates of sides of both triangles [triaA[3], triaB[3]], size 6. More...
 
std::vector< double * > plucker_products_
 Pointers to Plucker products of triangles sides [3x[sideA x triaB]]], size 9. More...
 
ComputeIntersection< 1, 2 > CI12 [6]
 Compute intersection for side x triangle [3x[sideA x tria B],3x[sideB x triaA]]. More...
 
void set_pc_triaA (Plucker *p, unsigned int side_idx)
 
void set_pc_triaB (Plucker *p, unsigned int side_idx)
 
Pluckerget_pc_triaA (unsigned int side_idx)
 Gets the pointer to Plucker coordinates of the triangle A side of given side_idx. More...
 
Pluckerget_pc_triaB (unsigned int side_idx)
 Gets the pointer to Plucker coordinates of the triangle B side of given side_idx. More...
 
void set_plucker_product (double *number, unsigned sideA_idx, unsigned int sideB_idx)
 
double * get_plucker_product (unsigned sideA_idx, unsigned int sideB_idx)
 Gets the pointer to Plucker product of triangle A side sideA_idx and triangle B side sideB_idx. More...
 
void print_plucker_coordinates (std::ostream &os)
 Prints out the Plucker coordinates of abscissa and tetrahedron edges. More...
 
void print_plucker_coordinates_tree (std::ostream &os)
 Prints out the Plucker coordinates of tetrahedron edges in a tree of tetrahedron sides (triangles). More...
 
void clear_all ()
 

Detailed Description

Class for 2D-2D intersections.

Computes the intersection of triangle A and triangle B. Uses 6 ComputeIntersection<1,2>:

It creates a final intersection.

TODO: do not remember, if the function correct_triangle_ip_topology used to have some meaning here..

Definition at line 241 of file compute_intersection.hh.

Member Typedef Documentation

◆ IPAux12

Definition at line 243 of file compute_intersection.hh.

◆ IPAux22

Definition at line 244 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 536 of file compute_intersection.cc.

◆ ComputeIntersection() [2/2]

ComputeIntersection< 2, 2 >::ComputeIntersection ( ElementAccessor< 3 >  triaA,
ElementAccessor< 3 >  triaB,
Mesh mesh 
)

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

◆ ~ComputeIntersection()

Definition at line 565 of file compute_intersection.cc.

Member Function Documentation

◆ clear_all()

void ComputeIntersection< 2, 2 >::clear_all ( )

Resets Plucker products to 'nullptr'. Use this CAREFULLY as it does not destroy the objects. It is intended to be used only from higher dimensions when before destroying.

Definition at line 583 of file compute_intersection.cc.

◆ compute()

unsigned int ComputeIntersection< 2, 2 >::compute ( IntersectionAux< 2, 2 > &  intersection)

Computes final 2D-2D intersection. Computes CIs (side vs triangle) in following order: [A0_B, A1_B, A2_B, B0_A, B1_A, B2_A]. During cycle determine topology information and set computed flags accordingly.

Parameters
intersectionfinal 2D-2D intersection object (output)
Returns
number of intersection points found

Definition at line 624 of file compute_intersection.cc.

Here is the caller graph for this function:

◆ get_pc_triaA()

Plucker* ComputeIntersection< 2, 2 >::get_pc_triaA ( unsigned int  side_idx)
inline

Gets the pointer to Plucker coordinates of the triangle A side of given side_idx.

Definition at line 289 of file compute_intersection.hh.

◆ get_pc_triaB()

Plucker* ComputeIntersection< 2, 2 >::get_pc_triaB ( unsigned int  side_idx)
inline

Gets the pointer to Plucker coordinates of the triangle B side of given side_idx.

Definition at line 294 of file compute_intersection.hh.

◆ get_plucker_product()

double* ComputeIntersection< 2, 2 >::get_plucker_product ( unsigned  sideA_idx,
unsigned int  sideB_idx 
)
inline

Gets the pointer to Plucker product of triangle A side sideA_idx and triangle B side sideB_idx.

Definition at line 307 of file compute_intersection.hh.

◆ init()

void ComputeIntersection< 2, 2 >::init ( )

Initializes lower dimensional objects. Sets correctly the pointers to Plucker coordinates and products.

Definition at line 595 of file compute_intersection.cc.

Here is the caller graph for this function:

◆ print_plucker_coordinates()

void ComputeIntersection< 2, 2 >::print_plucker_coordinates ( std::ostream &  os)

Prints out the Plucker coordinates of abscissa and tetrahedron edges.

Definition at line 723 of file compute_intersection.cc.

◆ print_plucker_coordinates_tree()

void ComputeIntersection< 2, 2 >::print_plucker_coordinates_tree ( std::ostream &  os)

Prints out the Plucker coordinates of tetrahedron edges in a tree of tetrahedron sides (triangles).

Definition at line 743 of file compute_intersection.cc.

◆ set_pc_triaA()

void ComputeIntersection< 2, 2 >::set_pc_triaA ( Plucker p,
unsigned int  side_idx 
)
inline

Sets the pointer to Plucker coordinates of the triangle A side.

Parameters
ppointer to Plucker coordinates
side_idxlocal index of a side of triangle A

Definition at line 276 of file compute_intersection.hh.

◆ set_pc_triaB()

void ComputeIntersection< 2, 2 >::set_pc_triaB ( Plucker p,
unsigned int  side_idx 
)
inline

Sets the pointer to Plucker coordinates of the triangle B side.

Parameters
ppointer to Plucker coordinates
side_idxlocal index of a side of triangle B

Definition at line 284 of file compute_intersection.hh.

◆ set_plucker_product()

void ComputeIntersection< 2, 2 >::set_plucker_product ( double *  number,
unsigned  sideA_idx,
unsigned int  sideB_idx 
)
inline

Sets the pointer to Plucker product of triangle A side and triangle B side.

Parameters
numberpointer to value of Plucker product
sideA_idxlocal index of a side of triangle A
sideB_idxlocal index of a side of triangle B

Definition at line 303 of file compute_intersection.hh.

Member Data Documentation

◆ CI12

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

Compute intersection for side x triangle [3x[sideA x tria B],3x[sideB x triaA]].

Definition at line 328 of file compute_intersection.hh.

◆ plucker_coordinates_

std::vector<Plucker *> ComputeIntersection< 2, 2 >::plucker_coordinates_
private

Pointers to plucker coordinates of sides of both triangles [triaA[3], triaB[3]], size 6.

Definition at line 324 of file compute_intersection.hh.

◆ plucker_products_

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

Pointers to Plucker products of triangles sides [3x[sideA x triaB]]], size 9.

Definition at line 326 of file compute_intersection.hh.


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