17#ifdef DEAL_II_WITH_P4EST
20# include <sc_containers.h>
29# ifndef P4EST_QUADRANT_INIT
30# define P4EST_QUADRANT_INIT(q) \
31 ((void)std::memset((q), -1, sizeof(p4est_quadrant_t)))
34# ifndef P8EST_QUADRANT_INIT
35# define P8EST_QUADRANT_INIT(q) \
36 ((void)std::memset((q), -1, sizeof(p8est_quadrant_t)))
44#ifdef DEAL_II_WITH_P4EST
51 p4est_quadrant_compare;
55 p4est_quadrant_childrenv;
59 p4est_quadrant_overlaps_tree;
64 p4est_quadrant_set_morton;
74 p4est_quadrant_is_equal;
78 p4est_quadrant_is_sibling;
82 p4est_quadrant_is_ancestor;
86 p4est_quadrant_ancestor_id;
92 p4est_comm_find_owner;
104 const double *vertices,
111 const int8_t *ctc) = p4est_connectivity_new_copy;
119 p4est_connectivity_join_faces;
122 p4est_connectivity_t *connectivity) = p4est_connectivity_destroy;
130 std::size_t data_size,
131 p4est_init_t init_fn,
132 void *user_pointer) = p4est_new_ext;
135 int copy_data) = p4est_copy;
140 int refine_recursive,
141 p4est_refine_t refine_fn,
142 p4est_init_t init_fn) = p4est_refine;
145 int coarsen_recursive,
146 p4est_coarsen_t coarsen_fn,
147 p4est_init_t init_fn) = p4est_coarsen;
151 p4est_init_t init_fn) = p4est_balance;
154 int partition_for_coarsening,
155 p4est_weight_t weight_fn) =
160 int save_data) = p4est_save;
163 const char *filename,
165 std::size_t data_size,
173 const char *filename,
180 const char *filename,
181 std::size_t *length) = p4est_connectivity_load;
188 const char *baseName) =
189 p4est_vtk_write_file;
199 std::size_t data_size,
200 p4est_init_t init_fn,
201 void *user_pointer) = p4est_reset_data;
216 const void *src_data,
217 std::size_t data_size) =
218 p4est_transfer_fixed;
226 const void *src_data,
227 std::size_t data_size) = p4est_transfer_fixed_begin;
230 p4est_transfer_fixed_end;
237 const int *dest_sizes,
238 const void *src_data,
239 const int *src_sizes) =
240 p4est_transfer_custom;
248 const int *dest_sizes,
249 const void *src_data,
250 const int *src_sizes) = p4est_transfer_custom_begin;
253 p4est_transfer_custom_end;
260 sc_array_t *points) = p4est_search_partition;
267 double vxyz[3]) = p4est_qcoord_to_vertex;
270 p8est_quadrant_compare;
274 p8est_quadrant_childrenv;
278 p8est_quadrant_overlaps_tree;
283 p8est_quadrant_set_morton;
293 p8est_quadrant_is_equal;
297 p8est_quadrant_is_sibling;
301 p8est_quadrant_is_ancestor;
305 p8est_quadrant_ancestor_id;
311 p8est_comm_find_owner;
326 const double *vertices,
337 const int8_t *ctc) = p8est_connectivity_new_copy;
340 p8est_connectivity_t *connectivity) = p8est_connectivity_destroy;
348 p8est_connectivity_join_faces;
356 std::size_t data_size,
357 p8est_init_t init_fn,
358 void *user_pointer) = p8est_new_ext;
361 int copy_data) = p8est_copy;
366 int refine_recursive,
367 p8est_refine_t refine_fn,
368 p8est_init_t init_fn) = p8est_refine;
371 int coarsen_recursive,
372 p8est_coarsen_t coarsen_fn,
373 p8est_init_t init_fn) = p8est_coarsen;
377 p8est_init_t init_fn) = p8est_balance;
380 int partition_for_coarsening,
381 p8est_weight_t weight_fn) =
386 int save_data) = p8est_save;
389 const char *filename,
391 std::size_t data_size,
399 const char *filename,
406 const char *filename,
407 std::size_t *length) = p8est_connectivity_load;
414 const char *baseName) =
415 p8est_vtk_write_file;
425 std::size_t data_size,
426 p8est_init_t init_fn,
427 void *user_pointer) = p8est_reset_data;
442 const void *src_data,
443 std::size_t data_size) =
444 p8est_transfer_fixed;
452 const void *src_data,
453 std::size_t data_size) = p8est_transfer_fixed_begin;
456 p8est_transfer_fixed_end;
463 const int *dest_sizes,
464 const void *src_data,
465 const int *src_sizes) =
466 p8est_transfer_custom;
474 const int *dest_sizes,
475 const void *src_data,
476 const int *src_sizes) = p8est_transfer_custom_begin;
479 p8est_transfer_custom_end;
486 sc_array_t *points) = p8est_search_partition;
494 double vxyz[3]) = p8est_qcoord_to_vertex;
503 for (
unsigned int c = 0;
504 c < ::GeometryInfo<dim>::max_children_per_cell;
544 Assert(coarse_grid_cell < parallel_forest->connectivity->num_trees,
546 return ((coarse_grid_cell >= parallel_forest->first_local_tree) &&
547 (coarse_grid_cell <= parallel_forest->last_local_tree));
559 connectivity->num_vertices,
560 connectivity->num_trees,
561 connectivity->num_corners,
562 connectivity->vertices,
563 connectivity->tree_to_vertex,
564 connectivity->tree_to_tree,
565 connectivity->tree_to_face,
566 connectivity->tree_to_corner,
567 connectivity->ctt_offset,
568 connectivity->corner_to_tree,
569 connectivity->corner_to_corner);
577 connectivity->num_vertices,
578 connectivity->num_trees,
579 connectivity->num_edges,
580 connectivity->num_corners,
581 connectivity->vertices,
582 connectivity->tree_to_vertex,
583 connectivity->tree_to_tree,
584 connectivity->tree_to_face,
585 connectivity->tree_to_edge,
586 connectivity->ett_offset,
587 connectivity->edge_to_tree,
588 connectivity->edge_to_edge,
589 connectivity->tree_to_corner,
590 connectivity->ctt_offset,
591 connectivity->corner_to_tree,
592 connectivity->corner_to_corner);
613 const int level_1 = (q1 << types<1>::max_n_child_indices_bits) >>
615 const int level_2 = (q2 << types<1>::max_n_child_indices_bits) >>
619 if (level_1 >= level_2)
629 return truncated_id_1 == truncated_id_2;
642 const int level_parent = (q << types<1>::max_n_child_indices_bits) >>
644 const int level_child = level_parent + 1;
647 p4est_children[0] = (q + 1);
669#include "distributed/p4est_wrappers.inst"
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcInternalError()
void init_quadrant_children< 1 >(const typename types< 1 >::quadrant &q, typename types< 1 >::quadrant(&p4est_children)[::GeometryInfo< 1 >::max_children_per_cell])
void init_coarse_quadrant(typename types< dim >::quadrant &quad)
bool quadrant_is_equal< 1 >(const typename types< 1 >::quadrant &q1, const typename types< 1 >::quadrant &q2)
types< 2 >::connectivity * copy_connectivity< 2 >(const typename types< 2 >::connectivity *connectivity)
bool quadrant_is_ancestor< 1 >(const types< 1 >::quadrant &q1, const types< 1 >::quadrant &q2)
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)
void init_coarse_quadrant< 1 >(typename types< 1 >::quadrant &quad)
bool tree_exists_locally(const typename types< dim >::forest *parallel_forest, const typename types< dim >::topidx coarse_grid_cell)
#define P8EST_QUADRANT_INIT(q)
#define P4EST_QUADRANT_INIT(q)