t8
1.2.0
t8code is a C library to manage a forest of adaptive space-trees of general element classes in parallel.
|
Definitions of triangle-specific functions. More...
Go to the source code of this file.
Functions | |
void | t8_dtri_copy (const t8_dtri_t *t, t8_dtri_t *dest) |
Copy the values of one triangle to another. More... | |
int | t8_dtri_compare (const t8_dtri_t *t1, const t8_dtri_t *t2) |
Compare two triangle in their linear order. More... | |
void | t8_dtri_parent (const t8_dtri_t *t, t8_dtri_t *parent) |
Compute the parent of a triangle. More... | |
void | t8_dtri_ancestor (const t8_dtri_t *t, int level, t8_dtri_t *ancestor) |
Compute the ancestor of a triangle at a given level. More... | |
void | t8_dtri_compute_coords (const t8_dtri_t *elem, const int vertex, t8_dtri_coord_t coordinates[2]) |
Compute the coordinates of a vertex of a triangle. More... | |
void | t8_dtri_compute_vertex_ref_coords (const t8_dtri_t *elem, const int vertex, double coordinates[2]) |
Compute the reference coordinates of a vertex of a triangle when the tree (level 0 triangle) is embedded in [0,1]^2. More... | |
void | t8_dtri_compute_all_coords (const t8_dtri_t *elem, t8_dtri_coord_t coordinates[3][2]) |
Compute the coordinates of the four vertices of a triangle. More... | |
void | t8_dtri_child (const t8_dtri_t *t, int childid, t8_dtri_t *child) |
Compute the childid-th child in Morton order of a triangle. More... | |
void | t8_dtri_childrenpv (const t8_dtri_t *t, t8_dtri_t *c[T8_DTRI_CHILDREN]) |
Compute the 4 children of a triangle, array version. More... | |
int | t8_dtri_is_familypv (const t8_dtri_t *f[]) |
Check whether a collection of eight triangles is a family in Morton order. More... | |
void | t8_dtri_sibling (const t8_dtri_t *elem, int sibid, t8_dtri_t *sibling) |
Compute a specific sibling of a triangle. More... | |
int | t8_dtri_face_neighbour (const t8_dtri_t *t, int face, t8_dtri_t *n) |
Compute the face neighbor of a triangle. More... | |
void | t8_dtri_nearest_common_ancestor (const t8_dtri_t *t1, const t8_dtri_t *t2, t8_dtri_t *r) |
Computes the nearest common ancestor of two triangles in the same tree. More... | |
void | t8_dtri_children_at_face (const t8_dtri_t *tri, int face, t8_dtri_t *children[], int num_children, int *child_indices) |
Given a triangle and a face of the triangle, compute all children of the triangle that touch the face. More... | |
int | t8_dtri_face_child_face (const t8_dtri_t *triangle, int face, int face_child) |
Given a face of a triangle and a child number of a child of that face, return the face number of the child of the triangle that matches the child face. More... | |
int | t8_dtri_face_parent_face (const t8_dtri_t *triangle, int face) |
Given a face of an triangle return the face number of the parent of the triangle that matches the triangle's face. More... | |
int | t8_dtri_tree_face (t8_dtri_t *t, int face) |
Given a triangle and a face of this triangle. More... | |
int | t8_dtri_root_face_to_face (t8_dtri_t *t, int root_face) |
Given a triangle and a face of the root triangle. More... | |
void | t8_dtri_transform_face (const t8_dtri_t *trianglein, t8_dtri_t *triangle2, int orientation, int sign, int is_smaller_face) |
Suppose we have two trees that share a common triangle f. More... | |
int | t8_dtri_is_inside_root (t8_dtri_t *t) |
Test if a triangle lies inside of the root triangle, that is the triangle of level 0, anchor node (0,0) and type 0. More... | |
int | t8_dtri_is_root_boundary (const t8_dtri_t *t, int face) |
Compute whether a given triangle shares a given face with its root tree. More... | |
int | t8_dtri_is_equal (const t8_dtri_t *t1, const t8_dtri_t *t2) |
Test if two triangles have the same coordinates, type and level. More... | |
int | t8_dtri_is_sibling (const t8_dtri_t *t1, const t8_dtri_t *t2) |
Test if two triangles are siblings. More... | |
int | t8_dtri_is_parent (const t8_dtri_t *t, const t8_dtri_t *c) |
Test if a triangle is the parent of another triangle. More... | |
int | t8_dtri_is_ancestor (const t8_dtri_t *t, const t8_dtri_t *c) |
Test if a triangle is an ancestor of another triangle. More... | |
t8_linearidx_t | t8_dtri_linear_id (const t8_dtri_t *t, int level) |
Computes the linear position of a triangle in a uniform grid. More... | |
void | t8_dtri_init_linear_id_with_level (t8_dtri_t *t, t8_linearidx_t id, const int start_level, const int end_level, t8_dtri_type_t parenttype) |
Same as init_linear_id, but we only consider the subtree. More... | |
void | t8_dtri_init_linear_id (t8_dtri_t *t, t8_linearidx_t id, int level) |
Initialize a triangle as the triangle with a given global id in a uniform refinement of a given level. More... | |
void | t8_dtri_init_root (t8_dtri_t *t) |
Initialize a triangle as the root triangle (type 0 at level 0) More... | |
void | t8_dtri_successor (const t8_dtri_t *t, t8_dtri_t *s, int level) |
Computes the successor of a triangle in a uniform grid of level level. More... | |
void | t8_dtri_first_descendant (const t8_dtri_t *t, t8_dtri_t *s, int level) |
Compute the first descendant of a triangle at a given level. More... | |
void | t8_dtri_last_descendant (const t8_dtri_t *t, t8_dtri_t *s, int level) |
Compute the last descendant of a triangle at a given level. More... | |
void | t8_dtri_corner_descendant (const t8_dtri_t *t, t8_dtri_t *s, int corner, int level) |
Compute the descendant of a triangle in a given corner. More... | |
void | t8_dtri_predecessor (const t8_dtri_t *t, t8_dtri_t *s, int level) |
Computes the predecessor of a triangle in a uniform grid of level level. More... | |
int | t8_dtri_ancestor_id (const t8_dtri_t *t, int level) |
Compute the position of the ancestor of this child at level level within its siblings. More... | |
int | t8_dtri_child_id (const t8_dtri_t *t) |
Compute the position of the ancestor of this child at level level within its siblings. More... | |
int | t8_dtri_get_level (const t8_dtri_t *t) |
Return the level of a triangle. More... | |
int | t8_dtri_is_valid (const t8_dtri_t *t) |
Query whether all entries of a triangle are in valid ranges. More... | |
void | t8_dtri_debug_print (const t8_dtri_t *t) |
Print a triangle. More... | |
Definitions of triangle-specific functions.
Compute the ancestor of a triangle at a given level.
[in] | t | Input triangle. |
[in] | level | A smaller level than t. |
[in,out] | ancestor | Existing triangle whose data will be filled with the data of t's ancestor on level level. |
int t8_dtri_ancestor_id | ( | const t8_dtri_t * | t, |
int | level | ||
) |
Compute the position of the ancestor of this child at level level within its siblings.
[in] | t | triangle to be considered. |
[in] | level | level to be considered. |
Compute the childid-th child in Morton order of a triangle.
[in] | t | Input triangle. |
[in,out] | childid | The id of the child, 0..7 in Morton order. |
[out] | child | Existing triangle whose data will be filled with the date of t's childid-th child. |
int t8_dtri_child_id | ( | const t8_dtri_t * | t | ) |
Compute the position of the ancestor of this child at level level within its siblings.
[in] | t | triangle to be considered. |
void t8_dtri_children_at_face | ( | const t8_dtri_t * | tri, |
int | face, | ||
t8_dtri_t * | children[], | ||
int | num_children, | ||
int * | child_indices | ||
) |
Given a triangle and a face of the triangle, compute all children of the triangle that touch the face.
[in] | tri | The triangle. |
[in] | face | A face of tri. |
[in,out] | children | Allocated triangles, in which the children of tri that share a face with face are stored. They will be stored in order of their child_id. |
[in] | num_children | The number of triangles in children. Must match the number of children that touch face. |
Compute the 4 children of a triangle, array version.
[in] | t | Input triangle. |
[in,out] | c | Pointers to the 4 computed children in Morton order. t may point to the same quadrant as c[0]. |
Compare two triangle in their linear order.
[in] | t1 | Triangle one. |
[in] | t2 | Triangle two. |
void t8_dtri_compute_all_coords | ( | const t8_dtri_t * | elem, |
t8_dtri_coord_t | coordinates[3][2] | ||
) |
Compute the coordinates of the four vertices of a triangle.
[in] | elem | Input triangle. |
[out] | coordinates | An array of 4x3 t8_dtri_coord_t that will be filled with the coordinates of t's vertices. |
void t8_dtri_compute_coords | ( | const t8_dtri_t * | elem, |
const int | vertex, | ||
t8_dtri_coord_t | coordinates[2] | ||
) |
Compute the coordinates of a vertex of a triangle.
[in] | elem | Input triangle. |
[in] | vertex | The number of the vertex. |
[out] | coordinates | An array of 2 t8_dtri_coord_t that will be filled with the coordinates of the vertex. |
void t8_dtri_compute_vertex_ref_coords | ( | const t8_dtri_t * | elem, |
const int | vertex, | ||
double | coordinates[2] | ||
) |
Compute the reference coordinates of a vertex of a triangle when the tree (level 0 triangle) is embedded in [0,1]^2.
[in] | elem | Input triangle. |
[in] | vertex | The number of the vertex. |
[out] | coordinates | An array of 2 double that will be filled with the reference coordinates of the vertex. |
Copy the values of one triangle to another.
[in] | t | Triangle whose values will be copied. |
[in,out] | dest | Existing triangle whose data will be filled with the data of t. * |
Compute the descendant of a triangle in a given corner.
[in] | t | Triangle whose descendant is computed. |
[out] | s | Existing triangle whose data will be filled with the data of t's descendant in corner. |
[in] | corner | The corner in which the descendant should lie. |
[in] | level | The refinement level of the descendant. Must be greater or equal to t's level. |
void t8_dtri_debug_print | ( | const t8_dtri_t * | t | ) |
Print a triangle.
[in] | t | triangle to be considered. |
int t8_dtri_face_child_face | ( | const t8_dtri_t * | triangle, |
int | face, | ||
int | face_child | ||
) |
Given a face of a triangle and a child number of a child of that face, return the face number of the child of the triangle that matches the child face.
[in] | triangle | The triangle. |
[in] | face | Then number of the face. |
[in] | face_child | The child number of a child of the face triangle. |
Compute the face neighbor of a triangle.
[in] | t | Input triangle. |
[in] | face | The face across which to generate the neighbor. |
[in,out] | n | Existing triangle whose data will be filled. |
int t8_dtri_face_parent_face | ( | const t8_dtri_t * | triangle, |
int | face | ||
) |
Given a face of an triangle return the face number of the parent of the triangle that matches the triangle's face.
Or return -1 if no face of the parent matches the face.
[in] | triangle | The triangle. |
[in] | face | Then number of the face. |
Compute the first descendant of a triangle at a given level.
This is the descendant of the triangle in a uniform maxlevel refinement that has the smaller id.
[in] | t | Triangle whose descendant is computed. |
[in] | level | A given level. Must be grater or equal to t's level. |
[out] | s | Existing triangle whose data will be filled with the data of t's first descendant. |
int t8_dtri_get_level | ( | const t8_dtri_t * | t | ) |
Return the level of a triangle.
[in] | t | triangle to be considered. |
void t8_dtri_init_linear_id | ( | t8_dtri_t * | t, |
t8_linearidx_t | id, | ||
int | level | ||
) |
Initialize a triangle as the triangle with a given global id in a uniform refinement of a given level.
[in,out] | t | Existing triangle whose data will be filled. |
[in] | id | Index to be considered. |
[in] | level | level of uniform grid to be considered. |
void t8_dtri_init_linear_id_with_level | ( | t8_dtri_t * | t, |
t8_linearidx_t | id, | ||
const int | start_level, | ||
const int | end_level, | ||
t8_dtri_type_t | parenttype | ||
) |
Same as init_linear_id, but we only consider the subtree.
Used for computing the index of a tetrahedron lying in a pyramid
[in,out] | t | Existing triangle whose data will be filled |
[in] | id | Index to be considered |
[in] | start_level | The level of the root of the subtree |
[in] | end_level | Level of uniform grid to be considered |
[in] | parenttype | The type of the parent. |
void t8_dtri_init_root | ( | t8_dtri_t * | t | ) |
Initialize a triangle as the root triangle (type 0 at level 0)
[in,out] | t | Existing triangle whose data will be filled. |
Test if a triangle is an ancestor of another triangle.
[in] | t | triangle to be tested. |
[in] | c | Descendent triangle. |
Test if two triangles have the same coordinates, type and level.
int t8_dtri_is_familypv | ( | const t8_dtri_t * | f[] | ) |
Check whether a collection of eight triangles is a family in Morton order.
[in] | f | An array of eight triangles. |
int t8_dtri_is_inside_root | ( | t8_dtri_t * | t | ) |
Test if a triangle lies inside of the root triangle, that is the triangle of level 0, anchor node (0,0) and type 0.
[in] | t | Input triangle. |
Test if a triangle is the parent of another triangle.
[in] | t | triangle to be tested. |
[in] | c | Possible child triangle. |
int t8_dtri_is_root_boundary | ( | const t8_dtri_t * | t, |
int | face | ||
) |
Compute whether a given triangle shares a given face with its root tree.
[in] | t | The input triangle. |
[in] | face | A face of t. |
Test if two triangles are siblings.
[in] | t1 | First triangle to be tested. |
[in] | t2 | Second triangle to be tested. |
int t8_dtri_is_valid | ( | const t8_dtri_t * | t | ) |
Query whether all entries of a triangle are in valid ranges.
[in] | t | triangle to be considered. |
Compute the last descendant of a triangle at a given level.
This is the descendant of the triangle in a uniform maxlevel refinement that has the biggest id.
[in] | t | Triangle whose descendant is computed. |
[in] | level | A given level. Must be grater or equal to t's level. |
[out] | s | Existing triangle whose data will be filled with the data of t's last descendant. |
t8_linearidx_t t8_dtri_linear_id | ( | const t8_dtri_t * | t, |
int | level | ||
) |
Computes the linear position of a triangle in a uniform grid.
[in] | t | triangle whose id will be computed. |
[in] | level | level of uniform grid to be considered. |
Computes the nearest common ancestor of two triangles in the same tree.
[in] | t1 | First input triangle. |
[in] | t2 | Second input triangle. |
[in,out] | r | Existing triangle whose data will be filled. |
Compute the parent of a triangle.
[in] | elem | Input triangle. |
[in,out] | parent | Existing triangle whose data will be filled with the data of elem's parent. |
Computes the predecessor of a triangle in a uniform grid of level level.
[in] | t | triangle whose id will be computed. |
[in,out] | s | Existing triangle whose data will be filled with the data of t's predecessor on level level. |
[in] | level | level of uniform grid to be considered. |
int t8_dtri_root_face_to_face | ( | t8_dtri_t * | t, |
int | root_face | ||
) |
Given a triangle and a face of the root triangle.
If the triangle lies on the tree boundary, return the corresponding face number of the triangle. If not the return value is arbitrary.
[in] | t | The triangle. |
[in] | face | The index of a face of the root element. |
Compute a specific sibling of a triangle.
[in] | elem | Input triangle. |
[in,out] | sibling | Existing triangle whose data will be filled with the data of sibling no. sibling_id of elem. |
[in] | sibid | The id of the sibling computed, 0..7 in Bey order. |
Computes the successor of a triangle in a uniform grid of level level.
[in] | t | triangle whose id will be computed. |
[in,out] | s | Existing triangle whose data will be filled with the data of t's successor on level level. |
[in] | level | level of uniform grid to be considered. |
void t8_dtri_transform_face | ( | const t8_dtri_t * | trianglein, |
t8_dtri_t * | triangle2, | ||
int | orientation, | ||
int | sign, | ||
int | is_smaller_face | ||
) |
Suppose we have two trees that share a common triangle f.
Given a triangle e that is a subface of f in one of the trees and given the orientation of the tree connection, construct the face triangle of the respective tree neighbor that logically coincides with e but lies in the coordinate system of the neighbor tree.
[in] | trianglein | The face triangle. |
[in,out] | triangle2 | On return the face triangle triangle1 with respective to the coordinate system of the other tree. |
[in] | orientation | The orientation of the tree-tree connection. |
[in] | sign | Depending on the topological orientation of the two tree faces, either 0 (both faces have opposite orientation) or 1 (both faces have the same top. orientattion). t8_eclass_face_orientation |
[in] | is_smaller_face | Flag to declare whether triangle1 belongs to the smaller face. A face f of tree T is smaller than f' of T' if either the eclass of T is smaller or if the classes are equal and f<f'. The orientation is defined in relation to the smaller face. |
int t8_dtri_tree_face | ( | t8_dtri_t * | t, |
int | face | ||
) |
Given a triangle and a face of this triangle.
If the face lies on the tree boundary, return the face number of the tree face. If not the return value is arbitrary.
[in] | t | The triangle. |
[in] | face | The index of a face of t. |