t8
1.2.0
t8code is a C library to manage a forest of adaptive space-trees of general element classes in parallel.
|
This struct holds virtual functions for a particular element class. More...
#include <t8_element_cxx.hxx>
Public Member Functions | |
virtual | ~ t8_eclass_scheme () |
The destructor. More... | |
virtual size_t | t8_element_size (void) const |
The virtual table for a particular implementation of an element class. More... | |
virtual int | t8_element_refines_irregular (void) const =0 |
Returns true, if there is one element in the tree, that does not refine into 2^dim children. More... | |
virtual int | t8_element_maxlevel (void) const =0 |
Return the maximum allowed level for any element of a given class. More... | |
virtual t8_eclass_t | t8_element_child_eclass (int childid) const =0 |
Return the type of each child in the ordering of the implementation. More... | |
virtual int | t8_element_level (const t8_element_t *elem) const =0 |
Return the level of a particular element. More... | |
virtual void | t8_element_copy (const t8_element_t *source, t8_element_t *dest) const =0 |
Copy all entries of source to dest. More... | |
virtual int | t8_element_compare (const t8_element_t *elem1, const t8_element_t *elem2) const =0 |
Compare two elements. More... | |
virtual void | t8_element_parent (const t8_element_t *elem, t8_element_t *parent) const =0 |
Compute the parent of a given element elem and store it in parent. More... | |
virtual int | t8_element_num_siblings (const t8_element_t *elem) const =0 |
Compute the number of siblings of an element. More... | |
virtual void | t8_element_sibling (const t8_element_t *elem, int sibid, t8_element_t *sibling) const =0 |
Compute a specific sibling of a given element elem and store it in sibling. More... | |
virtual int | t8_element_num_corners (const t8_element_t *elem) const =0 |
Compute the number of corners of a given element. More... | |
virtual int | t8_element_num_faces (const t8_element_t *elem) const =0 |
Compute the number of faces of a given element. More... | |
virtual int | t8_element_max_num_faces (const t8_element_t *elem) const =0 |
Compute the maximum number of faces of a given element and all of its descendants. More... | |
virtual int | t8_element_num_children (const t8_element_t *elem) const =0 |
Return the number of children of an element when it is refined. More... | |
virtual int | t8_element_num_face_children (const t8_element_t *elem, int face) const =0 |
Return the number of children of an element's face when the element is refined. More... | |
virtual int | t8_element_get_face_corner (const t8_element_t *element, int face, int corner) const =0 |
Return the corner number of an element's face corner. More... | |
virtual int | t8_element_get_corner_face (const t8_element_t *element, int corner, int face) const =0 |
Return the face numbers of the faces sharing an element's corner. More... | |
virtual void | t8_element_child (const t8_element_t *elem, int childid, t8_element_t *child) const =0 |
Construct the child element of a given number. More... | |
virtual void | t8_element_children (const t8_element_t *elem, int length, t8_element_t *c[]) const =0 |
Construct all children of a given element. More... | |
virtual int | t8_element_child_id (const t8_element_t *elem) const =0 |
Compute the child id of an element. More... | |
virtual int | t8_element_ancestor_id (const t8_element_t *elem, int level) const =0 |
Compute the ancestor id of an element, that is the child id at a given level. More... | |
virtual int | t8_element_is_family (t8_element_t **fam) const =0 |
Query whether a given set of elements is a family or not. More... | |
virtual void | t8_element_nca (const t8_element_t *elem1, const t8_element_t *elem2, t8_element_t *nca) const =0 |
Compute the nearest common ancestor of two elements. More... | |
virtual t8_element_shape_t | t8_element_face_shape (const t8_element_t *elem, int face) const =0 |
Compute the shape of the face of an element. More... | |
virtual void | t8_element_children_at_face (const t8_element_t *elem, int face, t8_element_t *children[], int num_children, int *child_indices) const =0 |
Given an element and a face of the element, compute all children of the element that touch the face. More... | |
virtual int | t8_element_face_child_face (const t8_element_t *elem, int face, int face_child) const =0 |
Given a face of an element and a child number of a child of that face, return the face number of the child of the element that matches the child face. More... | |
virtual int | t8_element_face_parent_face (const t8_element_t *elem, int face) const =0 |
Given a face of an element return the face number of the parent of the element that matches the element's face. More... | |
virtual int | t8_element_tree_face (const t8_element_t *elem, int face) const =0 |
Given an element and a face of this element. More... | |
virtual void | t8_element_transform_face (const t8_element_t *elem1, t8_element_t *elem2, int orientation, int sign, int is_smaller_face) const =0 |
Suppose we have two trees that share a common face f. More... | |
virtual int | t8_element_extrude_face (const t8_element_t *face, const t8_eclass_scheme_c *face_scheme, t8_element_t *elem, int root_face) const =0 |
Given a boundary face inside a root tree's face construct the element inside the root tree that has the given face as a face. More... | |
virtual void | t8_element_boundary_face (const t8_element_t *elem, int face, t8_element_t *boundary, const t8_eclass_scheme_c *boundary_scheme) const =0 |
Construct the boundary element at a specific face. More... | |
virtual void | t8_element_first_descendant_face (const t8_element_t *elem, int face, t8_element_t *first_desc, int level) const =0 |
Construct the first descendant of an element at a given level that touches a given face. More... | |
virtual void | t8_element_last_descendant_face (const t8_element_t *elem, int face, t8_element_t *last_desc, int level) const =0 |
Construct the last descendant of an element at a given level that touches a given face. More... | |
virtual void | t8_element_boundary (const t8_element_t *elem, int min_dim, int length, t8_element_t **boundary) const =0 |
Construct all codimension-one boundary elements of a given element. More... | |
virtual int | t8_element_is_root_boundary (const t8_element_t *elem, int face) const =0 |
Compute whether a given element shares a given face with its root tree. More... | |
virtual int | t8_element_face_neighbor_inside (const t8_element_t *elem, t8_element_t *neigh, int face, int *neigh_face) const =0 |
Construct the face neighbor of a given element if this face neighbor is inside the root tree. More... | |
virtual t8_element_shape_t | t8_element_shape (const t8_element_t *elem) const =0 |
Return the shape of an allocated element according its type. More... | |
virtual void | t8_element_set_linear_id (t8_element_t *elem, int level, t8_linearidx_t id) const =0 |
Initialize the entries of an allocated element according to a given linear id in a uniform refinement. More... | |
virtual t8_linearidx_t | t8_element_get_linear_id (const t8_element_t *elem, int level) const =0 |
Compute the linear id of a given element in a hypothetical uniform refinement of a given level. More... | |
virtual void | t8_element_first_descendant (const t8_element_t *elem, t8_element_t *desc, int level) const =0 |
Compute the first descendant of a given element. More... | |
virtual void | t8_element_last_descendant (const t8_element_t *elem, t8_element_t *desc, int level) const =0 |
Compute the last descendant of a given element. More... | |
virtual void | t8_element_successor (const t8_element_t *t, t8_element_t *s, int level) const =0 |
Construct the successor in a uniform refinement of a given element. More... | |
virtual int | t8_element_root_len (const t8_element_t *elem) const =0 |
Compute the root length of a given element, that is the length of its level 0 ancestor. More... | |
virtual void | t8_element_vertex_reference_coords (const t8_element_t *t, const int vertex, double coords[]) const =0 |
Compute the coordinates of a given element vertex inside a reference tree that is embedded into [0,1]^d (d = dimension). More... | |
virtual void | t8_element_reference_coords (const t8_element_t *elem, const double *ref_coords, const void *user_data, double *out_coords) const =0 |
Convert a point in the reference space of an element to a point in the reference space of the tree. More... | |
virtual t8_element_t * | t8_element_array_index (sc_array_t *array, size_t it) const |
Return a pointer to a t8_element in an array indexed by a size_t. More... | |
virtual t8_gloidx_t | t8_element_count_leafs (const t8_element_t *t, int level) const =0 |
Count how many leaf descendants of a given uniform level an element would produce. More... | |
virtual t8_gloidx_t | t8_element_count_leafs_from_root (int level) const =0 |
Count how many leaf descendants of a given uniform level the root element will produce. More... | |
virtual void | t8_element_general_function (const t8_element_t *elem, const void *indata, void *outdata) const =0 |
This function has no defined effect but each implementation is free to provide its own meaning of it. More... | |
virtual void | t8_element_new (int length, t8_element_t **elem) const =0 |
Allocate memory for an array of elements of a given class and initialize them. More... | |
virtual void | t8_element_init (int length, t8_element_t *elem, int called_new) const =0 |
Initialize an array of allocated elements. More... | |
virtual void | t8_element_destroy (int length, t8_element_t **elem) const =0 |
Deallocate an array of elements. More... | |
Data Fields | |
t8_eclass_t | eclass |
The element class. | |
Protected Attributes | |
size_t | element_size |
This scheme defines the operations for a particular element class. More... | |
void * | ts_context |
Anonymous implementation context. | |
This struct holds virtual functions for a particular element class.
|
inlinevirtual |
The destructor.
It does nothing but has to be defined since we may want to delete an eclass_scheme that is actually inherited (for example t8_default_scheme_quad) and providing an implementation for the destructor ensures that the destructor of the child class will be executed.
|
pure virtual |
Compute the ancestor id of an element, that is the child id at a given level.
[in] | elem | This must be a valid element. |
[in] | level | A refinement level. Must satisfy level < elem.level |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
virtual |
Return a pointer to a t8_element in an array indexed by a size_t.
[in] | array | The sc_array storing \t t8_element_t pointers. |
[in] | it | The index of the element that should be returned. |
|
pure virtual |
Construct all codimension-one boundary elements of a given element.
[in] | elem | The input element. |
[in] | face | A face of elem. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Construct the boundary element at a specific face.
[in] | elem | The input element. |
[in] | face | The index of the face of which to construct the boundary element. |
[in,out] | boundary | An allocated element of dimension of element minus 1. The entries will be filled with the entries of the face of element. |
[in] | boundary_scheme | The scheme for the eclass of the boundary face. If elem is of class T8_ECLASS_VERTEX, then boundary must be NULL and will not be modified. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Construct the child element of a given number.
[in] | elem | This must be a valid element, bigger than maxlevel. |
[in] | childid | The number of the child to construct. |
[in,out] | child | The storage for this element must exist and match the element class of the child. For a pyramid, for example, it may be either a tetrahedron or a pyramid depending on childid. This can be checked by t8_element_child_eclass. On output, a valid element. It is valid to call this function with elem = child. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Return the type of each child in the ordering of the implementation.
[in] | childid | Must be between 0 and the number of children (exclusive). The number of children is defined in t8_element_num_children. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute the child id of an element.
[in] | elem | This must be a valid element. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Construct all children of a given element.
[in] | elem | This must be a valid element, bigger than maxlevel. |
[in] | length | The length of the output array c must match the number of children. |
[in,out] | c | The storage for these length elements must exist and match the element class in the children's ordering. On output, all children are valid. It is valid to call this function with elem = c[0]. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Given an element and a face of the element, compute all children of the element that touch the face.
[in] | elem | The element. |
[in] | face | A face of elem. |
[in,out] | children | Allocated elements, in which the children of elem that share a face with face are stored. They will be stored in order of their linear id. |
[in] | num_children | The number of elements in children. Must match the number of children that touch face. t8_element_num_face_children |
[in,out] | child_indices | If not NULL, an array of num_children integers must be given, on output its i-th entry is the child_id of the i-th face_child. It is valid to call this function with elem = children[0]. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compare two elements.
[in] | elem1 | The first element. |
[in] | elem2 | The second element. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Copy all entries of source to dest.
dest must be an existing element. No memory is allocated by this function.
[in] | source | The element whose entries will be copied to dest. |
[in,out] | dest | This element's entries will be overwritted with the entries of source. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Count how many leaf descendants of a given uniform level an element would produce.
[in] | t | The element to be checked. |
[in] | level | A refinement level. |
Example: If t is a line element that refines into 2 line elements on each level, then the return value is max(0, 2^{level - level(t)}). Thus, if t's level is 0, and level = 3, the return value is 2^3 = 8.
Implemented in t8_default_scheme_common_c.
|
pure virtual |
Count how many leaf descendants of a given uniform level the root element will produce.
[in] | level | A refinement level. |
This is a convenience function, and can be implemented via t8_element_count_leafs.
Implemented in t8_default_scheme_common_c.
|
pure virtual |
Deallocate an array of elements.
[in] | length | The number of elements in the array. |
[in,out] | elems | On input an array of length many allocated element pointers. On output all these pointers will be freed. elem itself will not be freed by this function. |
Implemented in t8_default_scheme_common_c.
|
pure virtual |
Given a boundary face inside a root tree's face construct the element inside the root tree that has the given face as a face.
[in] | face | A face element. |
[in] | face_scheme | The scheme for the face element. |
[in,out] | elem | An allocated element. The entries will be filled with the data of the element that has face as a face and lies within the root tree. |
[in] | root_face | The index of the face of the root tree in which face lies. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Given a face of an element and a child number of a child of that face, return the face number of the child of the element that matches the child face.
x ---- x x x x ---- x | | | | | | | <-- f | | | x | x--x | | | | | x ---- x x x ---- x elem face face_child Returns the face number f
[in] | elem | The element. |
[in] | face | Then number of the face. |
[in] | face_child | A number 0 <= face_child < num_face_children, specifying a child of elem that shares a face with face. These children are counted in linear order. This coincides with the order of children from a call to t8_element_children_at_face. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Construct the face neighbor of a given element if this face neighbor is inside the root tree.
Return 0 otherwise.
[in] | elem | The element to be considered. |
[in,out] | neigh | If the face neighbor of elem along face is inside the root tree, this element's data is filled with the data of the face neighbor. Otherwise the data can be modified arbitrarily. |
[in] | face | The number of the face along which the neighbor should be constructed. |
[out] | neigh_face | The number of face as viewed from neigh. An arbitrary value, if the neighbor is not inside the root tree. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Given a face of an element return the face number of the parent of the element that matches the element's face.
Or return -1 if no face of the parent matches the face.
[in] | elem | The element. |
[in] | face | Then number of the face. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute the shape of the face of an element.
[in] | elem | The element. |
[in] | face | A face of elem. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute the first descendant of a given element.
[in] | elem | The element whose descendant is computed. |
[out] | desc | The first element in a uniform refinement of elem of the given level. |
[in] | level | The level, at which the descendant is computed. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Construct the first descendant of an element at a given level that touches a given face.
[in] | elem | The input element. |
[in] | face | A face of elem. |
[in,out] | first_desc | An allocated element. This element's data will be filled with the data of the first descendant of elem that shares a face with face. |
[in] | level | The level, at which the first descendant is constructed |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
This function has no defined effect but each implementation is free to provide its own meaning of it.
Thus this function can be used to compute or lookup very scheme implementation specific data.
[in] | elem | An valid element |
[in] | indata | Pointer to input data |
[out] | outdata | Pointer to output data. For the correct usage of indata and outdata see the specific implementations of the scheme. For example the default scheme triangle and tetrahedron implementations use this function to return the type of a tri/tet to the caller. |
Implemented in t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, and t8_default_scheme_common_c.
|
pure virtual |
Return the face numbers of the faces sharing an element's corner.
Example quad: 2 x — x 3 | | | | face 1 0 x — x 1 face 2 Thus for corner = 1 the output is: face=0 : 2, face=1: 1
[in] | element | The element. |
[in] | corner | A corner index for the face. |
[in] | face | A face index for corner. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Return the corner number of an element's face corner.
Example quad: 2 x — x 3 | | | | face 1 0 x — x 1 Thus for face = 1 the output is: corner=0 : 1, corner=1: 3
[in] | element | The element. |
[in] | face | A face index for element. |
[in] | corner | A corner index for the face 0 <= corner < num_face_corners. |
The order in which the corners must be given is determined by the eclass of element: LINE/QUAD/TRIANGLE: No specific order. HEX : In Z-order of the face starting with the lowest corner number. TET : Starting with the lowest corner number counterclockwise as seen from 'outside' of the element.
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute the linear id of a given element in a hypothetical uniform refinement of a given level.
[in] | elem | The element whose id we compute. |
[in] | level | The level of the uniform refinement to consider. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Initialize an array of allocated elements.
[in] | length | The number of elements to be initialized. |
[in,out] | elems | On input an array of length many allocated elements. |
[in] | called_new | True if the elements in elem were created by a call to t8_element_new. False if no element in elem was created in this way. The case that only some elements were created by t8_element_new should never occur. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Query whether a given set of elements is a family or not.
[in] | fam | An array of as many elements as an element of class ts has siblings. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute whether a given element shares a given face with its root tree.
[in] | elem | The input element. |
[in] | face | A face of elem. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute the last descendant of a given element.
[in] | elem | The element whose descendant is computed. |
[out] | desc | The last element in a uniform refinement of elem of the given level. |
[in] | level | The level, at which the descendant is computed. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Construct the last descendant of an element at a given level that touches a given face.
[in] | elem | The input element. |
[in] | face | A face of elem. |
[in,out] | last_desc | An allocated element. This element's data will be filled with the data of the last descendant of elem that shares a face with face. |
[in] | level | The level, at which the last descendant is constructed |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Return the level of a particular element.
[in] | elem | The element whose level should be returned. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute the maximum number of faces of a given element and all of its descendants.
[in] | elem | The element. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Return the maximum allowed level for any element of a given class.
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute the nearest common ancestor of two elements.
That is, the element with highest level that still has both given elements as descendants.
[in] | elem1 | The first of the two input elements. |
[in] | elem2 | The second of the two input elements. |
[in,out] | nca | The storage for this element must exist and match the element class of the child. On output the unique nearest common ancestor of elem1 and elem2. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Allocate memory for an array of elements of a given class and initialize them.
[in] | length | The number of elements to be allocated. |
[in,out] | elems | On input an array of length many unallocated element pointers. On output all these pointers will point to an allocated and initialized element. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, t8_default_scheme_hex_c, and t8_default_scheme_common_c.
|
pure virtual |
Return the number of children of an element when it is refined.
[in] | elem | The element whose number of children is returned. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute the number of corners of a given element.
[in] | elem | The element. |
Implemented in t8_default_scheme_pyramid_c, and t8_default_scheme_common_c.
|
pure virtual |
Return the number of children of an element's face when the element is refined.
[in] | elem | The element whose face is considered. |
[in] | face | A face of elem. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute the number of faces of a given element.
[in] | elem | The element. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute the number of siblings of an element.
That is the number of Children of its parent.
[in] | elem | The element. |
Implemented in t8_default_scheme_pyramid_c, and t8_default_scheme_common_c.
|
pure virtual |
Compute the parent of a given element elem and store it in parent.
parent needs to be an existing element. No memory is allocated by this function. elem and parent can point to the same element, then the entries of elem are overwritten by the ones of its parent.
[in] | elem | The element whose parent will be computed. |
[in,out] | parent | This element's entries will be overwritten by those of elem's parent. The storage for this element must exist and match the element class of the parent. For a pyramid, for example, it may be either a tetrahedron or a pyramid depending on elem's childid. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Convert a point in the reference space of an element to a point in the reference space of the tree.
[in] | elem | The element. |
[in] | coords_input | The coordinates of the point in the reference space of the element. |
[in] | user_data | User data. |
[out] | out_coords | The coordinates of the point in the reference space of the tree. |
Implemented in t8_default_scheme_common_c, t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Returns true, if there is one element in the tree, that does not refine into 2^dim children.
Returns false otherwise.
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute the root length of a given element, that is the length of its level 0 ancestor.
[in] | elem | The element whose root length should be computed. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Initialize the entries of an allocated element according to a given linear id in a uniform refinement.
[in,out] | elem | The element whose entries will be set. |
[in] | level | The level of the uniform refinement to consider. |
[in] | id | The linear id. id must fulfil 0 <= id < 'number of leafs in the uniform refinement' |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Return the shape of an allocated element according its type.
For example, a child of an element can be an element of a different shape and has to be handled differently - according to its shape.
[in] | elem | The element to be considered |
Implemented in t8_default_scheme_pyramid_c, and t8_default_scheme_common_c.
|
pure virtual |
Compute a specific sibling of a given element elem and store it in sibling.
sibling needs to be an existing element. No memory is allocated by this function. elem and sibling can point to the same element, then the entries of elem are overwritten by the ones of its sibid-th sibling.
[in] | elem | The element whose sibling will be computed. |
[in] | sibid | The id of the sibling computed. |
[in,out] | sibling | This element's entries will be overwritten by those of elem's sibid-th sibling. The storage for this element must exist and match the element class of the sibling. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
virtual |
The virtual table for a particular implementation of an element class.
Return the size of any element of a given class.
|
pure virtual |
Construct the successor in a uniform refinement of a given element.
[in] | elem1 | The element whose successor should be constructed. |
[in,out] | elem2 | The element whose entries will be set. |
[in] | level | The level of the uniform refinement to consider. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Suppose we have two trees that share a common face f.
Given an element e that is a subface of f in one of the trees and given the orientation of the tree connection, construct the face element of the respective tree neighbor that logically coincides with e but lies in the coordinate system of the neighbor tree.
[in] | elem1 | The face element. |
[in,out] | elem2 | On return the face elment elem1 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 elem1 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. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Given an element and a face of this element.
If the face lies on the tree boundary, return the face number of the tree face. If not the return value is arbitrary. You can call t8_element_is_root_boundary to query whether the face is at the tree boundary.
[in] | elem | The element. |
[in] | face | The index of a face of elem. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
pure virtual |
Compute the coordinates of a given element vertex inside a reference tree that is embedded into [0,1]^d (d = dimension).
[in] | t | The element to be considered. |
[in] | vertex | The id of the vertex whose coordinates shall be computed. |
[out] | coords | An array of at least as many doubles as the element's dimension whose entries will be filled with the coordinates of vertex. |
Implemented in t8_default_scheme_vertex_c, t8_default_scheme_tri_c, t8_default_scheme_tet_c, t8_default_scheme_quad_c, t8_default_scheme_pyramid_c, t8_default_scheme_prism_c, t8_default_scheme_line_c, and t8_default_scheme_hex_c.
|
protected |
This scheme defines the operations for a particular element class.
The size in bytes of an element of class eclass