13#ifndef dealii_p4est_wrappers_h
14#define dealii_p4est_wrappers_h
20#ifdef DEAL_II_WITH_P4EST
24# include <p4est_bits.h>
25# include <p4est_communication.h>
26# include <p4est_extended.h>
27# include <p4est_ghost.h>
28# include <p4est_iterate.h>
29# include <p4est_search.h>
30# include <p4est_vtk.h>
31# include <p8est_bits.h>
32# include <p8est_communication.h>
33# include <p8est_extended.h>
34# include <p8est_ghost.h>
35# include <p8est_iterate.h>
36# include <p8est_search.h>
37# include <p8est_vtk.h>
45#ifdef DEAL_II_WITH_P4EST
52 template <
int dim,
int spacedim>
84 static const int n_bits = std::numeric_limits<quadrant>::digits;
184 const double *vertices,
210 std::size_t data_size,
211 p4est_init_t init_fn,
220 int refine_recursive,
221 p4est_refine_t refine_fn,
222 p4est_init_t init_fn);
225 int coarsen_recursive,
226 p4est_coarsen_t coarsen_fn,
227 p4est_init_t init_fn);
231 p4est_init_t init_fn);
234 int partition_for_coarsening,
235 p4est_weight_t weight_fn);
237 static void (&
save)(
const char *filename,
243 std::size_t data_size,
256 std::size_t *length);
262 const char *baseName);
270 std::size_t data_size,
271 p4est_init_t init_fn,
279 template <
int spacedim>
285 static constexpr unsigned int max_level = P4EST_MAXLEVEL;
292 const void *src_data,
293 std::size_t data_size);
301 const void *src_data,
302 std::size_t data_size);
311 const int *dest_sizes,
312 const void *src_data,
313 const int *src_sizes);
321 const int *dest_sizes,
322 const void *src_data,
323 const int *src_sizes);
390 const double *vertices,
418 std::size_t data_size,
419 p8est_init_t init_fn,
428 int refine_recursive,
429 p8est_refine_t refine_fn,
430 p8est_init_t init_fn);
433 int coarsen_recursive,
434 p8est_coarsen_t coarsen_fn,
435 p8est_init_t init_fn);
439 p8est_init_t init_fn);
442 int partition_for_coarsening,
443 p8est_weight_t weight_fn);
445 static void (&
save)(
const char *filename,
451 std::size_t data_size,
464 std::size_t *length);
470 const char *baseName);
477 std::size_t data_size,
478 p8est_init_t init_fn,
486 static constexpr unsigned int max_level = P8EST_MAXLEVEL;
493 const void *src_data,
494 std::size_t data_size);
502 const void *src_data,
503 std::size_t data_size);
512 const int *dest_sizes,
513 const void *src_data,
514 const int *src_sizes);
522 const int *dest_sizes,
523 const void *src_data,
524 const int *src_sizes);
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_CXX20_REQUIRES(condition)
#define DEAL_II_NAMESPACE_CLOSE
void init_coarse_quadrant(typename types< dim >::quadrant &quad)
types< 2 >::connectivity * copy_connectivity< 2 >(const typename types< 2 >::connectivity *connectivity)
types< 3 >::connectivity * copy_connectivity< 3 >(const typename types< 3 >::connectivity *connectivity)
bool quadrant_is_equal(const typename types< dim >::quadrant &q1, const typename types< dim >::quadrant &q2)
void init_quadrant_children(const typename types< dim >::quadrant &p4est_cell, typename types< dim >::quadrant(&p4est_children)[::GeometryInfo< dim >::max_children_per_cell])
bool quadrant_is_ancestor(const typename types< dim >::quadrant &q1, const typename types< dim >::quadrant &q2)
bool tree_exists_locally(const typename types< dim >::forest *parallel_forest, const typename types< dim >::topidx coarse_grid_cell)
types< dim >::connectivity * copy_connectivity(const typename types< dim >::connectivity *connectivity)
static constexpr unsigned int max_children_per_cell
static types< 2 >::connectivity *(& connectivity_load)(const char *filename, std::size_t *length)
static void(& quadrant_set_morton)(types< 2 >::quadrant *quadrant, int level, std::uint64_t id)
static void(& connectivity_destroy)(p4est_connectivity_t *connectivity)
static types< 2 >::connectivity *(& connectivity_new)(types< 2 >::topidx num_vertices, types< 2 >::topidx num_trees, types< 2 >::topidx num_corners, types< 2 >::topidx num_vtt)
static void(& quadrant_coord_to_vertex)(types< 2 >::connectivity *connectivity, types< 2 >::topidx treeid, types< 2 >::quadrant_coord x, types< 2 >::quadrant_coord y, double vxyz[3])
static void(& vtk_write_file)(types< 2 >::forest *p4est, p4est_geometry_t *, const char *baseName)
static int(& connectivity_save)(const char *filename, types< 2 >::connectivity *connectivity)
static void(& transfer_custom)(const types< 2 >::gloidx *dest_gfq, const types< 2 >::gloidx *src_gfq, MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
static void(& search_partition)(types< 2 >::forest *forest, int call_post, types< 2 >::search_partition_callback quadrant_fn, types< 2 >::search_partition_callback point_fn, sc_array_t *points)
static void(& ghost_destroy)(types< 2 >::ghost *ghost)
static int(& quadrant_is_sibling)(const types< 2 >::quadrant *q1, const types< 2 >::quadrant *q2)
static std::size_t(& forest_memory_used)(types< 2 >::forest *p4est)
static void(& refine)(types< 2 >::forest *p4est, int refine_recursive, p4est_refine_t refine_fn, p4est_init_t init_fn)
static constexpr unsigned int max_level
static int(& quadrant_compare)(const void *v1, const void *v2)
static void(& connectivity_join_faces)(types< 2 >::connectivity *conn, types< 2 >::topidx tree_left, types< 2 >::topidx tree_right, int face_left, int face_right, int orientation)
static void(& quadrant_childrenv)(const types< 2 >::quadrant *q, types< 2 >::quadrant c[])
static std::size_t(& connectivity_memory_used)(types< 2 >::connectivity *p4est)
static void quadrant_init(types< 2 >::quadrant &q)
static int(& quadrant_ancestor_id)(const types< 2 >::quadrant *q, int level)
static void(& save)(const char *filename, types< 2 >::forest *p4est, int save_data)
static types< 2 >::connectivity *(& connectivity_new_copy)(types< 2 >::topidx num_vertices, types< 2 >::topidx num_trees, types< 2 >::topidx num_corners, const double *vertices, const types< 2 >::topidx *ttv, const types< 2 >::topidx *ttt, const int8_t *ttf, const types< 2 >::topidx *ttc, const types< 2 >::topidx *coff, const types< 2 >::topidx *ctt, const int8_t *ctc)
static int(& comm_find_owner)(types< 2 >::forest *p4est, const types< 2 >::locidx which_tree, const types< 2 >::quadrant *q, const int guess)
static unsigned int(& checksum)(types< 2 >::forest *p4est)
static types< 2 >::forest *(& new_forest)(MPI_Comm mpicomm, types< 2 >::connectivity *connectivity, types< 2 >::locidx min_quadrants, int min_level, int fill_uniform, std::size_t data_size, p4est_init_t init_fn, void *user_pointer)
static void(& destroy)(types< 2 >::forest *p4est)
static types< 2 >::transfer_context *(& transfer_custom_begin)(const types< 2 >::gloidx *dest_gfq, const types< 2 >::gloidx *src_gfq, MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
static void(& reset_data)(types< 2 >::forest *p4est, std::size_t data_size, p4est_init_t init_fn, void *user_pointer)
static void(& coarsen)(types< 2 >::forest *p4est, int coarsen_recursive, p4est_coarsen_t coarsen_fn, p4est_init_t init_fn)
static void iterate(::internal::p4est::types< 2 >::forest *parallel_forest, ::internal::p4est::types< 2 >::ghost *parallel_ghost, void *user_data)
static int(& quadrant_is_ancestor)(const types< 2 >::quadrant *q1, const types< 2 >::quadrant *q2)
static void(& transfer_fixed_end)(types< 2 >::transfer_context *tc)
static int(& quadrant_overlaps_tree)(types< 2 >::tree *tree, const types< 2 >::quadrant *q)
static types< 2 >::gloidx(& partition)(types< 2 >::forest *p4est, int partition_for_coarsening, p4est_weight_t weight_fn)
static int(& quadrant_is_equal)(const types< 2 >::quadrant *q1, const types< 2 >::quadrant *q2)
static types< 2 >::ghost *(& ghost_new)(types< 2 >::forest *p4est, types< 2 >::balance_type btype)
static void(& balance)(types< 2 >::forest *p4est, types< 2 >::balance_type btype, p4est_init_t init_fn)
static void(& transfer_fixed)(const types< 2 >::gloidx *dest_gfq, const types< 2 >::gloidx *src_gfq, MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, std::size_t data_size)
static types< 2 >::forest *(& copy_forest)(types< 2 >::forest *input, int copy_data)
static types< 2 >::forest *(& load_ext)(const char *filename, MPI_Comm mpicomm, std::size_t data_size, int load_data, int autopartition, int broadcasthead, void *user_pointer, types< 2 >::connectivity **p4est)
static void(& transfer_custom_end)(types< 2 >::transfer_context *tc)
static types< 2 >::transfer_context *(& transfer_fixed_begin)(const types< 2 >::gloidx *dest_gfq, const types< 2 >::gloidx *src_gfq, MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, std::size_t data_size)
static int(& connectivity_is_valid)(types< 2 >::connectivity *connectivity)
static int(& quadrant_ancestor_id)(const types< 3 >::quadrant *q, int level)
static void(& transfer_fixed_end)(types< 3 >::transfer_context *tc)
static int(& quadrant_is_sibling)(const types< 3 >::quadrant *q1, const types< 3 >::quadrant *q2)
static void(& reset_data)(types< 3 >::forest *p4est, std::size_t data_size, p8est_init_t init_fn, void *user_pointer)
static void(& search_partition)(types< 3 >::forest *forest, int call_post, types< 3 >::search_partition_callback quadrant_fn, types< 3 >::search_partition_callback point_fn, sc_array_t *points)
static types< 3 >::transfer_context *(& transfer_custom_begin)(const types< 3 >::gloidx *dest_gfq, const types< 3 >::gloidx *src_gfq, MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
static int(& connectivity_save)(const char *filename, types< 3 >::connectivity *connectivity)
static types< 3 >::forest *(& copy_forest)(types< 3 >::forest *input, int copy_data)
static void(& transfer_fixed)(const types< 3 >::gloidx *dest_gfq, const types< 3 >::gloidx *src_gfq, MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, std::size_t data_size)
static void(& quadrant_set_morton)(types< 3 >::quadrant *quadrant, int level, std::uint64_t id)
static int(& quadrant_is_equal)(const types< 3 >::quadrant *q1, const types< 3 >::quadrant *q2)
static void(& coarsen)(types< 3 >::forest *p8est, int coarsen_recursive, p8est_coarsen_t coarsen_fn, p8est_init_t init_fn)
static types< 3 >::connectivity *(& connectivity_new_copy)(types< 3 >::topidx num_vertices, types< 3 >::topidx num_trees, types< 3 >::topidx num_edges, types< 3 >::topidx num_corners, const double *vertices, const types< 3 >::topidx *ttv, const types< 3 >::topidx *ttt, const int8_t *ttf, const types< 3 >::topidx *tte, const types< 3 >::topidx *eoff, const types< 3 >::topidx *ett, const int8_t *ete, const types< 3 >::topidx *ttc, const types< 3 >::topidx *coff, const types< 3 >::topidx *ctt, const int8_t *ctc)
static types< 3 >::forest *(& new_forest)(MPI_Comm mpicomm, types< 3 >::connectivity *connectivity, types< 3 >::locidx min_quadrants, int min_level, int fill_uniform, std::size_t data_size, p8est_init_t init_fn, void *user_pointer)
static int(& comm_find_owner)(types< 3 >::forest *p4est, const types< 3 >::locidx which_tree, const types< 3 >::quadrant *q, const int guess)
static void(& refine)(types< 3 >::forest *p8est, int refine_recursive, p8est_refine_t refine_fn, p8est_init_t init_fn)
static std::size_t(& connectivity_memory_used)(types< 3 >::connectivity *p4est)
static int(& quadrant_is_ancestor)(const types< 3 >::quadrant *q1, const types< 3 >::quadrant *q2)
static void(& quadrant_coord_to_vertex)(types< 3 >::connectivity *connectivity, types< 3 >::topidx treeid, types< 3 >::quadrant_coord x, types< 3 >::quadrant_coord y, types< 3 >::quadrant_coord z, double vxyz[3])
static std::size_t(& forest_memory_used)(types< 3 >::forest *p4est)
static int(& quadrant_overlaps_tree)(types< 3 >::tree *tree, const types< 3 >::quadrant *q)
static constexpr unsigned int max_level
static void(& connectivity_join_faces)(types< 3 >::connectivity *conn, types< 3 >::topidx tree_left, types< 3 >::topidx tree_right, int face_left, int face_right, int orientation)
static int(& quadrant_compare)(const void *v1, const void *v2)
static void(& destroy)(types< 3 >::forest *p8est)
static types< 3 >::forest *(& load_ext)(const char *filename, MPI_Comm mpicomm, std::size_t data_size, int load_data, int autopartition, int broadcasthead, void *user_pointer, types< 3 >::connectivity **p4est)
static void(& transfer_custom_end)(types< 3 >::transfer_context *tc)
static void(& ghost_destroy)(types< 3 >::ghost *ghost)
static types< 3 >::connectivity *(& connectivity_load)(const char *filename, std::size_t *length)
static types< 3 >::gloidx(& partition)(types< 3 >::forest *p8est, int partition_for_coarsening, p8est_weight_t weight_fn)
static types< 3 >::ghost *(& ghost_new)(types< 3 >::forest *p4est, types< 3 >::balance_type btype)
static void(& vtk_write_file)(types< 3 >::forest *p8est, p8est_geometry_t *, const char *baseName)
static void(& transfer_custom)(const types< 3 >::gloidx *dest_gfq, const types< 3 >::gloidx *src_gfq, MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
static unsigned int(& checksum)(types< 3 >::forest *p8est)
static void(& balance)(types< 3 >::forest *p8est, types< 3 >::balance_type btype, p8est_init_t init_fn)
static void quadrant_init(types< 3 >::quadrant &q)
static types< 3 >::transfer_context *(& transfer_fixed_begin)(const types< 3 >::gloidx *dest_gfq, const types< 3 >::gloidx *src_gfq, MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, std::size_t data_size)
static void(& save)(const char *filename, types< 3 >::forest *p4est, int save_data)
static void(& connectivity_destroy)(p8est_connectivity_t *connectivity)
static void(& quadrant_childrenv)(const types< 3 >::quadrant *q, types< 3 >::quadrant c[])
static types< 3 >::connectivity *(& connectivity_new)(types< 3 >::topidx num_vertices, types< 3 >::topidx num_trees, types< 3 >::topidx num_edges, types< 3 >::topidx num_ett, types< 3 >::topidx num_corners, types< 3 >::topidx num_ctt)
static int(& connectivity_is_valid)(types< 3 >::connectivity *connectivity)
p4est_iter_corner_t corner_iter
p4est_iter_corner_info_t corner_info
p4est_iter_face_info_t face_info
p4est_iter_face_side_t face_side
p4est_iter_corner_side_t corner_side
p4est_iter_face_t face_iter
p8est_iter_corner_t corner_iter
p8est_iter_corner_info_t corner_info
p8est_iter_face_info_t face_info
p8est_iter_edge_side_t edge_side
p8est_iter_edge_t edge_iter
p8est_iter_edge_info_t edge_info
p8est_iter_face_side_t face_side
p8est_iter_face_t face_iter
p8est_iter_corner_side_t corner_side
static const int max_n_child_indices_bits
p4est_search_partition_t search_partition_callback
p4est_connectivity_t connectivity
p4est_connect_type_t balance_type
p4est_quadrant_t quadrant
p4est_qcoord_t quadrant_coord
p4est_transfer_context_t transfer_context
p8est_quadrant_t quadrant
p8est_connectivity_t connectivity
p4est_qcoord_t quadrant_coord
p8est_transfer_context_t transfer_context
p8est_search_partition_t search_partition_callback
p8est_connect_type_t balance_type