Flow123d
JS_before_hm-2087-gb06a8f5d8
|
#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... | |
Setters and Getters | |
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] |
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... | |
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 () |
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... | |
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 756 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.
ComputeIntersection< 1, 3 >::~ComputeIntersection | ( | ) |
Definition at line 785 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 803 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 831 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 836 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 916 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 814 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 959 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 977 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 |
Intersection objects for the tetrahedron's faces. Faces follows element node ordering, element inversion not handled at this stage. Element inversin is taken into account in the compute method. TODO: reuse these calculactions for elements with common face.
Definition at line 453 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.