Struct t8_cmesh
Defined in File t8_cmesh_types.h
Struct Documentation
-
struct t8_cmesh
This structure holds the connectivity data of the coarse mesh. It can either be replicated, then each process stores a copy of the whole mesh, or partitioned. In the latter case, each process only stores a local portion of the mesh plus information about ghost elements.
The coarse mesh is a collection of coarse trees that can be identified along faces. TODO: this description is outdated. rewrite it. The array ctrees stores these coarse trees sorted by their (global) tree_id. If the mesh if partitioned it is partitioned according to an (possible only virtually existing) underlying fine mesh. Therefore the ctrees array can store duplicated trees on different processes, if each of these processes owns elements of the same tree in the fine mesh.
Each tree stores information about its face-neighbours.
If partitioned the ghost trees are stored in a hash table that is backed up by an array. The hash value of a ghost tree is its tree_id modulo the number of ghosts on this process.
Public Members
-
int committed
Flag that specifies whether the cmesh is committed or not. t8_cmesh_commit
-
int dimension
The dimension of the cmesh. It is set when the first tree is inserted.
-
int set_partition
If nonzero the cmesh is partitioned. If zero each process has the whole cmesh.
-
int face_knowledge
If partitioned the level of face knowledge that is expected.
-
const t8_scheme_c *set_partition_scheme
If the cmesh is to be partitioned according to a uniform level, the scheme that describes the refinement pattern.
-
int8_t set_partition_level
Non-negative if the cmesh should be partitioned from an already existing cmesh with an assumed level uniform mesh underneath.
-
struct t8_cmesh *set_from
If this cmesh shall be derived from an existing cmesh by copy or more elaborate modification, we store a pointer to this other cmesh here.
-
int mpirank
Number of this MPI process.
-
int mpisize
Number of MPI processes.
-
t8_refcount_t rc
The reference count of the cmesh.
-
t8_gloidx_t num_trees
The global number of trees
-
t8_locidx_t num_local_trees
If partitioned the number of trees on this process. Otherwise the global number of trees.
-
t8_locidx_t num_ghosts
If partitioned the number of neighbor trees owned by different processes.
-
t8_locidx_t num_local_trees_per_eclass[T8_ECLASS_COUNT]
After commit the number of local trees for each eclass. Stores the same entries as num_trees_per_eclass, if the cmesh is replicated.
-
t8_gloidx_t num_trees_per_eclass[T8_ECLASS_COUNT]
After commit the number of global trees for each eclass.
-
t8_cmesh_trees_t trees
structure that holds all local trees and ghosts
-
t8_gloidx_t first_tree
The global index of the first local tree on this process. Zero if the cmesh is not partitioned. -1 if this processor is empty. See also https://github.com/DLR-AMR/t8code/wiki/Tree-indexing
If partitioned true if the first tree on this process is also the last tree on the next process. Always zero if num_local_trees = 0
-
t8_shmem_array_t tree_offsets
If partitioned for each process the global index of its first local tree or -(first local tree) - 1 if the first tree on that process is shared. Since this is very memory consuming we only fill it when needed.
-
t8_geometry_handler_c *geometry_handler
Handles all geometries that are used by trees in this cmesh.
-
struct t8_cmesh_vertex_connectivity *vertex_connectivity
Structure that manages tree_to_vertex and vertex_to_tree connectivity.
-
t8_stash_t stash
Used as temporary storage for the trees before commit.
-
t8_cprofile_t *profile
Used to measure runtimes and statistics of the cmesh algorithms.
-
int committed