41 #include <sc_refcount.h>
47 typedef enum p8est_wrap_flags
50 P8EST_WRAP_REFINE = 0x01,
51 P8EST_WRAP_COARSEN = 0x02
133 uint8_t *flags, *temp_flags;
219 int initial_level,
int hollow,
263 p8est_wrap_t *p8est_wrap_new_rotwrap (sc_MPI_Comm mpicomm,
265 p8est_wrap_t *p8est_wrap_new_brick (sc_MPI_Comm mpicomm,
266 int bx,
int by,
int bz,
267 int px,
int py,
int pz,
317 int partition_for_coarsening);
399 unchanged_old_first);
425 double upperright[3];
437 #define P8EST_LEAF_IS_FIRST_IN_TREE(wleaf) ((wleaf)->which_quad == 0)
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
int64_t p4est_gloidx_t
Typedef for globally unique indexing of quadrants.
Definition: p4est_base.h:118
p8est_connect_type_t
Characterize a type of adjacency.
Definition: p8est_connectivity.h:120
Interface routines with extended capabilities.
void(* p8est_replace_t)(p8est_t *p8est, p4est_topidx_t which_tree, int num_outgoing, p8est_quadrant_t *outgoing[], int num_incoming, p8est_quadrant_t *incoming[])
Callback function prototype to replace one set of quadrants with another.
Definition: p8est_extended.h:116
p8est_mesh_t * p8est_wrap_get_mesh(p8est_wrap_t *pp)
Return the appropriate mesh structure.
void p8est_wrap_complete(p8est_wrap_t *pp)
Free memory for the intermediate mesh.
p8est_wrap_t * p8est_wrap_new_world(int initial_level)
Passes sc_MPI_COMM_WORLD to p8est_wrap_new_unitcube.
void p8est_wrap_set_hollow(p8est_wrap_t *pp, int hollow)
Change hollow status of the wrap.
void p8est_wrap_set_partitioning(p8est_wrap_t *pp, int partition_for_coarsening)
Set a parameter that ensures future partitions allow one level of coarsening.
int p8est_wrap_adapt(p8est_wrap_t *pp)
Call p8est_refine, coarsen, and balance to update pp->p8est.
p8est_wrap_t * p8est_wrap_new_conn(sc_MPI_Comm mpicomm, p8est_connectivity_t *conn, int initial_level)
Create a p8est wrapper from a given connectivity structure.
struct p8est_wrap p8est_wrap_t
Wrapping a p8est object for an alternative API.
void p8est_wrap_mark_coarsen(p8est_wrap_t *pp, p4est_topidx_t which_tree, p4est_locidx_t which_quad)
Mark a local element for coarsening.
void p8est_wrap_mark_refine(p8est_wrap_t *pp, p4est_topidx_t which_tree, p4est_locidx_t which_quad)
Mark a local element for refinement.
p8est_wrap_t * p8est_wrap_new_p8est_params(p8est_t *p8est, p8est_wrap_params_t *params)
Create a wrapper for a given p8est structure.
p8est_ghost_t * p8est_wrap_get_ghost(p8est_wrap_t *pp)
Return the appropriate ghost layer.
p8est_wrap_t * p8est_wrap_new_ext(sc_MPI_Comm mpicomm, p8est_connectivity_t *conn, int initial_level, int hollow, p8est_connect_type_t btype, p8est_replace_t replace_fn, void *user_pointer)
Create a p8est wrapper from a given connectivity structure.
int p8est_wrap_partition(p8est_wrap_t *pp, int weight_exponent, p4est_locidx_t *unchanged_first, p4est_locidx_t *unchanged_length, p4est_locidx_t *unchanged_old_first)
Call p8est_partition for equal leaf distribution.
p8est_wrap_t * p8est_wrap_new_unitcube(sc_MPI_Comm mpicomm, int initial_level)
Create a p8est_wrap and internal helper data structures.
p8est_wrap_t * p8est_wrap_new_p8est(p8est_t *p8est, int hollow, p8est_connect_type_t btype, p8est_replace_t replace_fn, void *user_pointer)
Create a wrapper for a given p8est structure.
void p8est_wrap_params_init(p8est_wrap_params_t *params)
Initialize a default p8est_wrap_params_t structure.
void p8est_wrap_set_coarsen_delay(p8est_wrap_t *pp, int coarsen_delay, int coarsen_affect)
Set a parameter that delays coarsening after adaptation.
p8est_wrap_t * p8est_wrap_new_copy(p8est_wrap_t *source, size_t data_size, p8est_replace_t replace_fn, void *user_pointer)
Create a p8est wrapper from an existing one.
p8est_wrap_t * p8est_wrap_new_params(sc_MPI_Comm mpicomm, p8est_connectivity_t *conn, int initial_level, p8est_wrap_params_t *params)
Create a p8est wrapper from a given connectivity structure.
This structure holds the 3D inter-tree connectivity information.
Definition: p8est_connectivity.h:216
Quadrants that neighbor the local domain.
Definition: p8est_ghost.h:46
This structure contains the different parameters of mesh creation.
Definition: p8est_mesh.h:55
This structure contains complete mesh information on a 2:1 balanced forest.
Definition: p8est_mesh.h:170
The 3D quadrant (i.e., octant) datatype.
Definition: p8est.h:72
The p8est tree datatype.
Definition: p8est.h:125
Definition: p8est_wrap.h:412
p8est_quadrant_t * quad
Current quadrant.
Definition: p8est_wrap.h:421
p8est_wrap_t * pp
Must contain a valid ghost.
Definition: p8est_wrap.h:413
p4est_locidx_t nm
Internal: mirror counter.
Definition: p8est_wrap.h:431
p4est_locidx_t local_quad
Quadrant number relative to proc.
Definition: p8est_wrap.h:418
p4est_locidx_t next_mirror_quadrant
Internal: next.
Definition: p8est_wrap.h:432
p4est_topidx_t which_tree
Current tree number.
Definition: p8est_wrap.h:416
sc_array_t * tquadrants
Current tree's quadrants.
Definition: p8est_wrap.h:420
p4est_locidx_t which_quad
Quadrant number relative to tree.
Definition: p8est_wrap.h:417
p8est_tree_t * tree
Current tree.
Definition: p8est_wrap.h:419
sc_array_t * mirrors
If not NULL, from pp's ghost.
Definition: p8est_wrap.h:430
int is_mirror
Quadrant at parallel boundary?
Definition: p8est_wrap.h:429
This structure contains the different parameters of wrap creation.
Definition: p8est_wrap.h:59
int partition_for_coarsening
If true, the partition is modified to allow one level of coarsening when calling p8est_wrap_partition...
Definition: p8est_wrap.h:79
int coarsen_affect
Boolean: If true, we delay coarsening not only after refinement, but also between subsequent coarseni...
Definition: p8est_wrap.h:75
int store_adapted
Boolean: If true, the indices of most recently adapted quadrants are stored in the newly_refined and ...
Definition: p8est_wrap.h:83
p8est_mesh_params_t mesh_params
Parameters for mesh creation.
Definition: p8est_wrap.h:62
int hollow
Do not allocate flags, ghost, and mesh members.
Definition: p8est_wrap.h:60
p8est_replace_t replace_fn
This member may be removed soon.
Definition: p8est_wrap.h:65
void * user_pointer
Set the user pointer in the p8est_wrap.
Definition: p8est_wrap.h:88
int coarsen_delay
Non-negative integer telling how many adaptations to wait before any given quadrant may be coarsened ...
Definition: p8est_wrap.h:71
Wrapping a p8est object for an alternative API.
Definition: p8est_wrap.h:97
p8est_t * p4est
p4est->user_pointer is used internally
Definition: p8est_wrap.h:115
sc_array_t * newly_coarsened
Indices of quadrants coarsened during most recent p8est_wrap_adapt.
Definition: p8est_wrap.h:128
sc_refcount_t conn_rc
This reference counter is a workaround for internal use only.
Definition: p8est_wrap.h:106
sc_array_t * newly_refined
Indices of quadrants refined during most recent p8est_wrap_adapt.
Definition: p8est_wrap.h:126
The p8est forest datatype.
Definition: p8est.h:146