Flow123d
release_3.0.0-1212-g8801db3
|
#include <compute_intersection.hh>
Public Types | |
typedef IntersectionPointAux< 1, 3 > | IPAux |
Public Member Functions | |
ComputeIntersection () | |
Default constructor. Use when this is NOT final intersection object. More... | |
ComputeIntersection (ElementAccessor< 3 > abscissa, ElementAccessor< 3 > tetrahedron, Mesh *mesh) | |
Constructor, sets abscissa and tetrahedron object. Use when this is final intersection object. 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 (std::vector< IPAux > &IP13s) |
Computes intersection points for 1D-3D intersection. Computes lower dimensional CIs abscissa vs tetrahedron face. During cycle determine topology information and set computed flags accordingly. We can have 2 IPs at maximum. If there are 2 IPs: More... | |
unsigned int | compute (IntersectionAux< 1, 3 > &intersection) |
Computes final 1D-3D intersection. Computes IPs and check if any of them are pathologic to set the resulting object also pathologic. Calls compute function inside. 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 () |
Setters and Getters | |
void | set_pc_abscissa (Plucker *p) |
Sets the pointer to Plucker coordinates of the abscissa. More... | |
void | set_pc_tetrahedron (Plucker *p, unsigned int edge_idx) |
Sets the pointer to Plucker coordinates of the tetrahedron edge. More... | |
Plucker * | get_pc_abscissa () |
Gets the pointer to Plucker coordinates of the abscissa. More... | |
Plucker * | get_pc_tetrahedron (unsigned int edge_idx) |
Gets the pointer to Plucker coordinates of the tetrahedron edge of given edge_idx . More... | |
void | set_plucker_product (double *number, unsigned edge_idx) |
Sets the pointer to Plucker product of abscissa and tetrahedron edge. More... | |
double * | get_plucker_product (unsigned edge_idx) |
Gets the pointer to Plucker product of abscissa and tetrahedron edge of given edge_idx . More... | |
Private Member Functions | |
void | correct_tetrahedron_ip_topology (double t, unsigned int i, std::vector< IPAux > &ip) |
After interpolation, the topology information in tetrahedron must be updated. More... | |
Private Attributes | |
Plucker * | plucker_coordinates_abscissa_ |
Pointer to plucker coordinates of abscissa. More... | |
std::vector< Plucker * > | plucker_coordinates_tetrahedron |
Vector of pointers to plucker coordinates of tetrahedron edges. More... | |
std::vector< double * > | plucker_products_ |
Pointers to Plucker products of abscissa and tetrahedron edges. More... | |
ComputeIntersection< 1, 2 > | CI12 [4] |
Compute 1D-2D intersection objects [4x line X tetrahedron face]. More... | |
Class for 1D-3D intersections.
Computes the intersection of an abscissa and a tetrahedron. Uses 4 ComputeIntersection<1,2> for abscissa and tetrahedron sides intersections.
Definition at line 345 of file compute_intersection.hh.
typedef IntersectionPointAux<1,3> ComputeIntersection< 1, 3 >::IPAux |
Definition at line 348 of file compute_intersection.hh.
ComputeIntersection< 1, 3 >::ComputeIntersection | ( | ) |
Default constructor. Use when this is NOT final intersection object.
Definition at line 757 of file compute_intersection.cc.
ComputeIntersection< 1, 3 >::ComputeIntersection | ( | ElementAccessor< 3 > | abscissa, |
ElementAccessor< 3 > | tetrahedron, | ||
Mesh * | mesh | ||
) |
Constructor, sets abscissa and tetrahedron object. Use when this is final intersection object. It allocates memory, computes plucker coordinates and products.
Definition at line 764 of file compute_intersection.cc.
ComputeIntersection< 1, 3 >::~ComputeIntersection | ( | ) |
Definition at line 783 of file compute_intersection.cc.
void ComputeIntersection< 1, 3 >::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 801 of file compute_intersection.cc.
unsigned int ComputeIntersection< 1, 3 >::compute | ( | std::vector< IPAux > & | IP13s | ) |
Computes intersection points for 1D-3D intersection. Computes lower dimensional CIs abscissa vs tetrahedron face. During cycle determine topology information and set computed flags accordingly. We can have 2 IPs at maximum. If there are 2 IPs:
IP13d | vector of intersection points (output) |
Definition at line 833 of file compute_intersection.cc.
unsigned int ComputeIntersection< 1, 3 >::compute | ( | IntersectionAux< 1, 3 > & | intersection | ) |
Computes final 1D-3D intersection. Computes IPs and check if any of them are pathologic to set the resulting object also pathologic. Calls compute
function inside.
intersection | final 1D-3D intersection object (output) |
Definition at line 828 of file compute_intersection.cc.
|
private |
After interpolation, the topology information in tetrahedron must be updated.
ip | intersection point to be corrected |
TODO:
Definition at line 910 of file compute_intersection.cc.
|
inline |
Gets the pointer to Plucker coordinates of the abscissa.
Definition at line 403 of file compute_intersection.hh.
|
inline |
Gets the pointer to Plucker coordinates of the tetrahedron edge of given edge_idx
.
Definition at line 408 of file compute_intersection.hh.
|
inline |
Gets the pointer to Plucker product of abscissa and tetrahedron edge of given edge_idx
.
Definition at line 420 of file compute_intersection.hh.
void ComputeIntersection< 1, 3 >::init | ( | ) |
Initializes lower dimensional objects. Sets correctly the pointers to Plucker coordinates and products.
Definition at line 812 of file compute_intersection.cc.
void ComputeIntersection< 1, 3 >::print_plucker_coordinates | ( | std::ostream & | os | ) |
Prints out the Plucker coordinates of abscissa and tetrahedron edges.
Definition at line 953 of file compute_intersection.cc.
void ComputeIntersection< 1, 3 >::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 971 of file compute_intersection.cc.
|
inline |
Sets the pointer to Plucker coordinates of the abscissa.
Definition at line 390 of file compute_intersection.hh.
|
inline |
Sets the pointer to Plucker coordinates of the tetrahedron edge.
p | pointer to Plucker coordinates |
edge_idx | local index of an edge of tetrahedron |
Definition at line 398 of file compute_intersection.hh.
|
inline |
Sets the pointer to Plucker product of abscissa and tetrahedron edge.
number | pointer to value of Plucker product |
edge_idx | local index of an edge of tetrahedron |
Definition at line 416 of file compute_intersection.hh.
|
private |
Compute 1D-2D intersection objects [4x line X tetrahedron face].
Definition at line 448 of file compute_intersection.hh.
|
private |
Pointer to plucker coordinates of abscissa.
Definition at line 442 of file compute_intersection.hh.
|
private |
Vector of pointers to plucker coordinates of tetrahedron edges.
Definition at line 444 of file compute_intersection.hh.
|
private |
Pointers to Plucker products of abscissa and tetrahedron edges.
Definition at line 446 of file compute_intersection.hh.