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);
The top-level 2D p4est interface.
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
p4est_connect_type_t
Characterize a type of adjacency.
Definition: p4est_connectivity.h:113
ssize_t p4est_ghost_bsearch(p4est_ghost_t *ghost, int which_proc, p4est_topidx_t which_tree, const p4est_quadrant_t *q)
Conduct binary search for exact match on a range of the ghost layer.
void p4est_ghost_exchange_custom(p4est_t *p4est, p4est_ghost_t *ghost, size_t data_size, void **mirror_data, void *ghost_data)
Transfer data for local quadrants that are ghosts to other processors.
p4est_ghost_t * p4est_ghost_new(p4est_t *p4est, p4est_connect_type_t btype)
Builds the ghost layer.
int p4est_ghost_is_valid(p4est_t *p4est, p4est_ghost_t *ghost)
Examine if a ghost structure is valid.
p4est_ghost_exchange_t * p4est_ghost_exchange_custom_levels_begin(p4est_t *p4est, p4est_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.
void p4est_ghost_destroy(p4est_ghost_t *ghost)
Frees all memory used for the ghost layer.
int p4est_quadrant_find_owner(p4est_t *p4est, p4est_topidx_t treeid, int face, const p4est_quadrant_t *q)
Gets the processor id of a quadrant's owner.
void p4est_ghost_exchange_data(p4est_t *p4est, p4est_ghost_t *ghost, void *ghost_data)
Transfer data for local quadrants that are ghosts to other processors.
void p4est_ghost_exchange_custom_end(p4est_ghost_exchange_t *exc)
Complete an asynchronous ghost data exchange.
struct p4est_ghost_exchange p4est_ghost_exchange_t
Transient storage for asynchronous ghost exchange.
int p4est_quadrant_exists(p4est_t *p4est, p4est_ghost_t *ghost, p4est_topidx_t treeid, const p4est_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.
p4est_locidx_t p4est_face_quadrant_exists(p4est_t *p4est, p4est_ghost_t *ghost, p4est_topidx_t treeid, const p4est_quadrant_t *q, int *face, int *hang, int *owner_rank)
Checks if quadrant exists in the local forest or the ghost layer.
p4est_ghost_exchange_t * p4est_ghost_exchange_custom_begin(p4est_t *p4est, p4est_ghost_t *ghost, size_t data_size, void **mirror_data, void *ghost_data)
Begin an asynchronous ghost data exchange by posting messages.
ssize_t p4est_ghost_contains(p4est_ghost_t *ghost, int which_proc, p4est_topidx_t which_tree, const p4est_quadrant_t *q)
Conduct binary search for ancestor on range of the ghost layer.
p4est_ghost_t * p4est_ghost_new_local(p4est_t *p4est, p4est_connect_type_t ctype)
Generate an empty ghost layer.
void p4est_ghost_exchange_custom_levels_end(p4est_ghost_exchange_t *exc)
Complete an asynchronous ghost data exchange.
struct p4est_ghost p4est_ghost_t
Quadrants that neighbor the local domain.
unsigned p4est_ghost_checksum(p4est_t *p4est, p4est_ghost_t *ghost)
Compute the parallel checksum of a ghost layer.
void p4est_ghost_expand(p4est_t *p4est, p4est_ghost_t *ghost)
Expand the size of the ghost layer and mirrors by one additional layer of adjacency.
void p4est_ghost_exchange_data_end(p4est_ghost_exchange_t *exc)
Complete an asynchronous ghost data exchange.
p4est_ghost_exchange_t * p4est_ghost_exchange_data_begin(p4est_t *p4est, p4est_ghost_t *ghost, void *ghost_data)
Begin an asynchronous ghost data exchange by posting messages.
void p4est_ghost_exchange_custom_levels(p4est_t *p4est, p4est_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.
int p4est_is_balanced(p4est_t *p4est, p4est_connect_type_t btype)
Check a forest to see if it is balanced.
size_t p4est_ghost_memory_used(p4est_ghost_t *ghost)
Calculate the memory usage of the ghost layer.
Transient storage for asynchronous ghost exchange.
Definition: p4est_ghost.h:273
int * qbuffer
p4est->mpisize many integers
Definition: p4est_ghost.h:283
int * qactive
p4est->mpisize many integers
Definition: p4est_ghost.h:282
int is_levels
Are we restricted to levels or not.
Definition: p4est_ghost.h:275
int maxlevel
Meaningful with is_levels.
Definition: p4est_ghost.h:279
int is_custom
False for p4est_ghost_exchange_data.
Definition: p4est_ghost.h:274
sc_array_t rrequests
Array of receive requests.
Definition: p4est_ghost.h:286
sc_array_t requests
Array of send requests.
Definition: p4est_ghost.h:284
p4est_t * p4est
The forest used for reference.
Definition: p4est_ghost.h:276
void * ghost_data
Allocated contiguous array for ghost data.
Definition: p4est_ghost.h:281
size_t data_size
The data size to transfer per quadrant.
Definition: p4est_ghost.h:280
sc_array_t sbuffers
Array of send buffers.
Definition: p4est_ghost.h:285
sc_array_t rbuffers
Array of receive buffers.
Definition: p4est_ghost.h:287
p4est_ghost_t * ghost
The ghost layer used for reference.
Definition: p4est_ghost.h:277
int minlevel
Meaningful with is_levels.
Definition: p4est_ghost.h:278
Quadrants that neighbor the local domain.
Definition: p4est_ghost.h:46
sc_array_t ghosts
An array of p4est_quadrant_t quadrants which make up the ghost layer around p4est.
Definition: p4est_ghost.h:59
p4est_locidx_t * mirror_tree_offsets
num_trees + 1 mirror indices
Definition: p4est_ghost.h:68
p4est_locidx_t * mirror_proc_front_offsets
NULL until p4est_ghost_expand is called.
Definition: p4est_ghost.h:80
p4est_topidx_t num_trees
number of trees of the ghost
Definition: p4est_ghost.h:48
p4est_locidx_t * mirror_proc_offsets
mpisize + 1 indices into mirror_proc_mirrors
Definition: p4est_ghost.h:72
sc_array_t mirrors
An array of local quadrants that touch the parallel boundary from the inside, i.e....
Definition: p4est_ghost.h:67
p4est_locidx_t * proc_offsets
mpisize + 1 ghost indices
Definition: p4est_ghost.h:61
p4est_locidx_t * mirror_proc_fronts
like mirror_proc_mirrors, but limited to the outermost octants.
Definition: p4est_ghost.h:74
p4est_locidx_t * tree_offsets
num_trees + 1 ghost indices
Definition: p4est_ghost.h:60
p4est_locidx_t * mirror_proc_mirrors
indices into mirrors grouped by outside processor rank and ascending within each rank
Definition: p4est_ghost.h:69
int mpisize
MPI size of the ghost.
Definition: p4est_ghost.h:47
p4est_connect_type_t btype
which neighbors are in the ghost layer
Definition: p4est_ghost.h:49
The 2D quadrant datatype.
Definition: p4est.h:76
The p4est forest datatype.
Definition: p4est.h:150