205 int *face,
int *hang,
233 sc_array_t * exists_arr,
234 sc_array_t * rproc_arr,
235 sc_array_t * rquad_arr);
344 size_t data_size,
void **mirror_data,
void *ghost_data);
398 size_t data_size,
void **mirror_data,
void *ghost_data);
int32_t p4est_topidx_t
Typedef for counting topological entities (trees, tree vertices).
Definition: p4est_base.h:93
int32_t p4est_locidx_t
Typedef for processor-local indexing of quadrants and nodes.
Definition: p4est_base.h:106
The top-level 3D p8est interface.
p8est_connect_type_t
Characterize a type of adjacency.
Definition: p8est_connectivity.h:120
struct p8est_ghost p8est_ghost_t
Quadrants that neighbor the local domain.
void p8est_ghost_exchange_data_end(p8est_ghost_exchange_t *exc)
Complete an asynchronous ghost data exchange.
void p8est_ghost_destroy(p8est_ghost_t *ghost)
Frees all memory used for the ghost layer.
p8est_ghost_exchange_t * p8est_ghost_exchange_data_begin(p8est_t *p8est, p8est_ghost_t *ghost, void *ghost_data)
Begin an asynchronous ghost data exchange by posting messages.
p8est_ghost_exchange_t * p8est_ghost_exchange_custom_begin(p8est_t *p8est, p8est_ghost_t *ghost, size_t data_size, void **mirror_data, void *ghost_data)
Begin an asynchronous ghost data exchange by posting messages.
int p8est_quadrant_exists(p8est_t *p8est, p8est_ghost_t *ghost, p4est_topidx_t treeid, const p8est_quadrant_t *q, sc_array_t *exists_arr, sc_array_t *rproc_arr, sc_array_t *rquad_arr)
Checks if quadrant exists in the local forest or the ghost layer.
unsigned p8est_ghost_checksum(p8est_t *p8est, p8est_ghost_t *ghost)
Compute the parallel checksum of a ghost layer.
int p8est_ghost_is_valid(p8est_t *p8est, p8est_ghost_t *ghost)
Examine if a ghost structure is valid as described above.
void p8est_ghost_exchange_custom_levels(p8est_t *p8est, p8est_ghost_t *ghost, int minlevel, int maxlevel, size_t data_size, void **mirror_data, void *ghost_data)
Transfer data for local quadrants that are ghosts to other processors.
p8est_ghost_exchange_t * p8est_ghost_exchange_custom_levels_begin(p8est_t *p8est, p8est_ghost_t *ghost, int minlevel, int maxlevel, size_t data_size, void **mirror_data, void *ghost_data)
Begin an asynchronous ghost data exchange by posting messages.
p8est_ghost_t * p8est_ghost_new_local(p8est_t *p8est, p8est_connect_type_t ctype)
Generate an empty ghost layer.
void p8est_ghost_exchange_custom_levels_end(p8est_ghost_exchange_t *exc)
Complete an asynchronous ghost data exchange.
p8est_ghost_t * p8est_ghost_new(p8est_t *p8est, p8est_connect_type_t btype)
Builds the ghost layer.
ssize_t p8est_ghost_tree_contains(p8est_ghost_t *ghost, int which_proc, p4est_topidx_t which_tree, const p8est_quadrant_t *q)
Conduct binary search for ancestor on range of the ghost layer.
int p8est_quadrant_find_owner(p8est_t *p8est, p4est_topidx_t treeid, int face, const p8est_quadrant_t *q)
Gets the processor id of a quadrant's owner.
struct p8est_ghost_exchange p8est_ghost_exchange_t
Transient storage for asynchronous ghost exchange.
void p8est_ghost_exchange_custom_end(p8est_ghost_exchange_t *exc)
Complete an asynchronous ghost data exchange.
void p8est_ghost_exchange_custom(p8est_t *p8est, p8est_ghost_t *ghost, size_t data_size, void **mirror_data, void *ghost_data)
Transfer data for local quadrants that are ghosts to other processors.
int p8est_is_balanced(p8est_t *p8est, p8est_connect_type_t btype)
Check a forest to see if it is balanced.
p4est_locidx_t p8est_face_quadrant_exists(p8est_t *p8est, p8est_ghost_t *ghost, p4est_topidx_t treeid, const p8est_quadrant_t *q, int *face, int *hang, int *owner_rank)
Checks if quadrant exists in the local forest or the ghost layer.
size_t p8est_ghost_memory_used(p8est_ghost_t *ghost)
Calculate the memory usage of the ghost layer.
ssize_t p8est_ghost_bsearch(p8est_ghost_t *ghost, int which_proc, p4est_topidx_t which_tree, const p8est_quadrant_t *q)
Conduct binary search for exact match on a range of the ghost layer.
void p8est_ghost_expand(p8est_t *p8est, p8est_ghost_t *ghost)
Expand the size of the ghost layer and mirrors by one additional layer of adjacency.
void p8est_ghost_exchange_data(p8est_t *p8est, p8est_ghost_t *ghost, void *ghost_data)
Transfer data for local quadrants that are ghosts to other processors.
Transient storage for asynchronous ghost exchange.
Definition: p8est_ghost.h:273
int minlevel
Meaningful with is_levels.
Definition: p8est_ghost.h:278
int * qactive
p4est->mpisize many integers
Definition: p8est_ghost.h:282
sc_array_t sbuffers
Array of send buffers.
Definition: p8est_ghost.h:285
size_t data_size
The data size to transfer per quadrant.
Definition: p8est_ghost.h:280
sc_array_t rrequests
Array of receive requests.
Definition: p8est_ghost.h:286
int is_custom
False for p8est_ghost_exchange_data.
Definition: p8est_ghost.h:274
p8est_t * p4est
The forest used for reference.
Definition: p8est_ghost.h:276
sc_array_t rbuffers
Array of receive buffers.
Definition: p8est_ghost.h:287
int maxlevel
Meaningful with is_levels.
Definition: p8est_ghost.h:279
sc_array_t requests
Array of send requests.
Definition: p8est_ghost.h:284
void * ghost_data
Allocated contiguous array for ghost data.
Definition: p8est_ghost.h:281
int * qbuffer
p4est->mpisize many integers
Definition: p8est_ghost.h:283
int is_levels
Are we restricted to levels or not.
Definition: p8est_ghost.h:275
p8est_ghost_t * ghost
The ghost layer used for reference.
Definition: p8est_ghost.h:277
Quadrants that neighbor the local domain.
Definition: p8est_ghost.h:46
sc_array_t mirrors
An array of local quadrants that touch the parallel boundary from the inside, i.e....
Definition: p8est_ghost.h:67
p4est_topidx_t num_trees
number of trees of the ghost
Definition: p8est_ghost.h:48
p4est_locidx_t * mirror_proc_front_offsets
NULL until p8est_ghost_expand is called.
Definition: p8est_ghost.h:80
p4est_locidx_t * tree_offsets
num_trees + 1 ghost indices
Definition: p8est_ghost.h:60
int mpisize
MPI size of the ghost.
Definition: p8est_ghost.h:47
p8est_connect_type_t btype
which neighbors are in the ghost layer
Definition: p8est_ghost.h:49
p4est_locidx_t * mirror_proc_fronts
like mirror_proc_mirrors, but limited to the outermost octants.
Definition: p8est_ghost.h:74
p4est_locidx_t * mirror_tree_offsets
num_trees + 1 mirror indices
Definition: p8est_ghost.h:68
p4est_locidx_t * mirror_proc_mirrors
indices into mirrors grouped by outside processor rank and ascending within each rank
Definition: p8est_ghost.h:69
sc_array_t ghosts
An array of p8est_quadrant_t quadrants which make up the ghost layer around p8est.
Definition: p8est_ghost.h:59
p4est_locidx_t * mirror_proc_offsets
mpisize + 1 indices into mirror_proc_mirrors
Definition: p8est_ghost.h:72
p4est_locidx_t * proc_offsets
mpisize + 1 ghost indices
Definition: p8est_ghost.h:61
The 3D quadrant (i.e., octant) datatype.
Definition: p8est.h:72
The p8est forest datatype.
Definition: p8est.h:146