t8  1.2.0
t8code is a C library to manage a forest of adaptive space-trees of general element classes in parallel.
Data Fields
t8_cmesh Struct Reference

This structure holds the connectivity data of the coarse mesh. More...

#include <t8_cmesh_types.h>

Data Fields

int committed
 Flag that specifies whether the cmesh is committed or not. More...
 
int dimension
 The dimension of the cmesh. More...
 
int set_partition
 If nonzero the cmesh is partitioned. More...
 
int face_knowledge
 If partitioned the level of face knowledge that is expected. More...
 
int8_t set_refine_level
 If the cmesh is derived from a second cmesh, a refinement level is specified here. More...
 
t8_scheme_cxx_tset_refine_scheme
 If the cmesh is to be refined, the scheme that describes the refinement pattern. More...
 
t8_scheme_cxx_tset_partition_scheme
 If the cmesh is to be partitioned according to a uniform level, the scheme that describes the refinement pattern. More...
 
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_cmeshset_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. More...
 
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. More...
 
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. More...
 
int8_t first_tree_shared
 If partitioned true if the first tree on this process is also the last tree on the next process. More...
 
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. More...
 
t8_geometry_handler_tgeometry_handler
 Handles all geometries that are used by trees in this cmesh.
 
t8_stash_t stash
 Used as temporary storage for the trees before commit.
 
t8_cprofile_tprofile
 Used to measure runtimes and statistics of the cmesh algorithms.
 

Detailed Description

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 in an array of t8_ctree_fneighbor.

See also
t8_ctree_fneighbor

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.

Field Documentation

◆ committed

int t8_cmesh::committed

Flag that specifies whether the cmesh is committed or not.

t8_cmesh_commit

◆ dimension

int t8_cmesh::dimension

The dimension of the cmesh.

It is set when the first tree is inserted.

◆ face_knowledge

int t8_cmesh::face_knowledge

If partitioned the level of face knowledge that is expected.

t8_mesh_set_partioned; see t8_cmesh_set_partition.

◆ first_tree

t8_gloidx_t t8_cmesh::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

◆ first_tree_shared

int8_t t8_cmesh::first_tree_shared

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

◆ num_local_trees

t8_locidx_t t8_cmesh::num_local_trees

If partitioned the number of trees on this process.

Otherwise the global number of trees.

◆ num_local_trees_per_eclass

t8_locidx_t t8_cmesh::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.

◆ set_partition

int t8_cmesh::set_partition

If nonzero the cmesh is partitioned.

If zero each process has the whole cmesh.

◆ set_partition_scheme

t8_scheme_cxx_t* t8_cmesh::set_partition_scheme

If the cmesh is to be partitioned according to a uniform level, the scheme that describes the refinement pattern.

See t8_cmesh_set_partition.

◆ set_refine_level

int8_t t8_cmesh::set_refine_level

If the cmesh is derived from a second cmesh, a refinement level is specified here.

t8_cmesh_set_derive t8_cmesh_set_refine.

◆ set_refine_scheme

t8_scheme_cxx_t* t8_cmesh::set_refine_scheme

If the cmesh is to be refined, the scheme that describes the refinement pattern.

See t8_cmesh_set_refine.

◆ tree_offsets

t8_shmem_array_t t8_cmesh::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.


The documentation for this struct was generated from the following file: