Flow123d
DF_asm_optimization-d5b8fcb
|
#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) | |
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 343 of file compute_intersection.hh.
typedef IntersectionPointAux<1,3> ComputeIntersection< 1, 3 >::IPAux |
Definition at line 346 of file compute_intersection.hh.
ComputeIntersection< 1, 3 >::ComputeIntersection | ( | ) |
Default constructor. Use when this is NOT final intersection object.
Definition at line 754 of file compute_intersection.cc.
ComputeIntersection< 1, 3 >::ComputeIntersection | ( | ElementAccessor< 3 > | abscissa, |
ElementAccessor< 3 > | tetrahedron | ||
) |
Constructor, sets abscissa and tetrahedron object. Use when this is final intersection object. It allocates memory, computes plucker coordinates and products.
Definition at line 761 of file compute_intersection.cc.
ComputeIntersection< 1, 3 >::~ComputeIntersection | ( | ) |
Definition at line 782 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 800 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.
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.
|
private |
After interpolation, the topology information in tetrahedron must be updated.
ip | intersection point to be corrected |
TODO:
Definition at line 913 of file compute_intersection.cc.
|
inline |
Gets the pointer to Plucker coordinates of the abscissa.
Definition at line 401 of file compute_intersection.hh.
|
inline |
Gets the pointer to Plucker coordinates of the tetrahedron edge of given edge_idx
.
Definition at line 406 of file compute_intersection.hh.
|
inline |
Gets the pointer to Plucker product of abscissa and tetrahedron edge of given edge_idx
.
Definition at line 418 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 811 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 956 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 974 of file compute_intersection.cc.
|
inline |
Sets the pointer to Plucker coordinates of the abscissa.
Definition at line 388 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 396 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 414 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 451 of file compute_intersection.hh.
|
private |
Pointer to plucker coordinates of abscissa.
Definition at line 440 of file compute_intersection.hh.
|
private |
Vector of pointers to plucker coordinates of tetrahedron edges.
Definition at line 442 of file compute_intersection.hh.
|
private |
Pointers to Plucker products of abscissa and tetrahedron edges.
Definition at line 444 of file compute_intersection.hh.